Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Documentation de SUSE Enterprise Storage 7 / Guide d'opérations et d'administration / Opération de grappe / Surveillance et alertes
S'applique à SUSE Enterprise Storage 7

16 Surveillance et alertes

Dans SUSE Enterprise Storage 7, cephadm déploie une pile de surveillance et d'alerte. Les utilisateurs doivent soit définir les services (p. ex., Prometheus, Alertmanager et Grafana) qu'ils souhaitent déployer à l'aide de cephadm dans un fichier de configuration YAML, soit utiliser l'interface de ligne de commande pour les déployer. En cas de déploiement de plusieurs services du même type, une configuration hautement disponible est déployée. Le service Node exporter fait figure d'exception à cette règle.

Les services de surveillance suivants peuvent être déployés à l'aide de cephadm :

  • Prometheus est le toolkit de surveillance et d'alerte. Il collecte les données fournies par les exportateurs Prometheus et déclenche les alertes préconfigurées lorsque les seuils prédéfinis sont atteints.

  • Alertmanager traite les alertes envoyées par le serveur Prometheus. Il déduplique les alertes, les regroupe et les achemine vers le récepteur approprié. Par défaut, Ceph Dashboard est automatiquement configuré en tant que récepteur.

  • Grafana est le logiciel de visualisation et d'alerte. La fonctionnalité d'alerte de Grafana n'est pas utilisée par cette pile de surveillance. Pour les alertes, le service Alertmanager est utilisé.

  • Node exporter est un exportateur pour Prometheus qui fournit des données à propos du noeud sur lequel il est installé. Il est recommandé d'installer Node exporter sur tous les noeuds.

Le module Prometheus Manager fournit un exportateur Prometheus pour transmettre les compteurs de performance Ceph à partir du point de collecte dans ceph-mgr.

La configuration de Prometheus, y compris les cibles de récupération (mesures fournissant des daemons), est définie automatiquement par cephadm. cephadm déploie également une liste d'alertes par défaut, par exemple health error (erreur de santé), 10% OSDs down (10 % OSD arrêtés) ou pgs inactive (GP inactifs).

Par défaut, le trafic vers Grafana est chiffré par TLS. Vous pouvez fournir votre propre certificat TLS ou utiliser un certificat auto-signé. Si aucun certificat personnalisé n'a été configuré avant le déploiement de Grafana, un certificat auto-signé est automatiquement créé et configuré pour Grafana.

Les certificats personnalisés pour Grafana peuvent être configurés à l'aide des commandes suivantes :

cephuser@adm >  ceph config-key set mgr/cephadm/grafana_key -i $PWD/key.pem
cephuser@adm >  ceph config-key set mgr/cephadm/grafana_crt -i $PWD/certificate.pem

Alertmanager gère les alertes envoyées par le serveur Prometheus. Il s'occupe de les dédupliquer, de les regrouper et de les acheminer vers le bon récepteur. Les alertes peuvent être désactivées à l'aide d'Alertmanager, mais les silences peuvent également être gérés au moyen de Ceph Dashboard.

Il est recommandé de déployer Node exporter sur tous les noeuds. Pour ce faire, vous pouvez utiliser le fichier monitoring.yaml avec le type de service node-exporter. Pour plus d'informations sur le déploiement des services, reportez-vous au Section 5.4.3.8, « Déploiement de la pile de surveillance ».

16.1 Configuration d'images personnalisées ou locales

Astuce
Astuce

Cette section explique comment modifier la configuration des images de conteneur utilisées lors du déploiement ou de la mise à jour de services. Elle n'inclut pas les commandes nécessaires au déploiement ou au redéploiement des services.

La méthode recommandée pour déployer la pile de surveillance consiste à appliquer sa spécification comme décrit dans le Section 5.4.3.8, « Déploiement de la pile de surveillance ».

Pour déployer des images de conteneur personnalisées ou locales, celles-ci doivent être définies dans cephadm. Pour ce faire, vous devez exécuter la commande suivante :

cephuser@adm > ceph config set mgr mgr/cephadm/OPTION_NAME VALUE

Dans laquelle OPTION_NAME correspond à l'un des noms suivants :

  • container_image_prometheus

  • container_image_node_exporter

  • container_image_alertmanager

  • container_image_grafana

Si aucune option n'est définie ou si le paramètre a été supprimé, les images suivantes sont utilisées comme VALUE :

  • registry.suse.com/caasp/v4.5/prometheus-server:2.18.0

  • registry.suse.com/caasp/v4.5/prometheus-node-exporter:0.18.1

  • registry.suse.com/caasp/v4.5/prometheus-alertmanager:0.16.2

  • registry.suse.com/ses/7/ceph/grafana:7.0.3

