#Changes for 0.1.2 - 20240110

## update
* Add Grpc server function for OpenTelemetry's OTLP.
* Link trace, metric, and log data with WhaTap.

--------------------------------------------------------------------------------

# Changes for 0.1.3 - 20240124

## Update

## bug

### Fixed an error where only the hash (number) value, not the name, was displayed after setting onode_name.
    * The original text and hash data type were incorrect, so the original text was not displayed.

### Fixed an error where the whatap-otel.service file was not recognized in Ubuntu 14 version.
    * Add /etc/systemd/system/whatap-otel.service file. (link /usr/lib/systemd/system/whatap-otel.service)    

--------------------------------------------------------------------------------

# Changes for 0.2.0 - 20240619

## Update

### Supports linux aarch64.  

### Add security.conf. 

* Use security.conf file instead of existing paramkey.txt. 
* Use the value of the paramkey key in security.conf. 
* The default value is changed to specify “WHATAP” instead of a random value. (If “WHATAP” is specified, decryption is possible without key input.)
   
### Change the normalization option settings for SQL statements. 

* Always activate the function to separate and normalize parameters in SQL statements. 
	* Always set the trace_sql_normalize_enabled option to true. 
* If you have already disabled the normalization option (normalization stop setting), activate the setting to normalize and display parameters separately. 
	* Enable the profile_sql_param_enabled option.
	* Normalized parameters are separately encrypted and collected. 
	* You can check the data by decrypting it with the paramkey of security.conf. 	

### Add error information collection in span events
	dded error content extraction from events. In general, error content is more often entered as an event rather than an attribute.
	* Added key designation option to find errors in event
		otel_events_exception_keys=exception.type
		otel_events_error_message_keys=exception.message
		otel_events_error_stack_keys=exception.stacktrace
		otel_events_error_esc_keys=exception.escaped
		
--------------------------------------------------------------------------------
# Changes for 0.2.1 - 20241106


## bug

### Fixed the Queue data processing function to not stop. 

We have corrected an error in which queue processing stops when a panic occurs during statistical data collection, preventing further data processing. 
In this case, data cannot be processed and data accumulates in the queue to the limit, increasing memory and making it impossible to check the data on the screen. 

### Log cleanup 

Fixed an issue where unnecessary logs were output and the log file size increased.
		
--------------------------------------------------------------------------------

# Changes for 0.2.2 - 20241211

## Update 

### Complemented to handle the case where the SERVER type of Span comes first, unlike before. 

### Modified to collect Http call information by host and port. 

### Modified service URL information to be displayed as uri.
		
--------------------------------------------------------------------------------
# Changes for 0.2.3 - 20250226

## Bug

### Fixed an error where the transaction ID was displayed as 0.

## Update

### Added an option to specify the transaction name as the name value of Span.

The transaction name is taken from an attribute. If it is not found in the attribute, it is displayed as blank.

### Add options related to multi-transaction connection. 
Multi-transaction recognizes external calls when Span kind is client, and links the corresponding information to the transaction. 
Add an option to specify when passing the SpanID of the transaction (when Span kind is server) as ParentSpanID. 

### Deploy whatap-otel execution container image to Docker Hub. 
Deploy a container image that can be used in Docker or Kubernetes.

### Add an option to output logs to systemout (Stdout) for Docker or Kubernetes. 
Add to save both systemout and filelog. 
Internal log files are saved for the last 7 days. 

### Fix the phenomenon of logs continuously being output when whatap.conf does not exist. 
When registering settings as environment variables (env) in Docker or Kubernetes, it runs without whatap.conf. 
In this case, fix it so that logs that cannot find the file are not continuously output.


--------------------------------------------------------------------------------
# Changes for 0.2.4 - 20250430

## Bugs

### Fixes an error in the setting that ignores HTTP Method. 
Fixes an error where HTTP Method OPTIONS is not ignored and collected as a transaction. 

## Updates

### Adds HTTP Status related features

Adds a setting to mark status codes higher than 400 as errors. 
* transaction_status_error_enable
Default false

#### Collect HTTP Status Code statistics.

Collects the number of Status Codes for each URL. (10-second interval)
* tx_status_meter_enabled

Default true

Collects the number of Status Codes for each URL. (5-minute interval)
* stat_txstatus_enabled
Default true

#### Forcefully set when there is no HTTP call span information for distributed tracing.

Forcibly set when there is no HTTP call span information for distributed tracing.
The HTTP call address is set by appending otel_virtual_httpc_name to its transaction name (URL).

* otel_virtual_httpc_enabled
Default: false

Specifies the name that is forcibly set when there is no HTTP call span information.
* otel_virtual_httpc_name
Default: "external http call”

### Collects gateway related information. 

Sets whether to collect gateway information. 
* otel_gateway_enabled 
Default: false 

Specifies the attribute name (key) with the gateway elapsed time. 
* otel_attr_tx_gw_time_keys 
Default: duration.kong 

Sets the API call elapsed time with the value of the specified attribute. 
Specifies the attribute name (key) with the API call elapsed time. 
* otel_attr_tx_api_time_keys 
Default: duration.proxy

Collect elapsed time of each transaction, gateway, and API call for the entire URL. (10 second interval) 
Collect elapsed time of each transaction, gateway, and API call by URL, status. (5 minute interval) 

Set the response time as the key value of a specific attribute. 
The transaction calculates the response time with the start time and end time. 
Enables the function to change to the key value of another specified attribute. 
* otel_replace_tx_resp_time_enabled 
Default: false 
* otel_attr_replace_tx_resp_time_keys 
Default: "duration.kong" 
Specifies the key name of the attribute to be set as the response time.


------------------------------------------------------------------------
# Changes for 0.2.5 - 20250709


## Bugs

### HTTP Status Counter Fix.

Fixes an error where the entire counter was not properly collected for 500-level errors.

## Update

### Modified the query_string_enabled option.

Changed the query string collection for all URLs when query_string_urls and query_string_keys are not set.

### If a Span has no Parent, it is recognized as a Watap transaction.

Spans without a Parent are recognized and processed as transactions regardless of their kind.

Previously, only SPAN_KIND_SERVER was recognized as Watap transaction information.

### Metrics Collection Changes
Existing metrics data was collected as logs, but now they are compatible with Prometheus data.

You can check this using a separate metrics UI.


------------------------------------------------------------------------

# Changes for 0.2.6 - 20250901

## Update

### Fixed an issue where tree structure connections would be broken when intermediate spans were missing during span data processing.

Span data is collected as a tree data structure with a parent-child structure. Missing intermediate span data prevents the entire data from being reorganized.

Changed to handle object span data that cannot find the parent.

### Added error, http call attribute key value.

------------------------------------------------------------------------

# Changes for 0.2.7 - 20250902

## Update

### Added a setting to process span data sequentially.

When processing scope spans in trace data, if Span.Kind is KIND_SERVER, they are processed as a Watap transaction.

Previously, multiple KIND_SERVER spans were collected in a single request and processed at the end.

Setting the following option allows spans to be processed sequentially.

* otel_tx_process_server_span_in_order_enabled
* default: false

------------------------------------------------------------------------