Supervisió

Sondes de salut per a un balancejador de càrrega o Kubernetes, mètriques de Prometheus i la pàgina Estat

  1. Sondes de salut
  2. Mètriques de Prometheus
  3. La pàgina Estat
    1. Comprovacions
    2. Informació

Sondes de salut

Dos endpoints indiquen a un balancejador de càrrega, a un healthcheck de contenidor o a Kubernetes si un procés pot rebre trànsit. Cap dels dos no necessita iniciar sessió, i cap dels dos no retorna res sobre la configuració:

Endpoint Respon Fes-lo servir per a
/api/v2/live 200 amb {"status":"live"} mentre el procés s’executa Una sonda de liveness: reinicia el procés quan deixa de respondre
/api/v2/ready 200 amb {"status":"ready"}, o 503 amb {"status":"not ready","reason":"..."} Una sonda de readiness: envia trànsit només als processos preparats

Un procés està preparat quan es compleix tot això:

  • no s’està aturant (stopping)
  • la base de dades respon (database unreachable)
  • l’esquema existeix (schema not provisioned) i és complet, amb totes les taules, columnes i índexs d’aquesta versió (schema not upgraded); aquesta última comprovació es desa en memòria cau durant 30 segons, de manera que una sonda cada pocs segons continua sent barata

Sota un BASE_URL els camins comencen per aquest valor, per exemple /ansibleforms/api/v2/ready. Un entorn d’execució (RTE) respon les mateixes sondes a /live i /ready, sense la comprovació de completesa de l’esquema; no està preparat mentre buida les seves tasques en aturar-se, de manera que no se li envia cap tasca nova. Un RTE sortint tampoc no està preparat (not connected to the app) fins que el seu sòcol cap a l’aplicació està obert. Un procés iniciat amb AF_ROLE=worker no té interfície web: només respon /api/v2/version i /health per al healthcheck del seu contenidor. Vegeu Escalat per als rols.


Mètriques de Prometheus

Posa a METRICS_TOKEN una cadena aleatòria llarga per servir mètriques de Prometheus. Un procés que serveix l’aplicació web respon a /api/v2/metrics, i un RTE a /metrics:

scrape_configs:
  - job_name: ansibleforms
    metrics_path: /api/v2/metrics
    authorization:
      type: Bearer
      credentials: <METRICS_TOKEN>
    static_configs:
      - targets: ['forms01.example.com:8000']

Sense METRICS_TOKEN els endpoints responen 404, com si no existissin, i una petició sense la capçalera Authorization: Bearer <token> correcta rep 401. Cada procés informa de les seves pròpies xifres, així que fes scrape de cadascun:

Mètrica Què mesura
af_process_*, af_nodejs_* El procés: CPU, memòria, retard del bucle d’esdeveniments, recollida d’escombraries
af_http_requests_total{route,method,status} Les peticions servides
af_http_request_duration_seconds{route} Quant de temps han trigat
af_jobs{status} Tasques en execució (running) o pendents d’aprovació (approve) ara mateix
af_jobs_ended_24h{status} Tasques que han acabat les últimes 24 hores, per estat
af_nodes{role,alive} Els processos registrats a la base de dades, per rol, vius o no
af_login_failures_total, af_login_lockouts_total Inicis de sessió fallits i bloquejos de comptes
af_rte_running_jobs, af_rte_max_jobs En un RTE: els playbooks que executa ara, i quants en pot executar alhora
af_rte_socket_connected En un RTE en mode sòcol: 1 mentre el seu sòcol cap a l’aplicació està obert, 0 quan no ho està

Les xifres de tasques i de nodes es llegeixen de la base de dades a cada scrape. Quan la base de dades no respon, es deixen fora, i l’scrape funciona igualment amb les altres mètriques.


La pàgina Estat

La pàgina Estat, a Configuració > Sistema, mostra als usuaris amb l’opció de rol showSettings com va la instància. Només llegeix, així que actualitzar-la mai no envia cap correu ni llança cap tasca. Té dues pestanyes, i el nombre de problemes es mostra a l’etiqueta de la pestanya Comprovacions.

Comprovacions

Cada comprovació és verda (correcta), ambre (requereix atenció) o vermella (un problema), amb els detalls en desplegar la fila:

Comprovació Què examina
Connexió amb la base de dades La base de dades respon
Usuari de la base de dades Ambre quan l’usuari té permisos sobre totes les bases de dades, com root, en lloc de només AnsibleForms.*
Esquema de la base de dades Existeixen totes les taules, columnes i índexs d’aquesta versió, i quin pedaç ha fallat quan no és així
Planificador Un worker executa les tasques del sistema, i cap no ha deixat de planificar-se
Nodes Els processos de la base de dades, ambre quan executen versions diferents
Tasques Tasques en execució i tasques pendents d’aprovació, ambre quan una tasca fa més de 24 hores que s’executa
Eines de còpia de seguretat L’ordre de bolcat de MYSQLDUMP_COMMAND existeix, i la seva versió
Darrera còpia de seguretat Ambre quan no n’hi ha cap o la més recent té més de dos dies, vermell quan no té cap bolcat utilitzable
Bloqueig del dissenyador Qui té el bloqueig del dissenyador, ambre quan fa més de 8 hores que el té
Repositoris Vermell quan un repositori ha fallat o no té arbre de treball al disc
Config seed El fitxer de la llavor de configuració es pot llegir i analitzar, i la seva darrera recàrrega ha funcionat
Magatzems de secrets Tots els magatzems de secrets responen, ambre quan el token d’un HashiCorp Vault caduca aviat
Runners Tots els runners responen, ambre quan no n’hi ha cap o no hi ha cap RTE predeterminat
Expressions del servidor Ambre quan EXPRESSION_SANITIZER és legacy
Secrets Ambre quan ENCRYPTION_SECRET és el valor predeterminat públic o ACCESS_TOKEN_SECRET no està definit
LDAP El servidor LDAP és accessible i el seu certificat TLS és vàlid, sense iniciar-hi sessió
Emmagatzematge de tasques La mida de les taules de tasques, ambre per sobre d’1 GB quan no hi ha cap retenció de tasques definida
Carpetes amb permís d’escriptura Es pot escriure a totes les carpetes configurades
Espai en disc El disc que conté les còpies de seguretat, ambre a partir d’un 85% d’ús i vermell a partir d’un 95%

Informació

Dades de la instància que no tenen cap veredicte, les primeres coses que es demanen en una conversa de suport: la versió d’AnsibleForms, la URL base, la versió i l’amfitrió de la base de dades, l’origen de la configuració, la llavor de configuració, els ajustos de retenció, els mètodes d’autenticació, el servidor del canal de correu actiu, el nivell i el camí del registre, el temps en funcionament, la zona horària, la versió de Node.js i la plataforma.

La pàgina llegeix /api/v2/health, que necessita un usuari amb la sessió iniciada i showSettings. Per a un sistema de supervisió, fes servir les sondes i les mètriques de més amunt.