Initial Release
This is a project for training purposes. The main goal is to show how to configure Open Telemetry for an InterSystems IRIS instance.
Docker (if you are using Windows, make sure you set your Docker installation to use “Linux containers”).
Visual Studio Code + InterSystems ObjectScript VSCode Extension
The project deploys four docker containers:
InterSystems IRIS: Data platform to be monitored.
OpenTelemetry Collector: Metrics, traces and logs collector.
Prometheus: Tool for metrics monitorization.
Jaeger: Tool for traces monitorization.
Build the image that we will use during the workshop:
$ git clone https://github.com/intersystems-ib/iris-opentelemetry $ cd iris-opentelemetry $ docker compose build
Now we just need to deploy the containers:
$ docker compose up -d
If you are using Docker Desktop you should see a screen similar to this:
Already ready!
Prometheus docker image provide a web interface accessible from this url. From the web interface you will be able to get all metrics available from IRIS instance, if you want to know more about these metrics check it here. To get any metrics you only have to write the name of the metric and Prometheus will show all metrics to fetch.
Jaeger is an Open Source software to monitorize traces from your solutions. As Prometheus, Jaeger has a web interface published here.
In our example we are going to use the method TestTraces() from SYS.Monitor.OTel class (more info here). To execute this method you only have to open a terminal season from your Visual Studio Code (if your local project in VSCode is connected to the IRIS Server in Docker)
.
As soon as Jaeger receives a trace on OpenTelemetry Collector it will be available for consultancy from the web interface:
.
By default, a Service is created with the name irisotel when a trace from IRIS is received by OpenTelemetry Collector.
To enable IRIS notifications to OpenTelemetry Collector we have to enable it from Monitor Settings configuration:
.
For our example we are going to enable OTel Metrics to report the IRIS metrics to the collector and OTel Logs…but we are not going to use it. We have configured OTel Exporter Interval to 10 seconds, so each 10 seconds we are going to send our metrics into OpenTelemetry Collector.