...
Code Block |
---|
receivers: otlp: # Defines the OTLP receiver to accept telemetry data (traces/metrics) protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 processors: batch/traces: timeout: 1s # The maximum time to wait before sending a batch of telemetry data send_batch_size: 50 batch/metrics: timeout: 1s send_batch_size: 50 # The maximum number of telemetry data items to send per batch exporters: prometheus: # Defines an exporter for Prometheus to expose telemetry data endpoint: 0.0.0.0:8889 # The network address and port where Prometheus can scrape metrics zipkin: endpoint: "http://zipkin:9411/api/v2/spans" service: pipelines: metrics: receivers: [otlp] # OTLP receiver is responsible for receiving theprocessors: [batch/metrics] data processorsexporters: [batch/tracesprometheus] # The batch processor is used to process the received metrics traces: receivers: [otlp] exportersprocessors: [prometheusbatch/traces] # The processed metrics are exported to Prometheusexporters: [zipkin] |
We then define a configuration file for Prometheus. Example:
...
Code Block |
---|
services: dashboard: image: registry.panintelligence.cloud/panintelligence/dashboard/pi:latest ports: - 8226:8226 environment: PI_DB_HOST: database PI_DB_PASSWORD: password PI_DB_USERNAME: root PI_DB_SCHEMA_NAME: dashboard PI_DB_PORT: 3306 PI_EXTERNAL_DB: "true" PI_LICENCE: ae8360ce-d208-4daa-b776-8022f37ff150 PI_TOMCAT_OBSERVABILITY_ENABLE_JAVA_AGENT: "true" PI_TOMCAT_OBSERVABILITY_EXPORTER_ENDPOINT: "http://otel-collector:4318" PI_TOMCAT_OBSERVABILITY_SERVICE_NAME: "pi-dashboard" PI_TOMCAT_PORT: 8226 healthcheck: test: [ "CMD", "/bin/bash", "/var/panintelligence/tomcat_healthcheck.sh" ] interval: 10s start_period: 60s retries: 3 database: image: mariadb:10.9.4 environment: MARIADB_DATABASE: dashboard MARIADB_ROOT_PASSWORD: password LANG: C.UTF-8 command: --lower_case_table_names=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci restart: always ports: - "3306:3306" otel-collector: image: otel/opentelemetry-collector container_name: otel-collector command: [ "--config=/etc/config.yml" ] volumes: - /path_to_config_files/config.yml:/etc/config.yml # Mounts the local collector configuration file into the container at the specified path ports: - "4317:4317" # Maps port 4317 for OTLP gRPC protocol for receiving telemetry data - "4318:4318" # Maps port 4318 for OTLPMOTLP HTTP protocol for receiving telemetry data - "8889:8889" # Maps port 8889 for Prometheus scraping metrics from the collector prometheus: image: prom/prometheus:latest container_name: prometheus ports: - "9090:9090" # Maps port 9090 for accessing the Prometheus web interface volumes: - /path_to_prometheus_config/prometheus.yml:/etc/prometheus/prometheus.yml # Mounts the local Prometheus configuration file into the container zipkin: image: openzipkin/zipkin:2.23 container_name: zipkin ports: - "9411:9411" |
Things to note:
All three files (config.yml, prometheus.yml and docker-compose.yml) should exist for this example to work successfully
Amend volumes for otel-collector and prometheus - make sure to point to the correct path within your local directory
Make sure all ports specified are available
...