DEVOPS · SLO + CHAÎNE D'APPROVISIONNEMENT

monsys.ai dans votre flux CI/CD

SLO error budgets, deploy-gates sur Trust Score, monitoring chaîne npm, détection drift Terraform, coût LLM par équipe. Cinq hooks dans votre pipeline existante.

Docs complètes
01

SLO + error budget par application

Vous voulez savoir : combien de minutes de downtime nous reste-t-il 'en budget' ce mois-ci ? Et à quelle vitesse l'épuisons-nous au rythme actuel ?

  1. Sidebar → Apps → cliquer votre application
  2. Onglet SLO → 'Définir SLO' → target 0.999 + 30 jours
  3. Sparkline burn-down apparaît dans le même onglet
  4. Bouton 'Embed badge' pour README

Historique SLO exportable en CSV pour les sprint reviews. Burn rate > 2.0 dans la dernière heure = freeze des deploys.

Idem via API (bash) — pour automatisation
curl -X POST https://app.monsys.ai/api/v1/apps/<id>/slo \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "target":      0.999,
    "window_days": 30,
    "minimum_data": 0.95
  }'

# /operations/mttr now shows: rolling 30d uptime,
# error budget remaining (minutes), burn-down sparkline,
# days-until-budget-exhausted if you keep burning.
02

Bloquer le deploy si une alerte critique est ouverte OU Trust Score trop bas

Anti-pattern : 'deploy maintenant, regarder les alertes plus tard'. Vous voulez le rendre mécaniquement impossible.

  1. Sidebar → Settings → API Tokens → générer token scoped readonly
  2. Sidebar → AI Insights → 'Deploy gate template' → copier snippet bash
  3. Coller dans votre CI yaml avant l'étape deploy
  4. Tester avec --dry-run — affiche Trust Score + alertes ouvertes

La décision de deploy est dans les logs CI et (optionnellement) dans audit_log via callback webhook. Incontestable comment vous avez décidé.

Idem via API (bash) — pour automatisation
#!/usr/bin/env bash
OPEN_CRITICAL=$(curl -s \
  "https://app.monsys.ai/api/v1/alerts?severity=critical&is_resolved=false&tag=production" \
  -H "Authorization: Bearer $MONSYS_TOKEN" | jq '. | length')

[[ "$OPEN_CRITICAL" -gt 0 ]] && {
  echo "✗ refusing deploy: $OPEN_CRITICAL critical alerts open"
  exit 1
}

SCORE=$(curl -s "https://app.monsys.ai/api/v1/trust-score/v12/tenant" \
  -H "Authorization: Bearer $MONSYS_TOKEN" | jq '.final_score')

[[ "$SCORE" -lt 70 ]] && {
  echo "✗ refusing deploy: Trust Score $SCORE/100 < 70"
  exit 1
}

echo "✓ Trust Score $SCORE — proceeding"
03

Auto-update des deps npm vulnérables, mais pinner notre driver DB

Vous voulez bulk-fixer via 'Auto-update all', mais mysql2 version 2.4.x a un ABI break qui touche votre production.

  1. Sidebar → Recommandations → 'Application CVEs'
  2. Sur mysql2 → 3-points → 'Suppress this fix'
  3. Saisir expires_at + raison
  4. Future Auto-update-all montre skip avec raison

cve_suppressions apparaît dans l'Audit Pack sous 'managed exceptions' — l'auditeur voit une décision consciente, pas un bug oublié.

Idem via API (bash) — pour automatisation
curl -X POST https://app.monsys.ai/api/v1/cve-suppressions \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "package_name":  "mysql2",
    "ecosystem":     "npm",
    "version_range": ">=2.4.0",
    "reason":        "ABI break — see PROD-123",
    "expires_at":    "2026-09-01"
  }'

# Future "Auto-update all" skips this upgrade
# AND records the reason in monthly evidence.
04

Détecter un changement de mainteneur npm (indicateur chaîne d'approvisionnement)

Un paquet npm légitime sur lequel vous comptez reçoit soudainement un nouveau mainteneur publish. Souvent bénin — parfois précurseur d'un compromise.

  1. Sidebar → Inventaire → onglet Dependencies
  2. Filtre 'Maintainer changed last 7 days'
  3. Par package : maintainer set actuel + précédent
  4. Cliquer suspect → 'Pin version' ou 'Investigate'

Un hit déclenche un webhook vers votre outillage incident. Optionnel : EAT IsolateNetwork sur staging où le paquet est déjà installé.

Idem via API (sql) — pour automatisation
SELECT package_name, ecosystem,
       maintainers, deprecated,
       last_maintainer_change_at, seen_at
  FROM supply_chain_maintainer_cache
 WHERE tenant_id = $1::UUID
   AND last_maintainer_change_at
       >= NOW() - INTERVAL '7 days'
 ORDER BY last_maintainer_change_at DESC;
05

Coût LLM par équipe via SDK

Toute votre org utilise OpenAI/Claude. Vous voulez savoir : quelle équipe coûte quoi, et quelle est la latence p95 de qui.

  1. Sidebar → AI → onglet 'Par équipe'
  2. Groupement par défaut sur tag 'team' du SDK
  3. Filtre sur coût ou latence p95
  4. 'Export CSV mois' pour cross-charge

Export CSV par mois pour la cross-charge financière. Tokens + coût + p95 + taux de refus par équipe, projet, modèle.

Idem via API (python) — pour automatisation
from monsys_ai import MonsysClient

client = MonsysClient(
    hub_url="https://hub.monsys.ai",
    api_key=os.environ["MONSYS_AI_TOKEN"],
    tenant="acme",
    team="checkout",        # → tag op every trace
)

with client.trace("price-lookup") as t:
    resp = openai.chat.completions.create(...)
    t.add_llm_call(
        model=resp.model,
        prompt_tokens=resp.usage.prompt_tokens,
        completion_tokens=resp.usage.completion_tokens,
    )

Autres rôles

Lire la doc pratique détaillée