doc-locale/fr-fr/administration/monitoring/prometheus/_index.md
{{< details >}}
{{< /details >}}
Prometheus est un puissant service de surveillance de séries temporelles, offrant une plateforme flexible pour surveiller GitLab et d'autres produits logiciels.
GitLab fournit une surveillance prête à l'emploi avec Prometheus, donnant accès à une surveillance de haute qualité des séries temporelles des services GitLab.
Prometheus et les différents exportateurs répertoriés sur cette page sont intégrés dans les packages Linux. Consultez la documentation de chaque exportateur pour connaître la date à laquelle ils ont été ajoutés. Pour les installations auto-compilées, vous devez les installer vous-même. Au fil des releases successives, des métriques GitLab supplémentaires sont capturées.
Les services Prometheus sont activés par défaut.
Prometheus et ses exportateurs n'authentifient pas les utilisateurs et sont accessibles à toute personne pouvant y accéder.
Prometheus fonctionne en se connectant périodiquement à des sources de données et en collectant leurs métriques de performance via les différents exportateurs. Pour afficher et utiliser les données de surveillance, vous pouvez soit vous connecter directement à Prometheus, soit utiliser un outil de tableau de bord comme Grafana.
Pour les installations auto-compilées, vous devez l'installer et le configurer vous-même.
Prometheus et ses exportateurs sont activés par défaut. Prometheus s'exécute en tant qu'utilisateur gitlab-prometheus et écoute sur http://localhost:9090. Par défaut, Prometheus n'est accessible que depuis le serveur GitLab lui-même. Chaque exportateur est automatiquement configuré comme cible de surveillance pour Prometheus, sauf s'il est désactivé individuellement.
Pour désactiver Prometheus et l'ensemble de ses exportateurs, ainsi que tout exportateur ajouté à l'avenir :
Modifiez /etc/gitlab/gitlab.rb
Ajoutez ou trouvez et décommentez les lignes suivantes, en vous assurant qu'elles sont définies sur false :
prometheus_monitoring['enable'] = false
sidekiq['metrics_enabled'] = false
# Already set to `false` by default, but you can explicitly disable it to be sure
puma['exporter_enabled'] = false
Enregistrez le fichier et reconfigurez GitLab pour que les modifications prennent effet.
[!warning] Vous pouvez modifier le port d'écoute de Prometheus, mais vous ne devriez pas le faire. Cette modification pourrait affecter ou entrer en conflit avec d'autres services s'exécutant sur le serveur GitLab. Procédez à vos risques et périls.
Pour accéder à Prometheus depuis l'extérieur du serveur GitLab, modifiez l'adresse/le port d'écoute de Prometheus :
Modifiez /etc/gitlab/gitlab.rb
Ajoutez ou trouvez et décommentez la ligne suivante :
prometheus['listen_address'] = 'localhost:9090'
Remplacez localhost:9090 par l'adresse ou le port sur lequel vous souhaitez que Prometheus écoute. Si vous souhaitez autoriser l'accès à Prometheus depuis des hôtes autres que localhost, omettez l'hôte ou utilisez 0.0.0.0 pour autoriser l'accès public :
prometheus['listen_address'] = ':9090'
# or
prometheus['listen_address'] = '0.0.0.0:9090'
Enregistrez le fichier et reconfigurez GitLab pour que les modifications prennent effet
Vous pouvez configurer des cibles de scrape supplémentaires pour Prometheus intégré au package Linux en modifiant prometheus['scrape_configs'] dans /etc/gitlab/gitlab.rb à l'aide de la syntaxe de configuration des cibles de scrape Prometheus.
Voici un exemple de configuration pour scraper http://1.1.1.1:8060/probe?param_a=test¶m_b=additional_test :
prometheus['scrape_configs'] = [
{
'job_name': 'custom-scrape',
'metrics_path': '/probe',
'params' => {
'param_a' => ['test'],
'param_b' => ['additional_test'],
},
'static_configs' => [
'targets' => ['1.1.1.1:8060'],
],
},
]
Vous pouvez utiliser le package Linux pour configurer un nœud de surveillance autonome exécutant Prometheus. Un Grafana externe peut être configuré sur ce nœud de surveillance pour afficher des tableaux de bord.
Un nœud de surveillance autonome est recommandé pour les déploiements GitLab avec plusieurs nœuds.
Les étapes ci-dessous sont le minimum nécessaire pour configurer un nœud de surveillance exécutant Prometheus avec le package Linux :
Connectez-vous en SSH au nœud de surveillance.
Installez le package Linux souhaité en suivant steps 1 and 2 de la page de téléchargements GitLab, mais ne suivez pas les étapes restantes.
Assurez-vous de collecter les adresses IP ou les enregistrements DNS des nœuds du serveur Consul, pour l'étape suivante.
Modifiez /etc/gitlab/gitlab.rb et ajoutez le contenu suivant :
roles ['monitoring_role']
external_url 'http://gitlab.example.com'
# Prometheus
prometheus['listen_address'] = '0.0.0.0:9090'
prometheus['monitor_kubernetes'] = false
# Enable service discovery for Prometheus
consul['enable'] = true
consul['monitoring_service_discovery'] = true
consul['configuration'] = {
retry_join: %w(10.0.0.1 10.0.0.2 10.0.0.3), # The addresses can be IPs or FQDNs
}
# Nginx - For Grafana access
nginx['enable'] = true
Exécutez sudo gitlab-ctl reconfigure pour compiler la configuration.
L'étape suivante consiste à indiquer à tous les autres nœuds où se trouve le nœud de surveillance :
Modifiez /etc/gitlab/gitlab.rb, puis ajoutez, ou trouvez et décommentez la ligne suivante :
# can be FQDN or IP
gitlab_rails['prometheus_address'] = '10.0.0.1:9090'
Où 10.0.0.1:9090 est l'adresse IP et le port du nœud Prometheus.
Enregistrez le fichier et reconfigurez GitLab pour que les modifications prennent effet.
Une fois la surveillance par Service Discovery activée avec consul['monitoring_service_discovery'] = true, assurez-vous que prometheus['scrape_configs'] n'est pas défini dans /etc/gitlab/gitlab.rb. La définition simultanée de consul['monitoring_service_discovery'] = true et prometheus['scrape_configs'] dans /etc/gitlab/gitlab.rb entraîne des erreurs.
[!warning] Prometheus et la plupart des exportateurs ne prennent pas en charge l'authentification. Nous ne recommandons pas de les exposer en dehors du réseau local.
Quelques modifications de configuration sont nécessaires pour permettre à GitLab d'être surveillé par un serveur Prometheus externe.
Pour utiliser un serveur Prometheus externe :
Modifiez /etc/gitlab/gitlab.rb.
Désactivez Prometheus intégré :
prometheus['enable'] = false
Configurez l'exportateur de chaque service intégré pour écouter sur une adresse réseau, par exemple :
node_exporter['listen_address'] = '0.0.0.0:9100'
gitlab_workhorse['prometheus_listen_addr'] = "0.0.0.0:9229"
# Rails nodes
gitlab_exporter['listen_address'] = '0.0.0.0'
gitlab_exporter['listen_port'] = '9168'
registry['debug_addr'] = '0.0.0.0:5001'
# Sidekiq nodes
sidekiq['listen_address'] = '0.0.0.0'
# Redis nodes
redis_exporter['listen_address'] = '0.0.0.0:9121'
# PostgreSQL nodes
postgres_exporter['listen_address'] = '0.0.0.0:9187'
# Gitaly nodes
gitaly['configuration'] = {
# ...
prometheus_listen_addr: '0.0.0.0:9236',
}
# Pgbouncer nodes
pgbouncer_exporter['listen_address'] = '0.0.0.0:9188'
Installez et configurez une instance Prometheus dédiée, si nécessaire, en utilisant les instructions d'installation officielles.
Sur l'ensemble des serveurs GitLab Rails (Puma, Sidekiq), définissez l'adresse IP et le port d'écoute du serveur Prometheus. Par exemple :
gitlab_rails['prometheus_address'] = '192.168.0.1:9090'
Pour scraper les métriques NGINX, vous devez également configurer NGINX pour autoriser l'adresse IP du serveur Prometheus. Par exemple :
nginx['status']['options'] = {
"server_tokens" => "off",
"access_log" => "off",
"allow" => "192.168.0.1",
"deny" => "all",
}
Vous pouvez également spécifier plusieurs adresses IP si vous avez plusieurs serveurs Prometheus :
nginx['status']['options'] = {
"server_tokens" => "off",
"access_log" => "off",
"allow" => ["192.168.0.1", "192.168.0.2"],
"deny" => "all",
}
Pour autoriser le serveur Prometheus à récupérer des données depuis le point de terminaison des métriques GitLab, ajoutez l'adresse IP du serveur Prometheus à la liste d'autorisation IP de surveillance :
gitlab_rails['monitoring_whitelist'] = ['127.0.0.0/8', '192.168.0.1']
Puisque nous configurons l'exportateur de chaque service intégré pour écouter sur une adresse réseau, mettez à jour le pare-feu de l'instance pour n'autoriser que le trafic provenant de votre IP Prometheus pour les exportateurs activés. Une liste de référence complète des services d'exportateur et de leurs ports respectifs est disponible.
Reconfigurez GitLab pour appliquer les modifications.
Modifiez le fichier de configuration du serveur Prometheus.
Ajoutez les exportateurs de chaque nœud à la configuration des cibles de scrape du serveur Prometheus. Par exemple, un exemple d'extrait utilisant static_configs :
scrape_configs:
- job_name: nginx
static_configs:
- targets:
- 1.1.1.1:8060
- job_name: redis
static_configs:
- targets:
- 1.1.1.1:9121
- job_name: postgres
static_configs:
- targets:
- 1.1.1.1:9187
- job_name: node
static_configs:
- targets:
- 1.1.1.1:9100
- job_name: gitlab-workhorse
static_configs:
- targets:
- 1.1.1.1:9229
- job_name: gitlab-rails
metrics_path: "/-/metrics"
scheme: https
static_configs:
- targets:
- 1.1.1.1
- job_name: gitlab-sidekiq
static_configs:
- targets:
- 1.1.1.1:8082
- job_name: gitlab_exporter_database
metrics_path: "/database"
static_configs:
- targets:
- 1.1.1.1:9168
- job_name: gitlab_exporter_sidekiq
metrics_path: "/sidekiq"
static_configs:
- targets:
- 1.1.1.1:9168
- job_name: gitaly
static_configs:
- targets:
- 1.1.1.1:9236
- job_name: registry
static_configs:
- targets:
- 1.1.1.1:5001
[!warning] Le job
gitlab-railsdans l'extrait suppose que GitLab est accessible via HTTPS. Si votre déploiement n'utilise pas HTTPS, la configuration du job est adaptée pour utiliser le schémahttpet le port 80.
Rechargez le serveur Prometheus.
Prometheus dispose de plusieurs indicateurs personnalisés pour configurer le stockage local :
storage.tsdb.retention.time : date de suppression des anciennes données. Par défaut, 15d. Remplace storage.tsdb.retention si cet indicateur est défini sur une valeur autre que la valeur par défaut.storage.tsdb.retention.size : (expérimental) nombre maximal d'octets de blocs de stockage à conserver. Les données les plus anciennes sont supprimées en premier. La valeur par défaut est 0 (désactivé). Cet indicateur est expérimental et peut changer dans les futures releases. Unités prises en charge : B, KB, MB, GB, TB, PB, EB. Par exemple, 512MB.Pour configurer la taille de rétention du stockage :
Modifiez /etc/gitlab/gitlab.rb :
prometheus['flags'] = {
'storage.tsdb.path' => "/var/opt/gitlab/prometheus/data",
'storage.tsdb.retention.time' => "7d",
'storage.tsdb.retention.size' => "2GB",
'config.file' => "/var/opt/gitlab/prometheus/prometheus.yml"
}
Reconfigurez GitLab :
sudo gitlab-ctl reconfigure
Vous pouvez accéder à http://localhost:9090 pour le tableau de bord que Prometheus propose par défaut.
Si SSL a été activé sur votre instance GitLab, vous ne pourrez peut-être pas accéder à Prometheus sur le même navigateur que GitLab si vous utilisez le même FQDN en raison de HSTS. Un projet de test GitLab existe pour fournir un accès, mais dans l'intervalle, il existe quelques solutions de contournement : utiliser un FQDN séparé, utiliser l'IP du serveur, utiliser un navigateur séparé pour Prometheus, réinitialiser HSTS ou utiliser un proxy NGINX.
Les données de performance collectées par Prometheus peuvent être consultées directement dans la console Prometheus ou via un outil de tableau de bord compatible. L'interface Prometheus fournit un langage de requête flexible pour travailler avec les données collectées et vous permet de visualiser les résultats. Pour un tableau de bord plus complet, Grafana peut être utilisé et dispose d'un support officiel pour Prometheus.
Vous trouverez ci-dessous quelques exemples de requêtes Prometheus pouvant être utilisées.
[!note] Ces exemples peuvent ne pas fonctionner sur toutes les configurations. Des ajustements supplémentaires peuvent être nécessaires.
1 - avg without (mode,cpu) (rate(node_cpu_seconds_total{mode="idle"}[5m]))((node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) or ((node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) / node_memory_MemTotal_bytes)) * 100rate(node_network_transmit_bytes_total{device!="lo"}[5m])rate(node_network_receive_bytes_total{device!="lo"}[5m])sum by (instance) (rate(node_disk_reads_completed_total[1m]))sum by (instance) (rate(node_disk_writes_completed_total[1m]))sum(irate(gitlab_transaction_duration_seconds_count{controller!~'HealthController|MetricsController'}[1m])) by (controller, action)Grafana vous permet d'importer des métriques de performance Prometheus comme source de données et de les afficher sous forme de graphiques et de tableaux de bord, ce qui est utile pour la visualisation.
Pour ajouter un tableau de bord Prometheus pour une installation GitLab sur un seul serveur :
Prometheus.GET.GitLab surveille ses propres métriques de service interne et les rend disponibles au point d'arrivée /-/metrics. Contrairement aux autres exportateurs, ce point de terminaison nécessite une authentification car il est disponible sur la même URL et le même port que le trafic utilisateur.
En savoir plus sur les métriques GitLab.
De nombreuses dépendances GitLab intégrées dans le package Linux sont préconfigurées pour exporter des métriques Prometheus.
L'exportateur de nœud vous permet de mesurer diverses ressources de la machine, telles que la mémoire, le disque et l'utilisation du CPU.
En savoir plus sur l'exportateur de nœud.
L'exportateur web est un serveur de métriques dédié qui permet de séparer le trafic des utilisateurs finaux et le trafic Prometheus en deux applications distinctes pour améliorer les performances et la disponibilité.
En savoir plus sur l'exportateur web.
L'exportateur Redis vous permet de mesurer diverses métriques Redis.
En savoir plus sur l'exportateur Redis.
L'exportateur PostgreSQL vous permet de mesurer diverses métriques PostgreSQL.
En savoir plus sur l'exportateur PostgreSQL.
L'exportateur PgBouncer vous permet de mesurer diverses métriques PgBouncer.
En savoir plus sur l'exportateur PgBouncer.
L'exportateur de Registry vous permet de mesurer diverses métriques de Registry.
En savoir plus sur l'exportateur Registry.
L'exportateur GitLab vous permet de mesurer diverses métriques GitLab, extraites de Redis et de la base de données.
En savoir plus sur l'exportateur GitLab.
/var/opt/gitlab/prometheus consomme trop d'espace disque {#varoptgitlabprometheus-consumes-too-much-disk-space}Si vous n'utilisez pas la surveillance Prometheus :
/var/opt/gitlab/prometheus.Si vous utilisez la surveillance Prometheus :
Arrêtez Prometheus (la suppression de données pendant son exécution peut entraîner une corruption des données) :
gitlab-ctl stop prometheus
Supprimez les données sous /var/opt/gitlab/prometheus/data.
Redémarrez le service :
gitlab-ctl start prometheus
Vérifiez que le service est opérationnel :
gitlab-ctl status prometheus
Facultatif. Configurez la taille de rétention du stockage.
Si le nœud de surveillance ne reçoit aucune donnée, vérifiez que les exportateurs capturent bien des données :
curl "http[s]://localhost:<EXPORTER LISTENING PORT>/metrics"
ou
curl "http[s]://localhost:<EXPORTER LISTENING PORT>/-/metrics"