PASOE Agent Telemetry

PASOE Agent Telemetry

The PASOE Agent Telemetry WebApp can be downloaded from the Consultingwerk ESD as a .war-file.

It logs telemetry data about PASOE Agents into .ndjson-files.

Setup and Installation

To use the WebApp, place the .war-file in the PASOE’s webapps directory. The WebApp needs to be configured. To do this, add a file smart-telemetry.properties to the PASOE’s conf directory. The following is an example of how this file should look like:

{ "interval": 10, "ablapps": [ { "name": "smartpas_stream", "output": "${CATALINA_BASE}\\ablapps\\smartpas_stream\\telemetry-session\\smartpas_stream.ndjson" }, { "name": "guiauth", "output": "${CATALINA_BASE}\\ablapps\\guiauth\\telemetry-session\\guiauth.ndjson" } ], "loglevel": "Normal" }
  • interval: The time in seconds between samples.

  • ablapps: The list of apps for which to log telemetry data.

    • name: The name of an abl app for which to log data

    • output: The path to the .ndjson-file to which to write the log data. ${CATALINA_BASE} can be used here to refer to the PASOE’s base directory.

  • loglevel: This is an optional property to define how much information needs to be written to ${CATALINA_BASE}/logs/pasoe-agent-telementry.log. The possible values are:

loglevel

Description

loglevel

Description

Debug

Also writes the config as JSON, each line of the .ndjson and information about entering or returning from a method.

Verbose

Includes output related to each line written to an .ndjson file.

Normal

Is the default value. This would also include config and startup/shutdown info.

Minimal

Only Output related to errors and warnings will be written.

None

No output will be written.

Each loglevel also writes the messages that the levels below would write (i.e. with Verbose the messages for Normal and Minimal are written as well).

Usage

After the WebApp is started and configured, it should log the telemetry data. The telemetry data is written as JsonObjects with one object per line. If one of those lines were formatted, it would look like this:

{ "totalSessionMemory": 952100034, "ablApplication": "smartpas_stream", "metrics": { "maxConcurrentClients": "0", "concurrentConnectedClients": "0", "numReserveABLSessionTimeouts": "0", "writeErrors": "0", "reads": "0", "numReserveABLSessionWaits": "0", "startTime": "2025-02-27T11:41:26.451+01:00", "requests": "0", "type": "OE_BROKER", "writes": "0", "readErrors": "0", "accessTime": "2025-02-27T11:41:33.281+01:00" }, "sampleTime": "27022025 11:41:32:878", "agents": [ { "agentId": "bEJ9j-xITRa7xojl5x-vjg", "sessions": [ { "SessionState": "IDLE", "RequestsFailed": 0, "SessionMemory": 476050017, "StartTime": "2025-02-27T11:41:33.270-01:00", "RequestsCompleted": 0, "RequestsCompletedDelta": 0, "SessionId": 4, "RequestsFailedDelta": 0 }, { "SessionState": "IDLE", "RequestsFailed": 0, "SessionMemory": 476050017, "StartTime": "2025-02-27T11:41:33.270-01:00", "RequestsCompleted": 0, "RequestsCompletedDelta": 0, "SessionId": 7, "RequestsFailedDelta": 0 } ], "sessionCount": 2, "agentSessionMemory": 952100034, "pid": "15752", "state": "AVAILABLE" } ] }

Related content