Cette rubrique explique comment surveiller Cassandra à l'aide de Managed Service for Prometheus.
Prérequis
Vous avez créé une instance Prometheus. Pour plus d'informations, consultez :
Étape 1 : Déployer l'agent JMX Cassandra
-
Téléchargez l'agent JMX Cassandra correspondant à votre version de Cassandra sur l'instance ECS exécutant Cassandra.
-
Décompressez le package de l'agent téléchargé dans le répertoire
MCAC_ROOTet ajoutez le contenu suivant au fichier cassandra-env.sh.MCAC_ROOT=/path/to/directory JVM_OPTS="$JVM_OPTS -javaagent:${MCAC_ROOT}/lib/datastax-mcac-agent.jar"ImportantL'agent JMX Cassandra expose le port 9103 pour permettre à Prometheus de collecter les données. Pour modifier ce port, changez la valeur dans le fichier ${MCAC_ROOT}/config/collectd.conf.tmpl par le port souhaité.
LoadPlugin write_prometheus <Plugin write_prometheus> Port "9103" </Plugin> -
Une fois la configuration terminée, redémarrez l'application Cassandra. Sur le serveur ECS, exécutez la commande
curl localhost:{jmx_port}/metrics. Une installation réussie renvoie des données.# HELP collectd_collectd_cache_size write_prometheus plugin: 'collectd' Type: 'cache_size', Dstype: 'gauge', Dsname: 'value' # TYPE collectd_collectd_cache_size gauge collectd_collectd_cache_size{collectd="cache",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 6985 16 # HELP collectd_collectd_derive_total write_prometheus plugin: 'collectd' Type: 'derive', Dstype: 'derive', Dsname: 'value' # TYPE collectd_collectd_derive_total counter collectd_collectd_derive_total{collectd="write_queue",type="dropped",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 0 168768 # HELP collectd_collectd_queue_length write_prometheus plugin: 'collectd' Type: 'queue_length', Dstype: 'gauge', Dsname: 'value' # TYPE collectd_collectd_queue_length gauge collectd_collectd_queue_length{collectd="write_queue",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 144 168 # HELP collectd_contextswitch_total write_prometheus plugin: 'contextswitch' Type: 'contextswitch', Dstype: 'derive', Dsname: 'value' # TYPE collectd_contextswitch_total counter collectd_contextswitch_total{instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 3... 168768 # HELP collectd_cpu_total write_prometheus plugin: 'cpu' Type: 'cpu', Dstype: 'derive', Dsname: 'value' # TYPE collectd_cpu_total counter collectd_cpu_total{cpu="0",type="idle",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50160255 16876 collectd_cpu_total{cpu="0",type="interrupt",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 1687686 collectd_cpu_total{cpu="0",type="nice",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 226 1687686335 collectd_cpu_total{cpu="0",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 13644 16876 collectd_cpu_total{cpu="0",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="0",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 231356 16876 collectd_cpu_total{cpu="0",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1519742 168768 collectd_cpu_total{cpu="0",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 585 1687686335 collectd_cpu_total{cpu="1",type="idle",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50596353 16876 collectd_cpu_total{cpu="1",type="interrupt",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 1687686 collectd_cpu_total{cpu="1",type="nice",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 219 1687686335 collectd_cpu_total{cpu="1",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 9320 168768 collectd_cpu_total{cpu="1",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="1",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 129114 16876 collectd_cpu_total{cpu="1",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1504382 168768 collectd_cpu_total{cpu="1",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50115892 16876 collectd_cpu_total{cpu="2",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 4906 168768 collectd_cpu_total{cpu="2",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="2",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 230256 16876 collectd_cpu_total{cpu="2",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1562142 168768 collectd_cpu_total{cpu="2",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 8267 16876863 collectd_cpu_total{cpu="3",type="idle",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50612210 16876 collectd_cpu_total{cpu="3",type="interrupt",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 1687686 collectd_cpu_total{cpu="3",type="nice",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 218 1687686335 collectd_cpu_total{cpu="3",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 2815 168768 collectd_cpu_total{cpu="3",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="3",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 129656 16876 collectd_cpu_total{cpu="3",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1506299 168768 collectd_cpu_total{cpu="3",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 183 1687686335
Étape 2 : Intégrer Cassandra
Connectez-vous à la console ARMS.
Connectez-vous à la console Cloud Monitor.
Dans le volet de navigation de gauche, cliquez sur Access Center.
Sur la page Access Center, dans la section Database, cliquez sur Cassandra.
-
Dans l'onglet Start Integration du panneau Cassandra, configurez les paramètres, puis cliquez sur OK.
Paramètre
Description
Select environment type
Sélectionnez le type d'environnement :
-
Environnement Container Service
-
ECS (Virtual Private Cloud (VPC))
Sélectionner un cluster
Sélectionnez le cluster cible.
Pod label
Libellé du pod exécutant le service Cassandra. Il est recommandé d'utiliser un libellé unique.
Service port
Port utilisé par l'agent JMX Cassandra installé à l'étape 1. Le port par défaut est saisi automatiquement.
Metrics path
Endpoint des métriques de l'agent JMX Cassandra installé à l'étape 1. Le chemin par défaut est saisi automatiquement.
Scrape interval (seconds)
Intervalle, en secondes, pour la collecte des métriques. La valeur par défaut est 30.
-
Étape 3 : Consulter les tableaux de bord Cassandra
Connectez-vous à la console Cloud Monitor.
Connectez-vous à la console ARMS.
Dans le volet de navigation de gauche, cliquez sur Data Import Management.
Sur la page Data Import Management, cliquez sur l'onglet Installed. Recherchez l'environnement souhaité et cliquez sur son nom pour ouvrir la page de détails.
-
Dans l'onglet Component Management, cliquez sur Cassandra dans la section Component Type, puis cliquez sur l'onglet Dashboards pour afficher tous les noms des tableaux de bord.
La page affiche deux tableaux de bord : Cassandra Detail et Cassandra Summary.
Cliquez sur le nom d'un tableau de bord pour afficher le tableau de bord Grafana.
Étape 4 : Configurer les alertes Cassandra
-
Dans l'onglet Component Management, cliquez sur Cassandra dans la section Component Type, puis sélectionnez l'onglet Alert Rules pour afficher les règles d'alerte par défaut.
Les règles d'alerte par défaut incluent :
Délais d'expiration des requêtes
Requêtes ayant échoué
Nombre total de messages
Utilisation du disque
Utilisation de la mémoire
Utilisation du CPU
Connexions client
Vous pouvez également créer des règles d'alerte personnalisées. Pour plus d'informations, consultez la rubrique Créer une règle d'alerte Prometheus.
Métriques clés
Informations sur le cluster et les nœuds
|
Métrique |
Niveau |
Description |
Explication |
|
mcac_client_connected_native_clients |
Majeur |
Nombre de connexions CQL |
Un nombre excessif de connexions consomme les ressources système et augmente la latence côté client. |
|
mcac_table_live_disk_space_used_total |
Majeur |
Espace disque utilisé par Cassandra |
Une valeur élevée peut entraîner un manque d'espace disque et augmenter la latence d'accès aux données. |
|
mcac_table_snapshots_size |
Recommandé |
Taille des fichiers de snapshot Cassandra |
Les snapshots servent à la récupération des données. Une valeur élevée peut saturer l'espace disque, empêchant ainsi le stockage de snapshots complets. |
|
collectd_uptime |
Majeur |
Temps de fonctionnement du nœud |
Une valeur élevée indique que le système n'a pas été redémarré depuis longtemps. Si le système présente des vulnérabilités connues, cela peut accroître les risques de sécurité. |
Métriques de performance essentielles
|
Métrique |
Niveau |
Description |
Explication |
|
mcac_table_read_latency |
Critique |
Latence de lecture client |
Une valeur élevée ralentit les lectures applicatives et dégrade l'expérience utilisateur. |
|
mcac_table_write_latency |
Critique |
Latence d'écriture client |
Une valeur élevée ralentit les écritures applicatives et dégrade l'expérience utilisateur. |
Exceptions et erreurs
|
Métrique |
Niveau |
Description |
Explication |
|
mcac_client_request_timeouts_total |
Critique |
Requêtes client expirées |
Une valeur élevée signale une charge système importante, ce qui affecte gravement l'expérience utilisateur. |
|
mcac_client_request_failures_total |
Critique |
Requêtes client ayant généré des exceptions |
Une valeur élevée signale une charge système importante, ce qui affecte gravement l'expérience utilisateur. |
|
mcac_dropped_message_dropped_total |
Critique |
Messages perdus |
Une valeur élevée signale une charge système importante, ce qui affecte gravement l'expérience utilisateur. |
Cache et filtres Bloom
|
Métrique |
Niveau |
Description |
Explication |
|
mcac_table_key_cache_hit_rate |
Majeur |
Taux de succès du cache de clés |
Une valeur faible peut réduire les performances de lecture des applications et nuire à l'expérience utilisateur. |
|
mcac_table_row_cache_hit_total |
Majeur |
Nombre de succès du cache de lignes |
Une valeur faible peut réduire les performances de lecture des applications et nuire à l'expérience utilisateur. |
|
mcac_table_row_cache_miss_total |
Recommandé |
Nombre d'échecs du cache de lignes |
Une valeur élevée peut réduire les performances de lecture des applications et nuire à l'expérience utilisateur. |
|
mcac_table_row_cache_hit_out_of_range_total |
Recommandé |
Nombre de succès du cache de lignes ayant tout de même nécessité un accès au disque. |
Une valeur élevée peut réduire les performances de lecture des applications et nuire à l'expérience utilisateur. |
|
mcac_table_bloom_filter_false_ratio |
Majeur |
Taux de faux positifs du filtre Bloom |
Un taux de faux positifs élevé entraîne l'identification incorrecte d'éléments inexistants comme existants. Cela gaspille du temps et des ressources lors des requêtes, ce qui dégrade les performances et augmente les coûts. |
Utilisation du CPU, de la mémoire et du disque
|
Métrique |
Niveau |
Description |
Explication |
|
collectd_cpu_total |
Critique |
Utilisation du CPU |
Une valeur élevée indique une charge système importante, ce qui augmente la latence des requêtes client et affecte gravement l'expérience utilisateur. |
|
collectd_memory |
Critique |
Utilisation de la mémoire |
Une valeur élevée indique une charge système importante, ce qui augmente la latence des requêtes client et affecte gravement l'expérience utilisateur. |
|
collectd_df_df_complex |
Critique |
Utilisation du disque |
Une valeur élevée signifie que l'espace disque disponible est insuffisant, ce qui peut empêcher la persistance des données et provoquer des interruptions de service. |
Compactage des SSTables
|
Métrique |
Niveau |
Description |
Explication |
|
mcac_table_pending_compactions |
Majeur |
Tâches de compactage SSTable en cours |
Une valeur élevée indique une charge système importante, ce qui augmente la latence des requêtes client. Configurez un intervalle de compactage raisonnable pour les SSTables. |
|
mcac_table_compaction_bytes_written_total |
Majeur |
Taux de compactage des SSTables |
Une valeur faible indique un compactage lent, susceptible de provoquer une accumulation de tâches. Envisagez de mettre à niveau les spécifications des nœuds. |
|
mcac_table_compression_ratio |
Majeur |
Taux de compression des SSTables |
Une valeur élevée indique que les fichiers compressés restent trop volumineux et que la compression est inefficace. |
Fichiers sur disque
|
Métrique |
Niveau |
Description |
Explication |
|
mcac_table_live_ss_table_count |
Majeur |
Nombre de SSTables |
Une valeur élevée augmente l'utilisation du disque et la latence en lecture/écriture. Configurez une stratégie de compactage SSTable appropriée. |
|
mcac_table_live_disk_space_used_total |
Majeur |
Espace disque utilisé par les SSTables |
Une valeur élevée augmente l'utilisation du disque et la latence en lecture/écriture. Configurez une stratégie de compactage SSTable appropriée. |
|
mcac_table_ss_tables_per_read_histogram |
Majeur |
Nombre de SSTables lues par opération de lecture |
Une valeur élevée augmente la latence de lecture côté client. |
|
mcac_commit_log_total_commit_log_size |
Majeur |
Espace disque utilisé par le journal des validations (commit log) |
Une valeur élevée peut entraîner un manque d'espace disque, une dégradation des performances en lecture/écriture et un allongement du temps de récupération des données. |
|
mcac_table_memtable_live_data_size |
Majeur |
Espace utilisé par la MemTable |
Une valeur élevée peut dégrader les performances d'écriture des données et la stabilité des nœuds. |
|
mcac_table_waiting_on_free_memtable_space |
Majeur |
Temps passé à attendre la libération d'espace dans la MemTable |
Une valeur élevée peut dégrader les performances d'écriture des données et la stabilité des nœuds. |
État des pools de threads
|
Métrique |
Niveau |
Description |
Explication |
|
mcac_thread_pools_active_tasks |
Critique |
Nombre de tâches actives dans le pool de threads |
Un nombre excessif de tâches bloquées consomme les ressources système, ralentit les réponses et peut même provoquer un crash du système. |
|
mcac_thread_pools_total_blocked_tasks_total |
Critique |
Nombre de tâches bloquées dans le pool de threads |
Un nombre excessif de tâches bloquées consomme les ressources système, ralentit les réponses et peut même provoquer un crash du système. |
|
mcac_thread_pools_pending_tasks |
Critique |
Nombre de tâches en attente dans le pool de threads |
Un nombre excessif de tâches en attente consomme trop de ressources système, provoque l'expiration des requêtes correspondantes et peut même faire planter le système. |
|
mcac_thread_pools_completed_tasks |
Majeur |
Nombre de tâches terminées dans le pool de threads |
Cette métrique reflète le débit du système. Une valeur plus élevée indique de meilleures performances. |
Métriques JVM
|
Métrique |
Niveau |
Description |
Explication |
|
mcac_jvm_memory_used |
Critique |
Mémoire heap JVM utilisée |
Une valeur élevée peut entraîner un manque de mémoire, déclencher des garbage collections fréquentes et réduire le débit de l'application. |
|
mcac_jvm_gc_time |
Critique |
Temps consacré au garbage collection (GC) |
Une valeur élevée indique des GC fréquentes. Le système dispose de moins de temps pour exécuter les charges de travail utilisateur, ce qui peut provoquer des délais d'expiration des requêtes ou même des plantages du système. |