@lndr/opentelemetry-lgtm
v1.0.1
Published
Boilerplate for OpenTelemetry instrumentation with the LGTM observability stack.
Readme
opentelemetry-lgtm
Boilerplate for OpenTelemetry instrumentation with the LGTM observability stack.
Getting started:
The first step is to instrument your application code with OpenTelemetry and send its metrics, traces, and logs to the OpenTelemetry collector.
For this example, we will use the OTLP HTTP exporters:
npm install @opentelemetry/exporter-metrics-otlp-http @opentelemetry/exporter-trace-otlp-http @opentelemetry/exporter-logs-otlp-http// ./instrumentation.js
const OpenTelemetry = require('@lndr/opentelemetry-lgtm');
const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-http');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
const { OTLPLogExporter } = require('@opentelemetry/exporter-logs-otlp-http');
OpenTelemetry(
'my-app:1.0.0',
{
exporters: {
metrics: [
new OTLPMetricExporter({ url: `http://localhost:4318/v1/metrics` })
],
traces: [
new OTLPTraceExporter({ url: `http://localhost:4318/v1/traces` })
],
logs: [
new OTLPLogExporter({ url: `http://localhost:4318/v1/logs` })
]
}
}
).start();Then you can run your Node.js application by preloading the instrumentation file, like below:
node -r ./instrumentation.js my-app.jsYou can use other available exporters, just remember to install them in your project first.
Infrastructure setup:
After your code is instrumented, the next step is to spin up the OpenTelemetry collector and the LGTM stack (Loki, Grafana, Tempo and Mimir).
This setup is already configured for local development, so you can quickly get started by running:
make all
docker compose up -dAll configuration files are available in the lgtm/config folder. Feel free to change them (except the *.base.yaml templates) as needed to match your deployment requirements.
A .env file is created automatically from .env.example if it does not exist yet. You can update the location of your configuration files in the .env file, so you can customize your deployment even further.
All LGTM data is stored in the lgtm/data folder by default. The location can be changed in the .env file too. If you keep the defaults, removing it will wipe out all stored data from the LGTM stack.
If desired, you can generate the .env or the configuration files separately. The following make recipes only generate the files if they do not exist yet:
make env
make configIf you need further instructions for configuring your deployment, refer to the examples in Grafana’s intro-to-mltp repository or the official Grafana Labs documentation.
Notice
This project, opentelemetry-lgtm, makes use of the OpenTelemetry packages published under the Apache License 2.0.
This package itself is licensed under the MIT license.
Disclaimer: This project is provided “as is”, without warranty of any kind. The author assumes no responsibility for how this package is used.