Par exemple :

cephuser@adm > ceph config set mgr mgr/cephadm/container_image_prometheus prom/prometheus:v1.4.1
Note
Note

Si vous définissez une image personnalisée, la valeur par défaut sera remplacée (mais pas écrasée). La valeur par défaut change lorsque des mises à jour sont disponibles. Si vous définissez une image personnalisée, vous ne pourrez pas mettre à jour automatiquement le composant pour lequel vous avez configuré l'image personnalisée. Vous devez mettre à jour manuellement la configuration (nom de l'image et balise) pour pouvoir installer des mises à jour.

Si vous choisissez plutôt de suivre les recommandations, vous pouvez réinitialiser l'image personnalisée que vous avez définie auparavant, après quoi la valeur par défaut sera de nouveau utilisée. Utilisez ceph config rm pour réinitialiser l'option de configuration :

cephuser@adm > ceph config rm mgr mgr/cephadm/OPTION_NAME

Par exemple :

cephuser@adm > ceph config rm mgr mgr/cephadm/container_image_prometheus

16.2 Mise à jour des services de surveillance

Comme indiqué dans la Section 16.1, « Configuration d'images personnalisées ou locales », cephadm est fourni avec les URL des images de conteneur recommandées et testées, lesquelles sont utilisées par défaut.

Si vous mettez à jour les paquetages Ceph, de nouvelles versions de ces URL peuvent être fournies. Cette opération met simplement à jour l'emplacement à partir duquel les images de conteneur sont extraites, mais ne met à jour aucun service.

Une fois les URL des nouvelles images de conteneur mises à jour, que ce soit manuellement comme décrit dans la Section 16.1, « Configuration d'images personnalisées ou locales » ou automatiquement via une mise à jour du paquetage Ceph, les services de surveillance peuvent être mis à jour.

Pour ce faire, utilisez ceph orch redeploy comme suit :

cephuser@adm > ceph orch redeploy node-exporter
cephuser@adm > ceph orch redeploy prometheus
cephuser@adm > ceph orch redeploy alertmanager
cephuser@adm > ceph orch redeploy grafana

Il n'existe actuellement aucune commande unique permettant de mettre à jour tous les services de surveillance. L'ordre dans lequel ces services sont mis à jour n'a pas d'importance.

Note
Note

Si vous utilisez des images de conteneur personnalisées, les URL spécifiées pour les services de surveillance ne seront pas modifiées automatiquement en cas de mise à jour des paquetages Ceph. Si vous avez spécifié des images de conteneur personnalisées, vous devrez indiquer manuellement les URL des nouvelles images de conteneur, notamment si vous utilisez un registre local de conteneurs.

Les URL des images de conteneur recommandées à utiliser sont indiquées dans la Section 16.1, « Configuration d'images personnalisées ou locales ».

16.3 Désactivation de la surveillance

Pour désactiver la pile de surveillance, exécutez les commandes suivantes :

cephuser@adm > ceph orch rm grafana
cephuser@adm > ceph orch rm prometheus --force   # this will delete metrics data collected so far
cephuser@adm > ceph orch rm node-exporter
cephuser@adm > ceph orch rm alertmanager
cephuser@adm > ceph mgr module disable prometheus

16.4 Configuration de Grafana

Le back-end Ceph Dashboard a besoin de l'URL de Grafana pour pouvoir vérifier l'existence des tableaux de bord Grafana avant même que le front-end ne les charge. En raison de la nature de l'implémentation de Grafana dans Ceph Dashboard, cela signifie que deux connexions fonctionnelles sont nécessaires pour pouvoir afficher les graphiques Grafana dans Ceph Dashboard :

  • Le back-end (module Ceph MGR) doit vérifier l'existence du graphique demandé. Si cette requête aboutit, il informe le front-end qu'il peut accéder à Grafana en toute sécurité.

  • Le front-end demande alors les graphiques Grafana directement à partir du navigateur de l'utilisateur à l'aide d'une iframe. L'instance Grafana est accessible directement, sans détour, via Ceph Dashboard.

Cela dit, il se peut qu'en raison de votre environnement, le navigateur de l'utilisateur puisse difficilement accéder directement à l'URL configurée dans Ceph Dashboard. Pour résoudre ce problème, vous pouvez configurer une URL distincte qui sera uniquement utilisée pour indiquer au front-end (le navigateur de l'utilisateur) l'URL à utiliser pour accéder à Grafana.

Pour modifier l'URL renvoyée au front-end, exécutez la commande suivante :

