Aller au contenu principal

Métriques applicatives

Exporter les métriques applicatives vers Prometheus

Les métriques applicatives sont collectées grâce à Prometheus, un logiciel utilisé pour la surveillance d'événements et les alertes, qui permet de scraper les données capturées dans l'application.

info

L'exporteur Prometheus n'est pas pris en charge pour les embedded clusters.

Métriques disponibles

L'exporteur Prometheus donne accès aux métriques suivantes, regroupées par domaine.

Utilisateurs et incidents

MétriqueTypeDescriptionDimensions
gim_active_users_totalGaugeTous les utilisateurs de l'instanceAucune
gim_issues_totalGaugeTous les incidentsSeverity, Status
gim_occurrences_totalGaugeToutes les occurrencesHidden, Status

Activité de scan

MétriqueTypeDescriptionDimensions
gim_commits_totalGaugeCommits traitésAccount, Scan type
gim_repo_scan_active_statuses_totalGaugeNombre de scans historiquesscan_feature, status
gim_check_runs_createdCounterCheck runs GitHub créésplan, account_id
gim_check_runs_timed_outCounterCheck runs GitHub expirésplan, account_id
gim_check_runs_runtime_bucketHistogramDurée des check runs GitHubstatus
gim_check_runs_error_codesCounterErreurs des check runs GitHub par codeerror_code

Infrastructure

MétriqueTypeDescriptionDimensions
gim_postgres_used_disk_bytesGaugeEspace disque utilisé par PostgreSQLAucune
gim_redis_used_memory_bytesGaugeMémoire utilisée par RedisAucune
gim_redis_available_memory_bytesGaugeMémoire disponible pour RedisAucune

Workers et files d'attente Celery

MétriqueTypeDescriptionDimensions
gim_celery_queue_lengthGaugeTâches en attente dans la filequeue_name
gim_celery_active_consumer_countGaugeConsommateurs actifs dans la file du brokerqueue_name
gim_celery_worker_tasks_activeGaugeTâches en cours de traitementAucune
gim_celery_task_sent_totalCounterTâches envoyées à une filename, queue_name, team
gim_celery_task_started_totalCounterTâches démarrées par un workername, queue_name, team
gim_celery_task_succeeded_totalCounterTâches terminées avec succèsname, queue_name, team
gim_celery_task_failed_totalCounterTâches en échecname, exception, queue_name, team
gim_celery_task_retried_totalCounterTâches réessayéesname, queue_name, team
gim_celery_task_queue_time_bucketHistogramTemps passé en attente dans la filename, queue_name, team
gim_celery_task_runtime_bucketHistogramDurée d'exécution des tâchesname, queue_name, team

Requêtes HTTP

MétriqueTypeDescriptionDimensions
gim_http_request_started_totalCounterRequêtes HTTP initiéesapi, method, view_name
gim_http_request_success_totalCounterRequêtes HTTP réussiesapi, method, view_name
gim_http_request_failure_totalCounterRequêtes HTTP en échecapi, method, status_code, view_name
gim_http_request_exception_totalCounterRequêtes HTTP ayant levé une exceptionapi, method, view_name, exception
gim_http_request_view_duration_secondsHistogramDurée des requêtes HTTP par vueapi, method, view_name

Contrôles de santé

MétriqueTypeDescriptionDimensions
gim_health_check_result_countGaugeRésultats des contrôles de santéservice_name, status
gim_outdated_health_check_countGaugeContrôles de santé plus anciens que l'intervalle périodiqueservice_name
gim_health_check_skipped_totalCounterContrôles de santé ignorésreason, service_name
gim_health_check_duration_metricHistogramDurée d'exécution des contrôles de santéservice_name

Tâches périodiques

MétriqueTypeDescriptionDimensions
gim_periodic_task_period_secondsGaugePériodicité attendue d'une tâchetask_name, queue_name
gim_periodic_task_not_run_for_secondsGaugeTemps écoulé depuis la dernière exécution d'une tâchetask_name, queue_name

API publique

