Performance Metrics Log
Important
Access to the performance metrics is available from VT-NET version 1.13.1 to 1.15.0
The performance metrics log provides information related to time consumption, resource usage, events and business additional info. This information allows you to troubleshoot issues within the platform that might be temporary, such as a connection error or a long-term issue related to performance.
The team members focused on troubleshooting can use the performance metrics log to resolve performance incidents. For example, if an end user is receiving a timeout in the app or transactions are queueing and not being processed correctly. With this log, they can access more detailed information about a transaction's processing times and detect if there is an issue with a particular process or a general anomaly within the platform.
As with the operation log, go to /veritran/vt-net/log/ to access the logs folder. You can identify the performance log with the PERFLOG name, plus the name of the environment, node and the .log extension, i.e PERFLOG_VRTP_NDA1.log
The metrics log has two detail levels: Level 6 (or business level), and level 8 (or detail level).
Change Log Levels
Metrics can be adjusted or all processes or for a particular process on the configuration file, named perflog.cfg and stored on the vt-net logs folder. In the example below, the performance log level is set to 8 for processes M1DH01 and STP1DH01:
[/] level=6 [PROCESSES] M1DH01=8 STP1DH01=8
Refer to the instructions below to learn how to change the log level.
Go to the configuration file and edit the level you want to apply to all processes on the root ([/]). If you want to update individual processes, write the processes names and the level you want to apply to them as shown above.
Restart the processes to apply changes.
Change Sampling Value
Metrics are captured and printed in the log after a configured number of transactions or operations are executed by the process. That configured number is known as the sampling value. For example, if the sampling value is set to 100, metrics will be captured after every 100 transactions or operations are executed.
This sampling value is global to every process within a VT-NET node, and by default is set to 100.
Refer to the instructions below to learn how to want to change the sampling value to print metrics more often.
Run the alter node command. For example, run the following command to change the sampling value to 20:
alter node .*, param='METRICS_SAMPLING=20'
Restart the node with the following command to apply the new sampling value:
/veritran/vt-net/bin/kernel -f /veritran/vt-net/networkDirectory/<<ENV>>_<<NODE>>.ini -d
Metric Fields and Values
In the performance metrics log, metrics are identified or grouped by the name attribute. This means that each group of metrics will have a specific type of information about the transaction or the operation involved. Each metric name or group has metric fields that show different information about the transaction or operation.
These metric names vary depending on the performance log level. The metrics below are the available global metrics for performance log levels 6 and 8.
ProcessMetrics: Global transaction or operation metrics for end-to-end analysis. Time unit is milliseconds.
"ts": "2024-06-28T15:46:14.720-03:00", "pid": 2965840, "id": "P1AUTH01", "Name": "ProcessMetrics", "TrxType": "RESP", "TrxCode": "1010", "TrxId": "408f5f7d-9927-4a45-8aba-a835eaf9a70c:41", "TotalElapsedTime": 7, "QueueTime": 0, "RunTime": 3, "TotalDatabaseTime": 4, "Queued": 7
WriteLogTime: Time it took to write and flush an operation log line. Time unit is milliseconds.
{ "ts": "2024-06-28T15:17:59.366-03:00", "pid": 2964289, "id": "P1INTMOC01", "Name": "WriteLogTime","Elapsed": 2 }
StationMetrics: Global metric that shows current connections for the platform's stations. Time unit is microseconds.
{ "ts": "2024-06-28T15:46:07.604-03:00", "pid": 2965887, "id": "STP1DH01", "Name": "StationMetrics", "Address": "", "Port": -1, "Socket": 14, "SubStationId": "714687", "TotalElapsedTime": 388039, "QueueTime": 32536, "Queued": 0, "Connections": 1 }
For performance log level 8, these are the available detailed metrics:
DatabaseMetricsDetail: Detailed list of database querys executed by the transaction or operation, and the elapsed time for each query. Time unit is milliseconds.
{ "ts": "2024-06-28T15:46:04.244-03:00", "pid": 2965848, "id": "M1DH01", "Name": "DatabaseMetricsDetail", "TrxType": "REQ", "TrxCode": "1010", "Querys": [ { "QueryId": "SELECT_GET_TERM_ID", "Elapsed": 2 }, { "QueryId": "UPDATE_UNLOCK_TERM_ID", "Elapsed": 1 }, { "QueryId": "commit", "Elapsed": 6 } ] }
SendMsgTime: Time it took to send a message to the next queue. This metric is useful for the development team. Time unit is milliseconds.
{ "ts": "2024-06-28T15:46:04.245-03:00", "pid": 2965848, "id": "M1DH01", "Name": "SendMsgTime", "TrxType": "REQ", "TrxCode": "1010", "Elapsed": 1, "Queued": 0 {
RecvMsgTime: Time it took to receive a message from the queue. Time unit is milliseconds.
{ "ts": "2024-06-28T15:46:04.255-03:00", "pid": 2965848, "id": "M1DH01", "Name": "RecvMsgTime", "TrxType": "RESP", "TrxCode": "1010", "Elapsed": 7, "Queued": 0 }
RecvCommitMsgTime: Time it took to receive a message from the queue and release it. Time unit is milliseconds.
{ "ts": "2024-06-28T15:46:04.245-03:00", "pid": 2965848, "id": "M1DH01", "Name": "RecvCommitMsgTime", "TrxType": "REQ", "TrxCode": "1010", "Elapsed": 0, "Queued": 1 }
StationMetricsDetail: Detailed information about a connection and the phases it goes through. Time unit is milliseconds.
{ "ts": "2024-06-28T15:46:07.605-03:00", "pid": 2965887, "id": "STP1DH01", "Name": "StationMetricsDetail", "CloseElapsedTime": 39, "ConnectElapsedTime": 28, "PoolElapsedTime": 387335, "ReadElapsedTime": 525, "WriteElapsedTime": 112, "ReadSize": 466595, "WriteSize": 1229, "ActivityRatio": 0.1814, "PoolRatio": 99.8186, "TotalCycles": 240, "PendingConnections": 0 }
StationLoopTime: Internal metric useful to detect saturation within the platform. Time unit is microseconds.
{ "ts": "2024-06-28T15:17:59.366-03:00", "pid": 2964289, "id": "P1INTMOC01", "Name": "WriteLogTime","Elapsed": 2 }
PerformanceLogTime: Time it took to write the ProcessMetrics performance log metric.
{ "ts": "2024-06-28T15:46:07.706-03:00", "pid": 2965848, "id": "M1DH01", "Name": "PerformanceLogTime", "Elapsed": 1 }