cephuser@adm > ceph dashboard set-grafana-frontend-api-url GRAFANA-SERVER-URL

Si aucune valeur n'est définie pour cette option, elle sera simplement redéfinie sur la valeur de l'option Grafana_API_URL, laquelle est définie automatiquement et mise à jour périodiquement par cephadm. Si elle est définie, elle indiquera au navigateur d'utiliser cette URL pour accéder à Grafana.

16.5 Configuration du module Prometheus Manager

Le module Prometheus Manager est un module intégré à Ceph qui étend les fonctionnalités de Ceph. Le module lit les (méta)données de Ceph concernant son état et sa santé, et fournit à Prometheus les données (récupérées) dans un format exploitable.

Note
Note

Le module Prometheus Manager doit être redémarré pour que les modifications apportées à la configuration soient appliquées.

16.5.1 Configuration de l'interface réseau

Par défaut, le module Prometheus Manager accepte les requêtes HTTP sur le port 9283 sur toutes les adresses IPv4 et IPv6 de l'hôte. Le port et l'adresse d'écoute peuvent être configurés avec ceph config-key set, avec les clés mgr/prometheus/server_addr et mgr/prometheus/server_port. Ce port est inscrit dans le registre de Prometheus.

Pour mettre à jour le paramètre server_addr, exécutez la commande suivante :

cephuser@adm > ceph config set mgr mgr/prometheus/server_addr 0.0.0.0

Pour mettre à jour le paramètre server_port, exécutez la commande suivante :

cephuser@adm > ceph config set mgr mgr/prometheus/server_port 9283

16.5.2 Configuration du paramètre scrape_interval

Par défaut, le module Prometheus Manager est configuré avec un intervalle de récupération de 15 secondes. Nous vous déconseillons d'utiliser un intervalle de récupération inférieur à 10 secondes. Pour configurer un intervalle de récupération différent dans le module Prometheus, définissez le paramètre scrape_interval sur la valeur souhaitée :

Important
Important

Pour fonctionner correctement et ne causer aucun problème, le paramètre scrape_interval de ce module doit toujours être défini de manière à correspondre à l'intervalle de récupération de Prometheus.

cephuser@adm > ceph config set mgr mgr/prometheus/scrape_interval 15

16.5.3 Configuration du cache

Sur les grandes grappes (plus de 1 000 OSD), le temps nécessaire à la récupération des mesures peut devenir considérable. Sans le cache, le module Prometheus Manager peut surcharger le gestionnaire et causer l'arrêt ou l'absence de réponse des instances de Ceph Manager. Le cache est donc activé par défaut et ne peut pas être désactivé, mais cela signifie qu'il peut devenir obsolète. Le cache est considéré comme obsolète lorsque le temps nécessaire à la récupération des mesures à partir de Ceph dépasse l'intervalle de récupération (scrape_interval) configuré.

Dans ce cas-là, un avertissement est consigné et le module :

  • Répond avec un code d'état HTTP 503 (service non disponible).

  • Renvoie le contenu du cache, même s'il est obsolète.

Ce comportement peut être configuré à l'aide des commandes ceph config set.

Pour indiquer au module de répondre avec des données potentiellement obsolètes, configurez-le pour qu'il renvoie :

cephuser@adm > ceph config set mgr mgr/prometheus/stale_cache_strategy return

Pour indiquer au module de répondre avec un message de service non disponible, configurez-le pour échouer :

cephuser@adm > ceph config set mgr mgr/prometheus/stale_cache_strategy fail

16.5.4 Activation de la surveillance des images RBD

Le module Prometheus Manager peut éventuellement collecter des statistiques d'E/S par image RBD en activant des compteurs de performances d'OSD dynamiques. Les statistiques sont recueillies pour toutes les images figurant dans les réserves spécifiées dans le paramètre de configuration mgr/prometheus/rbd_stats_pools.

Le paramètre est une liste d'entrées pool[/namespace] séparées par des virgules ou des espaces. Si l'espace de noms n'est pas spécifié, les statistiques sont collectées pour tous les espaces de noms de la réserve.

Par exemple :

cephuser@adm > ceph config set mgr mgr/prometheus/rbd_stats_pools "pool1,pool2,poolN"

Le module analyse les réserves et espaces de noms spécifiés, établit une liste de toutes les images disponibles et la rafraîchit périodiquement. L'intervalle peut être configuré à l'aide du paramètre mgr/prometheus/rbd_stats_pools_refresh_interval (en secondes) et est de 300 secondes (cinq minutes) par défaut.

Par exemple, si vous avez modifié et défini l'intervalle de synchronisation sur 10 minutes :