MétriqueTypeDescriptionDimensions
gim_public_api_quota_totalGaugeUtilisation maximale autorisée de l'APIAccount
gim_public_api_usage_totalGaugeUtilisation actuelle de l'APIAccount
gim_public_api_token_totalGaugeTokens d'API actifsAccount, Type
Santé du système
MétriqueCe qu'il faut surveiller
gim_celery_queue_lengthL'augmentation du backlog de la file au fil du temps est le premier signe de saturation du système.
gim_celery_active_consumer_countUne baisse du nombre de workers signale des problèmes de disponibilité.
gim_postgres_used_disk_bytesSurveillez la pression sur le disque avant qu'elle ne devienne critique.
gim_redis_used_memory_bytes / gim_redis_available_memory_bytesUn ratio élevé indique une pression sur la mémoire du cache.
gim_periodic_task_not_run_for_secondsComparez avec gim_periodic_task_period_seconds pour détecter les tâches bloquées.
API et intégrations
MétriqueCe qu'il faut surveiller
gim_http_request_failure_totalFiltrez par status_code pour repérer les pics de taux d'erreur (en particulier les 5xx).
gim_http_request_view_duration_secondsSuivez la latence de l'API (P95/P99) pour détecter les ralentissements.
gim_health_check_result_countFiltrez par status=not_ok pour détecter les intégrations défaillantes.
Exemples de requêtes PromQL
# Celery queue saturation (tasks per worker)
gim_celery_queue_length / gim_celery_active_consumer_count

# HTTP 5xx error rate over the last 5 minutes
rate(gim_http_request_failure_total{status_code=~"5.."}[5m])

# API latency P95 over the last 5 minutes
histogram_quantile(0.95, rate(gim_http_request_view_duration_seconds_bucket[5m]))

# Redis memory utilization (%)
gim_redis_used_memory_bytes / (gim_redis_used_memory_bytes + gim_redis_available_memory_bytes) * 100

# Detect stalled periodic tasks (not run for 2x their expected period)
gim_periodic_task_not_run_for_seconds > 2 * gim_periodic_task_period_seconds
Exemples de règles d'alerte

Voici des règles d'alerte Prometheus de départ que vous pouvez adapter à votre environnement :

groups:
- name: gitguardian
rules:
- alert: CeleryQueueBacklog
expr: gim_celery_queue_length > 100
for: 5m
annotations:
summary: "Queue {{ $labels.queue_name }} has {{ $value }} pending tasks"

- alert: RedisMemoryPressure
expr: >
gim_redis_used_memory_bytes
/ (gim_redis_used_memory_bytes + gim_redis_available_memory_bytes) > 0.85
for: 10m

- alert: PeriodicTaskStalled
expr: gim_periodic_task_not_run_for_seconds > 2 * gim_periodic_task_period_seconds
for: 5m

- alert: HighHTTPErrorRate
expr: rate(gim_http_request_failure_total{status_code=~"5.."}[5m]) > 0.1
for: 5m
Visualiser les métriques avec Grafana

GitGuardian ne fournit pas de tableaux de bord Grafana préconstruits, mais toutes les métriques gim_* sont des métriques Prometheus standard et fonctionnent avec n'importe quelle instance Grafana connectée à votre serveur Prometheus.

Pour commencer :

  1. Ajoutez votre serveur Prometheus en tant que source de données Grafana.
  2. Créez des panneaux à l'aide des requêtes PromQL ci-dessus.
  3. Organisez les panneaux en lignes : System health (files d'attente, Redis, Postgres, tâches périodiques) et API & Integrations (taux d'erreur, contrôles de santé).

Activer ou désactiver les métriques applicatives

Les métriques applicatives sont désactivées par défaut. Deux étapes sont nécessaires pour activer les métriques applicatives :

  • autoriser la collecte des métriques par l'application
  • activer l'export Prometheus

Autoriser la collecte des métriques

Pour autoriser la collecte des métriques, vous devez vous rendre dans la section Preferences de l'Admin Area, cocher le feature flag prometheus_metrics_active et enregistrer les paramètres.

Activate Applicative Metrics

Pour la désactiver, vous devez décocher ce paramètre et enregistrer les paramètres.

Installer Prometheus Operator

Les métriques sont collectées par Prometheus à l'aide du Prometheus Operator.

Pour les Existing Clusters, vous devez l'installer manuellement (documentation d'installation).

Activer l'export Prometheus avec KOTS

Pour créer les ressources d'exportation et permettre la découverte automatique, vous devez vous rendre dans la KOTS Admin Console et cocher la case Activate Prometheus Exporter dans la section Prometheus de la section de configuration.

Activate Applicative Metrics

Enregistrez ensuite la configuration, puis Deploy l'application pour appliquer la nouvelle configuration.

Pour la désactiver, vous devez décocher ce paramètre, enregistrer la configuration et l'appliquer via un nouveau déploiement.

Activer l'export Prometheus avec Helm

L'exporteur de métriques applicatives peut être activé en définissant observability.exporters.webAppExporter.enabled=true dans le fichier values.

observability:
exporters:
webAppExporter:
enabled: true

