Мониторинг traefik через Prometheus

Traefik поддерживает из коробки публикацию метрик в формате prometheus. В метриках доступна основная информация по работе прокси.

Документация по настройке: Traefik Prometheus Documentation - Traefik

Настройка Traefik

Необходимо внести изменения в статическую конфигурацию traefik.yml

Note

Порт публикации может быть любой свободный, в данном случае 8082

#Добавления точки публикации данных
entryPoints:
  metrics:
    address: ":8082"
    
#Включение публикации метрик
metrics:
  prometheus:
    entryPoint: metrics

Пример статической конфигурации:

Traefik статическая конфигурация

api:
  dashboard: true
  debug: true
entryPoints:
  http:
    address: ":80"
    http:
      middlewares:
        - crowdsec@file
      redirections:
        entryPoint:
          to: https
          scheme: https
  https:
    address: ":443"
    http:
      middlewares:
        - crowdsec@file
  metrics:
    address: ":8082"

serversTransport:
  insecureSkipVerify: true
providers:
  file:
    directory: /config
    watch: true
certificatesResolvers:
  cloudflare:
    acme:
      email: <email>@gmail.com
      storage: acme.json
      dnsChallenge:
        provider: cloudflare
        resolvers:
          - "1.1.1.1:53"
          - "1.0.0.1:53"
metrics:
  prometheus:
    entryPoint: metrics
log:
  level: "INFO"
  filePath: "/var/log/traefik/traefik.log"
accessLog:
  filePath: "/var/log/traefik/access.log"

experimental:
  plugins:
    crowdsec-bouncer-traefik-plugin:
      moduleName: "github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin"
      version: "v1.3.4-beta1"

Внести изменения в докер файл добавив проброс порта публикации метрик из контейнера docker.

...
    ports:
      - 8082:8082
...

Измененный файл docker compose для запуска

Traefik

Обязательно надо настроить файлы конфигурации Traefik

services:
  traefik:
    image: traefik:latest
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    ports:
      - 80:80
      - 443:443
      - 8082:8082
    environment:
      - CF_API_EMAIL=<CF_API_EMAIL>
      - CF_DNS_API_TOKEN=<CF_DNS_API_TOKEN>
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./traefik.yml:/traefik.yml:ro
      - ./acme.json:/acme.json
      - ./logs:/var/log/traefik
      - ./dynamic:/config:ro

networks:
  proxy:
    name: proxy
    external: true

Настройка Prometheus

Добавить в конфигурационный файл Prometheus новую задачу сбора данных:

  - job_name: 'traefik'
    scrape_interval: 30s
    scheme: http
    metrics_path: '/metrics'
    static_configs:
      - targets: ['192.168.0.131:8082']:9100"]

Параметры являются не обязательными:

    scheme: http
    metrics_path: '/metrics'

Мониторинг в Grafana

Мониторинг traefik через Prometheus.png

Можно использовать следующий дашборд для Grafana:
![[GrafanaTraefik.json]]

Описание дашборда на официальном сайте: Traefik | Grafana Labs