Monitoring with Prometheus

Every DetectMate service exposes a Prometheus-compatible metrics endpoint on its HTTP server. Prometheus can scrape this endpoint to collect operational metrics, and tools like Grafana can visualize them.

Metrics endpoint

The metrics endpoint is available at:

http://<http_host>:<http_port>/metrics

With default settings this is http://127.0.0.1:8000/metrics. You can fetch it directly with curl:

curl http://127.0.0.1:8000/metrics

Or use the DetectMate client CLI:

detectmate-client --url http://127.0.0.1:8000 metrics

Available metrics

All metrics are labeled with component_type and component_id, so a single Prometheus instance can distinguish between multiple DetectMate services.

Metric Type Description
engine_running Enum (running, stopped) Current state of the processing engine
engine_starts_total Counter Number of times the engine has been started
processing_duration_seconds Histogram Time spent processing each message, in seconds
processing_errors_total Counter Number of exceptions raised during processing
data_read_bytes_total Counter Total bytes read from input interfaces
data_read_lines_total Counter Total lines read from input interfaces
data_processed_bytes_total Counter Total bytes processed by the component
data_processed_lines_total Counter Total lines processed by the component
data_written_bytes_total Counter Total bytes written to output interfaces
data_written_lines_total Counter Total lines written to output interfaces
data_dropped_bytes_total Counter Total bytes dropped due to disconnected or slow downstream peers
data_dropped_lines_total Counter Total lines dropped due to disconnected or slow downstream peers

The processing_duration_seconds histogram uses the following buckets: 1 ms, 5 ms, 10 ms, 25 ms, 50 ms, 100 ms, 250 ms, 500 ms, 1 s, 2.5 s, 5 s, 10 s.

Counting with multiple output interfaces

When multiple output addresses are configured, data_written_bytes_total and data_written_lines_total are incremented once per message as long as at least one output send succeeded. data_dropped_bytes_total and data_dropped_lines_total are incremented once per failing output interface, so a single message can contribute to the dropped counter multiple times if several outputs are unavailable simultaneously.

Connecting a standalone Prometheus

If you run DetectMate outside of Docker Compose, add a scrape job to your prometheus.yml:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'detectmate'
    static_configs:
      - targets:
          - '127.0.0.1:8000'

If you run multiple services, list each one under targets:

scrape_configs:
  - job_name: 'detectmate'
    static_configs:
      - targets:
          - '127.0.0.1:8001'  # parser
          - '127.0.0.1:8002'  # detector

Docker Compose setup

The DetectMate repository ships a ready-to-use Docker Compose configuration that includes Prometheus and Grafana. The Prometheus configuration file at container/prometheus.yml is pre-configured to scrape the parser and detector services:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['parser:8000', 'detector:8000']

Prometheus is accessible at http://localhost:9090 after starting the stack with:

docker compose up

See the Docker Compose reference for details on the full stack setup.

Visualizing metrics with Grafana

The Docker Compose stack includes a Grafana instance pre-configured with Prometheus as a datasource. Access it at http://localhost:3000 (default credentials: admin / admin).

To explore DetectMate metrics, open "Drilldown" and select "Metrics". Filter by the detectmate job or search for any of the metric names listed above.

A DetectMateService Overview dashboard is provisioned automatically from container/grafana/dashboards/detectmate.json

Note

If you connect your own Grafana to a standalone Prometheus, add a Prometheus datasource pointing to http://<prometheus-host>:9090.