Veuillez noter que l'application Helm propose également un Celery Exporter permettant de surveiller plusieurs métriques Celery comme le « nombre de tâches actives par file ». La liste complète des métriques est disponible ici.

Vous pouvez activer le Celery Exporter dans votre fichier values :

observability:
exporters:
webAppExporter:
enabled: true
statefulAppExporter:
enabled: true

Si vous utilisez Prometheus Operator, vous pouvez utiliser le Service Monitor fourni pour la découverte automatique de l'exporteur par Prometheus :

observability:
exporters:
webAppExporter:
enabled: true
statefulAppExporter:
enabled: true
serviceMonitors:
enabled: true

Sinon, vous pouvez scraper les exporteurs manuellement.

  • Les métriques applicatives peuvent être scrapées depuis le service app-exporter à : http://app-exporter:9808/metrics
  • Les métriques Celery peuvent être scrapées depuis le service celery-exporter à : http://celery-exporter:9808/metrics

Comment collecter les métriques

Sur les Existing Clusters, Prometheus doit être installé et configuré manuellement. Si l'Operator Kube-Prometheus est utilisé, toutes les métriques applicatives seront automatiquement listées grâce au service de découverte de l'Operator Kube-Prometheus.

Sinon, une configuration manuelle peut être nécessaire. La découverte des métriques applicatives est possible via le service headless app-monitoring. Ce service expose un pod exporter servant les métriques à http://exporter-xxxxx-xxxxx:9808/metrics

Données d'utilisation

GitGuardian collecte des données d'utilisation pour améliorer l'expérience utilisateur et le support. Elle peut être facilement désactivée en ajustant le paramètre custom_telemetry_active situé dans la section preferences de l'Admin Area.

info

Pourquoi conserver les données d'utilisation activées ?

  • Amélioration continue du produit : les données d'utilisation nous aident grandement à comprendre comment notre application est utilisée dans divers environnements. Cela nous permet de cibler spécifiquement les domaines nécessitant des améliorations et d'orienter nos efforts de test. Cela garantit que notre produit évolue pour répondre efficacement aux besoins de nos utilisateurs tout en contribuant à une meilleure qualité et stabilité.

  • Support ciblé et efficace : en cas de problèmes techniques, les données d'utilisation permettent à GitGuardian d'identifier et de résoudre les problèmes beaucoup plus rapidement. Cela signifie une réduction des temps d'arrêt pour vous et une meilleure expérience utilisateur globale.

  • Sécurité et confidentialité : nous tenons à vous rassurer sur le fait que la confidentialité et la sécurité des données sont notre priorité absolue. Nous ne collectons aucune donnée personnelle ou sensible. Notre objectif est uniquement d'améliorer l'expérience utilisateur et les performances de notre produit.

Voici les catégories et métriques que nous collectons :

  • Replicated

    • Diverses métriques liées au déploiement telles que l'état du cloud, la version et le temps de fonctionnement
  • System

    • Fournisseur SSO
    • Type de passerelle réseau
    • État de la CA personnalisée et du proxy
    • État d'activation des métriques applicatives Prometheus
  • Users & Teams

    • Nombre d'invités en attente, d'utilisateurs enregistrés avec différents niveaux d'accès, d'utilisateurs actifs.
  • Billing

    • Nombre de développeurs contributeurs comptabilisés dans votre licence, et le nombre exclu du décompte
    • Les deux mêmes décomptes ventilés par type de VCS (Azure DevOps, Bitbucket Cloud, Bitbucket Data Center, Gerrit, GitHub, GitHub Enterprise, GitLab)

    Il s'agit de décomptes agrégés d'adresses e-mail distinctes d'auteurs de commits. Les adresses e-mail elles-mêmes ne sont jamais transmises.

  • Historical Scan

    • Nombre de scans historiques annulés, échoués et terminés
    • Durées par percentile des scans historiques
    • Nombre de secrets trouvés par jour et de scans de sources par jour dans les scans historiques
    • Nombre de scans historiques considérés comme trop volumineux
  • Integrations

    • Nombre d'instances, d'installations, de projets, de sites pour les VCS et autres sources de données
    • Nombre de sources surveillées et non surveillées, ainsi que les percentiles de taille des sources et les utilisateurs estimés par VCS
  • Secret

    • Nombre de détecteurs désactivés par catégorie, retours enregistrés et non enregistrés, et diverses métriques liées aux vérifications de validité des secrets et aux incidents
  • Public API

    • Nombre d'appels pour les scans de secrets ggshield, y compris les différents modes et dépôts
    • Nombre de tokens d'accès personnels et de comptes de service actifs
    • Nombre d'appels à l'API publique