7.2.10.1.1. Présentation

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

La solution VITAM, par défaut, 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 exécuter la ligne de commande suivante :

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

# Spécifier le répertoire de sortie dans le fichier cots_var.yml {{ prometheus.prometheus_config_file_target_directory: path_dir_output }}
ansible-playbook ansible-vitam-extra/prometheus.yml -i environments/hosts.<environnement> --ask-vault-pass --tags gen_prometheus_config

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 ouverts 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 ansible-vitam-extra/prometheus.yml -i environments/hosts.<environnement> --ask-vault-pass

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 }})

  - name: vitam_disk
    rules:
      - alert: OutOfDiskSpace
        expr: (node_filesystem_avail_bytes{mountpoint="/vitam"} * 100) / node_filesystem_size_bytes{mountpoint="/vitam"} < 20
        for: 10m
        labels:
          severity: warning
        annotations:
          description: |-
            Disk is almost full (< 20% left)
              VALUE = {{ $value }}
              LABELS: {{ $labels }}
          summary: Out of disk space (instance {{ $labels.instance }})

      - alert: OutOfDiskSpace
        expr: (node_filesystem_avail_bytes{mountpoint="/vitam"} * 100) / node_filesystem_size_bytes{mountpoint="/vitam"} < 5
        for: 5m
        labels:
          severity: critical
        annotations:
          description: |-
            Disk is almost full (< 5% 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
  • Règle sur erreur bloquante dans une offre froide
groups:
  - name: tape_offer
    rules:
      - alert: DriveWorkerKO
        expr: vitam_offer_tape_workers_interrupted > 0
        for: 1s
        labels:
          severity: critical
        annotations:
          description: |-
            At least one tape offer drive worker is KO
          summary: Drive worker KO (offerId {{$labels.offerId}})