7.2.10.1.1. Présentation

Le composant vitam-prometheus permet de stocker et visualiser à minima les métriques techniques et métier collectées depuis les différents composants de la sloution VITAM. Il permet aussi d’explorer les données en appliquant différentes fonctions statistiques.

Si vous disposez déjà d’une solution de supervision promehteus, il est possible de désactiver son installation avec la solution vitam. Il suffit de modifier la varible prometheus.server.enabled: false. Cette modification permet aussi de désinstaller le serveur prometheus s’il est déjà installé par la solution VITAM.

La solution VITAM, par defaut, déploie une seule instance de ce service. Veuillez vous référer à la documentation officielle prometheus pour pouvoir scaller le déploiement de cet outil.

7.2.10.1.1.1. Générer le fichier de configuration prometheus.yml

Dans le cas ou vous disposez d’un serveur prometheus, vous n’avez qu’à générer la configuration `prometheus.yml depuis l’inventaire de l’environnement de la solution VITAM. Pour générer uniquement la configuration il faut executer la ligne de commande suivante :

Depuis le serveur ansible, aller au dossier path_to/vitam/deploiement/

# Spécifier le repértoire de sortie dans le fichier cots_var.yml {{ prometheus.prometheus_config_file_target_directory: path_dir_output }}
ansible-playbook -i environments/hosts ansible-vitam-extra/prometheus.yml --tags gen_prometheus_config --ask-vault

Le fichier de configuration sera généré dans le répertoire de sortie avec le nom prometheus.yml. Il suffit de récupérer les parties nécessaires, comme par exemple scrape_configs et les intégrer dans la configuration du serveur prometheus déjà existant.

Avertissement

Les flux réseaux entre le serveur prometheus existant et les différents machines hébergeant le solution VITAM doivent être ouvets sur la patte d’administration

7.2.10.1.1.2. Intégrer de nouvelle règles d’alertes

Déposez les fichiers des règles dans le dossier: ../../../../../../deployment/ansible-vitam-extra/roles/prometheus-server/rules/ Ensuite lancez la commande suivante:

ansible-playbook -i environments/hosts ansible-vitam-extra/prometheus.yml --ask-vault

Avertissement

Si la variable prometheus.server.enabled dans cots_var.yml est false ce playbook n’aura aucun effet.

7.2.10.1.1.2.1. Exemple de fichiers de règles

  • Règle sur le disque
groups:
  - name: system_disk
    rules:
      - alert: OutOfDiskSpace
        expr: (node_filesystem_avail_bytes{mountpoint="/rootfs"} * 100) / node_filesystem_size_bytes{mountpoint="/rootfs"} < 15
        for: 10m
        labels:
          severity: warning
        annotations:
          description: |-
            Disk is almost full (< 10% left)
              VALUE = {{ $value }}
              LABELS: {{ $labels }}
          summary: Out of disk space (instance {{ $labels.instance }})

      - alert: OutOfDiskSpace
        expr: (node_filesystem_avail_bytes{mountpoint="/rootfs"} * 100) / node_filesystem_size_bytes{mountpoint="/rootfs"} < 5
        for: 5m
        labels:
          severity: critical
        annotations:
          description: |-
            Disk is almost full (< 10% left)
              VALUE = {{ $value }}
              LABELS: {{ $labels }}
          summary: Out of disk space (instance {{ $labels.instance }})
  • Règle sur le host
groups:
- name: host
  rules:
  - alert: high_cpu_load
    expr: node_load1 > 1.5
    for: 30s
    labels:
      severity: warning
    annotations:
      summary: "Server under high load"
      description: "Host is under high load, the avg load 1m is at {{ $value}}. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}."

  - alert: high_memory_load
    expr: (sum(node_memory_MemTotal) - sum(node_memory_MemFree + node_memory_Buffers + node_memory_Cached) ) / sum(node_memory_MemTotal) * 100 > 85
    for: 30s
    labels:
      severity: warning
    annotations:
      summary: "Server memory is almost full"
      description: "Host memory usage is {{ humanize $value}}%. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}."

  - alert: high_storage_load
    expr: (node_filesystem_size{fstype="aufs"} - node_filesystem_free{fstype="aufs"}) / node_filesystem_size{fstype="aufs"}  * 100 > 85
    for: 30s
    labels:
      severity: warning
    annotations:
      summary: "Server storage is almost full"
      description: "Host storage usage is {{ humanize $value}}%. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}."
  • Règle sur l’utilisation de la mémoire
groups:
  - name: system_disk
    rules:
      - alert: MemoryUsage
        expr: (100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes)) > 85
        for: 10m
        labels:
          severity: warning
        annotations:
          description: RAM of {{$labels.instance}} has been too used for more than 10 minutes
          summary: Instance {{$labels.instance}} start to use too many memory

      - alert: MemoryUsage
        expr: (100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes)) > 90
        for: 10m
        labels:
          severity: critical
        annotations:
          description: RAM of {{$labels.instance}} has been too used for more than 10 minutes
          summary: Instance {{$labels.instance}} is in danger