Salta ai contenuti

Traefik

Questi contenuti non sono ancora disponibili nella tua lingua.

O proxy reverso: roteadores desativados por um erro de configuração, servidores backend falhando sua verificação de saúde, certificados que um resolver nunca obteve ou que não são renovados, e a parcela de respostas 5xx.

O DumbMonit lê a API do Traefik, que só lê: /api/overview, /api/http/routers, /api/http/services, /api/certificates (servido pelo Traefik 3.7) e /api/version. Quando as métricas Prometheus do Traefik são servidas na mesma porta, /metrics adiciona a taxa de requisição e a parcela de respostas 5xx. Nenhum método da API altera nada, e o DumbMonit não envia nenhum.

As falhas que valem a pena observar são as silenciosas. Um roteador cujo serviço ou middleware não existe, ou cuja regra não analisa, é desativado: seus sites respondem 404, e o Traefik só avisa isso em seu log. Um serviço cujos servidores todos falham sua verificação de saúde responde 503 “no available server”. Um roteador que pede a um resolver ACME um certificado que o resolver não consegue obter recebe o certificado autoassinado padrão do Traefik, que navegadores recusam.

Todas as métricas têm o prefixo dumbmonit_traefik_. Os totais são contadores: gráficos e regras os transformam em taxas.

MétricaO que éRótulos
version_infovalor 1version
routers, routers_errors, routers_warningsroteadores de todo protocolo, e os em erro ou aviso
services, services_errors, middlewares_errorso mesmo para serviços e middlewares
router_statuspor roteador HTTP: 0 ativado, 1 aviso, 2 desativadorouter, provider
router_error_infovalor 1, para um roteador não ativado: o primeiro erro do Traefikrouter, error
service_statuspor serviço: 0 ativado, 1 aviso, 2 desativadoservice
service_servers, service_servers_upservidores de um serviço com balanceamento de carga, e os que passam sua verificação de saúdeservice
server_up1 quando o servidor passa sua verificação de saúde (ou não tem nenhuma)service, server
resolver_routersroteadores pedindo a um resolver de certificado seu certificadoresolver
resolver_routers_uncoveredaqueles cujos nomes de host nenhum certificado mantido pelo Traefik ainda cobre (precisa de /api/certificates)resolver
certificates, cert_expiry_dayscertificados que o Traefik mantém, e os dias restantes antes de cada um expirarcert
requests_total, requests_5xx_totalcom métricas: requisições de todo entry point, e as respondidas com 5xx
router_requests_total, router_requests_5xx_totalcom métricas e rótulos de roteador: o mesmo por roteadorrouter
config_reloads_totalcom métricas: recarregamentos de configuração

Os próprios roteadores e serviços do Traefik (@internal) são deixados de fora. Roteadores, serviços e servidores são descritos um a um até 500 cada; os totais sempre cobrem tudo.

As regras integradas que se aplicam: Traefik router disabled, Traefik backend server down, Traefik service without a server, Traefik certificate not obtained, Proxy certificate not renewed, Reverse proxy answering 5xx, além de Device unreachable.

O painel acima dos gráficos lê o que a sondagem armazenou; abrir a página nunca consulta o Traefik. Ele diz o que está errado em uma frase (roteadores desativados e o motivo do Traefik, serviços sem servidor, resolvers que não obtiveram nada, certificados próximos da expiração, uma alta parcela de 5xx), depois os roteadores, serviços, taxa de requisição e parcela de 5xx, depois os servidores ativos por serviço, os certificados que expiram primeiro, e as respostas 5xx por roteador nas últimas 24 horas.

  1. A API do Traefik só lê: roteadores, serviços e certificados, nunca uma alteração. Ative-a com as métricas Prometheus, que adicionam a taxa de requisição e a parcela de respostas 5xx: adicione estes dois argumentos ao comando do Traefik (ou as mesmas chaves à sua configuração estática) e reinicie-o. Ambos são então servidos no entry point traefik, porta 8080.

    --api.insecure=true
    --metrics.prometheus=true
  2. A porta 8080 responde sem senha: publique-a apenas em um endereço que o host DumbMonit alcance, filtre-a para que nada mais o faça, e verifique que ela responde.

    curl -s http://traefik.lan:8080/api/overview
  3. Para exigir uma senha em vez disso, roteie /api e /metrics através de um entry point próprio com um middleware basicAuth, como a documentação mostra, e escolha usuário basicAuth abaixo. Crie o usuário dumbmonit com htpasswd.

    htpasswd -nbB dumbmonit 'a-long-password'
  4. No DumbMonit, informe o host Traefik, por exemplo “traefik.lan”, com a porta desse entry point se não for 8080. Desmarque Ler as métricas se /metrics for servido em outro lugar.

Em vez de --api.insecure=true, dê à API e às métricas um entry point próprio e coloque um middleware basicAuth na frente de ambos. Na configuração estática:

entryPoints:
monitor:
address: ":8082"
api: {}
metrics:
prometheus:
manualRouting: true
addRoutersLabels: true

e na configuração dinâmica (provedor de arquivo mostrado; labels Docker funcionam da mesma forma), com a linha impressa por htpasswd:

http:
middlewares:
dumbmonit-auth:
basicAuth:
users:
- "dumbmonit:$2y$05$…"
routers:
monitor-api:
entryPoints: [monitor]
rule: "PathPrefix(`/api`)"
service: api@internal
middlewares: [dumbmonit-auth]
monitor-metrics:
entryPoints: [monitor]
rule: "Path(`/metrics`)"
service: prometheus@internal
middlewares: [dumbmonit-auth]

Depois informe traefik.lan:8082 no DumbMonit com o usuário dumbmonit. addRoutersLabels é o que dá as respostas 5xx por roteador; sem ele só os totais por entry point são contados.

CredencialCampos
Sem senhaNada: a porta da API é filtrada para que só o DumbMonit a alcance.
Usuário basicAuthO usuário e senha do middleware basicAuth na frente de /api e /metrics.

Endereço: um nome de host ou IP (traefik.lan), host:porta, ou uma URL completa. Opções: protocolo (HTTP por padrão), porta da API (8080), Ler as métricas (ativado), verificação de certificado e tempo limite da requisição (10 s).

Um serviço sem verificação de saúde reporta todo servidor como ativo: o Traefik só marca um servidor como fora do ar quando um healthCheck falha. Serviços ponderados e de espelhamento não têm servidores próprios e não são contados.