Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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:

  1. All three files (config.yml, prometheus.yml and docker-compose.yml) should exist for this example to work successfully

  2. Amend volumes for otel-collector and prometheus - make sure to point to the correct path within your local directory

  3. Make sure all ports specified are available

...