Traefik V2.0 Метрики с Прометеем - PullRequest
2 голосов
/ 25 октября 2019

Если я хочу получить метрики Traefik с помощью Prometheus, это работает, только если активирован insecure = true. Если я установлю insecure = false, я получу 404. Возможно, у кого-то есть пример того, как выглядит правильная конфигурация. Итак, конфигурация Traefik (V2.0 CLI) и команды prometheus.yml.

traefik.yml Раздел:

      command:
        - "--metrics=true"
        - "--metrics.prometheus=true"
        - "--metrics.prometheus.buckets=0.100000, 0.300000, 1.200000, 5.000000"
        - "--metrics.prometheus.entrypoint='metrics'"
        - "--metrics.prometheus.addEntryPointsLabels=true"
        - "--metrics.prometheus.addServicesLabels=true"

        - "--api=true"
        - "--api.dashboard=true"

        - "--log.level=INFO"

        - "--providers.docker=true"
        - "--providers.docker.swarmmode=true"
        - "--providers.docker.exposedbydefault=false"

        - "--entrypoints.web.address=:80"
        - "--entrypoints.websecure.address=:443"
        - "--certificatesResolvers.sec.acme.email=foo@bar.com"
        - "--certificatesResolvers.sec.acme.storage=/letsencrypt/acme.json"
        - "--certificatesResolvers.sec.acme.httpChallenge.entryPoint=web"
      deploy:
        labels:
            - "traefik.enable=true"

            - "traefik.http.routers.api.rule=PathPrefix(`/api`) || PathPrefix(`/dashboard`)"
            - "traefik.http.routers.api.rule=Host(`foo.bar`)"

            - "traefik.http.routers.api.service=api@internal"
            - "traefik.http.routers.api.middlewares=myauth"
            - "traefik.http.services.api.loadbalancer.server.port=8080"
            - "traefik.http.routers.api.tls.certresolver=sec"
            - "traefik.http.middlewares.myauth.basicauth.users=xxx"

prometheus.yml:

global:
    scrape_interval: 10s
    scrape_timeout: 10s
scrape_configs:
    - job_name: 'pushgateway'
      static_configs:
              - targets: ['pushgateway:9091']
      honor_labels: true
    - job_name: 'traefik'
      scheme: https
      static_configs:
              - targets: ['foo.bar']
      basic_auth:
              username: myusername
              password: mypassword

1 Ответ

0 голосов
/ 10 ноября 2019

У меня есть рабочая конфигурация для конечной точки метрики prometheus позади самого обратного прокси-сервера Traefik без использования небезопасной конфигурации (хотя и с использованием файла конфигурации toml) - не совсем уверен, что именно этого вы хотите достичь.

Итак, из приведенного выше примера конфигурации, насколько я понимаю, вам не хватает некоторых вещей.

Сначала вы настроили метрики prometheus для использования «метрик» точки входа, поэтому вам нужно настроить точку входа, называемую метриками, враздел CLI, например, такой:

 - "--entrypoints.metrics.address=:8082"

Если вы хотите получить доступ к конечной точке метрик через TLS (завершается самой traefik) и использовать базовую аутентификацию, вам нужна конфигурация и служба маршрутизатора для конечной точки метрик, какметки, например, как показано ниже (в дополнение к вашей конфигурации конечной точки API):

   - "traefik.http.routers.metrics.rule=PathPrefix(`/metrics`)"
   - "traefik.http.routers.metrics.rule=Host(`foo.bar`)"
   - "traefik.http.routers.metrics.tls=true"
   - "traefik.http.routers.metrics.tls.certResolver=sec"
   - "traefik.http.routers.metrics.service=metrics"
   - "traefik.http.routers.metrics.middlewares=myauth"
   - "traefik.http.services.metrics.loadbalancer.server.port=8082"

Кроме того, мне нужно было настроить сеть роя Docker следующим образом (в противном случае я получаю тайм-аут 503 шлюза):

- "traefik.docker.network=proxy"

(прокси мой оверлейсеть, соединяющая traefik и все сервисы, для которых Traefik будет обратным прокси.)

Надеюсь, это поможет ...

...