Métriques Prometheus¶
Les métriques sont lues dans la base partagée avec le serveur MCP : toutes les répliques du contrôleur répondent la même chose (voir aussi le journal d'audit).
GET /metrics sur le contrôleur répond au format texte de Prometheus (0.0.4). Le serveur
MCP n'a pas d'endpoint de métriques. Il faut un jeton de rôle metrics, qui n'atteint rien
d'autre (ni l'API REST, ni MCP), ou admin :
security-review-controller token create --label prometheus --role metrics --expires-in-days 365
curl -H "Authorization: Bearer $TOKEN" https://secreview.example.com/metrics
# prometheus.yml
scrape_configs:
- job_name: security-review
scheme: https
authorization:
credentials_file: /etc/prometheus/secreview-token
static_configs:
- targets: ["secreview.example.com"]
| Métrique | Labels | Valeur |
|---|---|---|
secreview_build_info |
version |
1 |
secreview_projects |
Projets ayant des rapports | |
secreview_reports |
Rapports stockés | |
secreview_findings |
status |
Findings par statut effectif (une décision expirée compte comme open) |
secreview_open_findings |
severity |
Findings ouverts par sévérité |
secreview_project_open_findings |
project, severity |
Findings ouverts de chaque projet |
secreview_finding_proposals_pending |
Propositions d'agents en attente d'une personne | |
secreview_tokens |
role, state |
Jetons par rôle et état (active, expired) |
secreview_tokens_expiring_soon |
Jetons actifs qui expirent dans les 14 jours | |
secreview_project_enrollments_pending |
Projets demandés par un enrôlement, en attente de validation | |
secreview_web_users |
auth_source |
Comptes web (local, oidc) |
secreview_advisories |
Avis de la base | |
secreview_advisory_last_update_timestamp_seconds |
Fin du dernier téléchargement OSV réussi (absente avant le premier) | |
secreview_auth_rejections_total |
reason |
Requêtes rejetées par l'authentification du processus qui répond, depuis son démarrage : invalid_token, token_expired, insufficient_scope |
Toutes les valeurs sauf secreview_auth_rejections_total viennent de la base. Les métriques
contiennent des nombres et des noms de projets, jamais un finding, un label de jeton ou un
secret ; les valeurs des labels sont échappées, si bien qu'un nom de projet ne peut pas ajouter
de lignes à la réponse. SECREVIEW_METRICS_ENABLED=false désactive l'endpoint (404).
Exemples d'alertes : secreview_tokens_expiring_soon > 0,
secreview_open_findings{severity="critical"} > 0,
time() - secreview_advisory_last_update_timestamp_seconds > 2 * 86400,
rate(secreview_auth_rejections_total{reason="invalid_token"}[5m]) > 1.