The Telemetry Service of the SmartComponent Library provides insights into the utilization of the AppServer backend of a SmartComponent Library application, regardless if the backend is used by Web-, GUI-, REST-, SOAP- or open-client applications.
Per request the telemetry service writes down request details including the runtime, user and domain, service interface used and the actual service component (Business Entity) and method called into.
The Telemetry Data can be consumed by various applications. We are working on an integration of the Telemetry Data into the ProTop database monitoring service and portal (https://protop.com).
Activate and Deactivate Procedures
The Telemetry Service relies on the AppServers Activate and Deactivate procedures as a central place for initializing the request logging and finalizing the logging and the actual output.
So the AppServer configuration needs to include our Activate and Deactivate procedures, e.g.:
The instanceIdentifier should be a unique identifier for an instance of the application backend.
Output File Format
The default ITelemetryOutputWriter implementation produces a single output file per AppServer session to avoid file locking conflicts. The files are written buffered in the NDJSON file format (http://ndjson.org/ ).
The buffered nature improves the output performance drastically, however most likely cause that the last line in the output files appear to be incomplete until further output is written to the file or the AppServer session that the file belongs to is shut down.
NDJSON files contain a single JSON document per line. The complete NDJSON file however is not a valid JSON document.
We use the following attributes in the JSON file:
The unique identifier of the backend installation, matching the instanceIdentifier setting from the telemetry.conf file (see above)
The time the request has been started
The time the request has been finished
The runtime of the request in milliseconds
The authenticated user name
The domain name of the authenticated user
The service interface used, e.g. name of the Web Handler class or proSI…. procedure
The PASOE Adapter type
The PASOE agent process ID
The PASOE session ID
The request ID as appearing in the AppServer logfile
The version of OpenEdge
The HTTP URI of the request
The HTTP request method of the request
The name of the service component (e.g. Business Entity or Business Task invoked)
The name of the method executed in the service component
Request details, e.g. the queries property of a FetchDataRequest
Key identifying the request, typically composed of the abbreviated service name and service request or service interface
The runtime error message number when the request returned an error
The error messages returned to the client
The application error messages returned to the client
The stack trace of an error returned to the client