cephuser@adm > ceph config set mgr mgr/prometheus/rbd_stats_pools_refresh_interval 600

16.6 Modèle de sécurité de Prometheus

Le modèle de sécurité de Prometheus part du principe que les utilisateurs non approuvés ont accès au noeud d'extrémité HTTP et aux journaux de Prometheus. Les utilisateurs non approuvés ont accès à l'ensemble des (méta)données collectées par Prometheus et contenues dans la base de données, ainsi qu'à diverses informations opérationnelles et de débogage.

Cependant, l'API HTTP de Prometheus est limitée aux opérations en lecture seule. Les configurations ne peuvent pas être modifiées à l'aide de l'API et les secrets ne sont pas exposés. Prometheus dispose par ailleurs de mesures intégrées pour limiter l'impact des attaques par déni de service.

16.7 Webhook SNMP de Prometheus Alertmanager

Si vous voulez être informé des alertes Prometheus via des trappes SNMP, vous pouvez installer le webhook SNMP de Prometheus Alertmanager via cephadm. Pour ce faire, vous devez créer un fichier de spécification de service et de placement incluant le contenu suivant :

Note
Note

Pour plus d'informations sur les fichiers de service et de placement, reportez-vous au Section 5.4.2, « Spécification de service et de placement ».

service_type: container
service_id: prometheus-webhook-snmp
placement:
    ADD_PLACEMENT_HERE
image: registry.suse.com/ses/7/prometheus-webhook-snmp:latest
args:
    - "--publish 9099:9099"
envs:
    - ARGS="--debug --snmp-host=ADD_HOST_GATEWAY_HERE"
    - RUN_ARGS="--metrics"
EOF

Utilisez cette spécification de service pour que le service s'exécute en utilisant ses paramètres par défaut.

Vous devez publier le port sur lequel le récepteur Prometheus écoute en utilisant l'argument de ligne de commande --publish HOST_PORT:CONTAINER_PORT lors de l'exécution du service, car le port n'est pas exposé automatiquement par le conteneur. Pour ce faire, vous pouvez ajouter les lignes suivantes à la spécification :

args:
    - "--publish 9099:9099"

Vous pouvez également connecter le conteneur au réseau hôte en utilisant l'argument de ligne de commande --network=host.

args:
    - "--network=host"

Si le récepteur de trappes SNMP n'est pas installé sur le même hôte que le conteneur, vous devez également spécifier le nom de domaine complet (FQDN) de l'hôte SNMP. Utilisez la passerelle réseau du conteneur pour pouvoir recevoir des trappes SNMP en dehors du conteneur/hôte :

envs:
    - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"

16.7.1 Configuration du service prometheus-webhook-snmp

Le conteneur peut être configuré au moyen de variables d'environnement ou à l'aide d'un fichier de configuration.

Pour les variables d'environnement, utilisez ARGS pour définir les options globales et RUN_ARGS pour les options de commande d'exécution. Vous devez adapter la spécification de service comme suit :

envs:
    - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"
    - RUN_ARGS="--metrics --port=9101"

Pour utiliser un fichier de configuration, la spécification de service doit être adaptée comme suit :

files:
    etc/prometheus-webhook-snmp.conf:
        - "debug: True"
        - "snmp_host: ADD_HOST_GATEWAY_HERE"
        - "metrics: True"
volume_mounts:
    etc/prometheus-webhook-snmp.conf: /etc/prometheus-webhook-snmp.conf

Pour procéder au déploiement, exécutez la commande suivante :

cephuser@adm > ceph orch apply -i SERVICE_SPEC_FILE

Pour plus d'informations, reportez-vous au Section 5.4.3, « Déploiement des services Ceph ».

16.7.2 Configuration de Prometheus Alertmanager pour SNMP

Enfin, Prometheus Alertmanager doit être configuré spécifiquement pour les trappes SNMP. Si ce service n'a pas encore été déployé, créez un fichier de spécification de service. Vous devez remplacer IP_OR_FQDN par l'adresse IP ou le nom de domaine complet de l'hôte sur lequel le webhook SNMP de Prometheus Alertmanager a été installé. Par exemple :

Note
Note

Si vous avez déjà déployé ce service, redéployez-le avec les paramètres ci-dessous pour vous assurer qu'Alertmanager est configuré correctement pour SNMP.

  service_type: alertmanager
  placement:
    hosts:
    - HOSTNAME
  webhook_configs:
    - 'http://IP_OR_FQDN:9099/'

Appliquez la spécification de service à l'aide de la commande suivante :

cephuser@adm > ceph orch apply -i SERVICE_SPEC_FILE