Elastic Stack monitoring with Metricbeat via Logstash or Kafka | Elastic Blog
Technique

Monitoring de la Suite Elastic à l’aide de Metricbeat via Logstash ou Kafka

Dans un précédent article de blog, nous avons présenté une nouvelle façon de monitorer la Suite Elastic à l’aide de Metricbeat. En utilisant ce produit pour recueillir en externe des informations de monitoring sur les composantes de la Suite Elastic, vous pouvez monitorer ces dernières de manière plus fiable. En outre, le routage des données de monitoring vers le cluster de monitoring Elasticsearch gagne en flexibilité. Dans le présent article, nous explorons plus en détail ce second aspect : nous vous montrons comment les utilisateurs peuvent envoyer les données de monitoring collectées par Metricbeat vers le cluster de monitoring via Logstash ou Kafka. Si vous utilisez déjà la sortie de logstash ou de kafka dans votre configuration Metricbeat pour vos données commerciales, vous pouvez continuer à le faire pour le routage de vos données de monitoring de la Suite Elastic.

Reprenons les explications là où le précédent article s’arrêtait. Il présentait l’architecture ci-dessous pour le monitoring des produits de la Suite Elastic à l’aide de Metricbeat.


Pour information, chaque instance Metricbeat monitore une instance ou un nœud d’un produit de la Suite Elastic. Dans ce but, il faut activer les modules Metricbeat appropriés (variante de configuration de *-xpack). Par exemple, pour monitorer un nœud Logstash, il faut activer le module logstash-xpack.

Dans cette architecture, chaque instance Metricbeat transfère des données à un cluster de monitoring. Par conséquent, les hôtes de Metricbeat doivent être connectés en réseau aux hôtes de cluster de monitoring.

Or, il peut être parfois judicieux de réduire le nombre de points d’entrée menant à Elasticsearch. Il peut même être plus pertinent de diriger vers une instance Logstash l’ensemble du trafic de monitoring de la suite provenant des instances Metricbeat, puis de transférer les données dans le cluster de monitoring. Dans cet article, nous vous montrons comment mettre en place une telle architecture afin de monitorer la suite Elastic à l’aide de Metricbeat.

Ajout de Logstash au flux des données de monitoring de votre suite

Tout d’abord, nous allons configurer un pipeline Logstash qui reçoit les données de monitoring de la suite provenant de Metricbeat, puis les transfère vers le cluster de monitoring. Vous trouverez ci-dessous une illustration de ce pipeline et des explications détaillées sur ses différents éléments.

input {
  beats {
    port => 5044
  }
}
filter {
  # Code standard pour la compatibilité entre les versions de Beats
  mutate {
    rename => { "[@metadata][id]" => "[@metadata][_id]" }
  }
}
output {
  if [@metadata][index] =~ /^.monitoring-*/ {
    # Routage des données de monitoring de la suite vers le cluster de monitoring Elasticsearch
    if [@metadata][_id] {
      elasticsearch {
        index => "%{[@metadata][index]}-%{+YYYY.MM.dd}"
        document_id => "%{[@metadata][_id]}"
        hosts => ["https://node1:9200"]
      }
    } else {
      elasticsearch{
        index => "%{[@metadata][index]}-%{+YYYY.MM.dd}"
        hosts => ["https://node1:9200"]
      }
    }
  } else {
    # Routage des données de monitoring hors de la suite
  }
}

En règle générale, ce pipeline :

  • utilise le plug-in d’entrée beats pour lire les données de monitoring de la suite envoyées par Metricbeat ;
  • utilise le plug-in de sortie elasticsearch pour envoyer les données de monitoring de la suite dans le cluster de monitoring.

Notez l’échelle des instructions if-else dans la section output du pipeline. L’instruction if-else vous permet de séparer les données prévues pour le monitoring de la suite - à indexer dans les index .monitoring-* - des autres données pouvant être collectées par les mêmes instances Metricbeat, par exemple si vous avez activé le module system.

La clause if pour les données de monitoring de la pile comprend une instruction if-else. Cette construction garantit que tout identifiant configuré pour les événements de données de monitoring de la suite provenant de Metricbeat passe par le champ _id lorsque les données sont indexées dans le cluster de monitoring. Cette étape est essentielle, notamment pour indexer correctement les données de monitoring de la partition Elasticsearch. Sans cette construction, l’interface utilisateur de monitoring de la suite pour Elasticsearch affichera par erreur un nombre de partitions en perpétuelle croissance dans le temps.

Configuration de Metricbeat pour le transfert de données vers Logstash

Une fois le pipeline Logstash configuré, vous devez faire de même avec les instances Metricbeat afin d’envoyer leurs données dans l’hôte Logstash au lieu de les transférer directement dans le cluster de monitoring.

output.logstash:
  hosts: [ "logstash_hostname:5044" ]

Une variation éventuelle de cette configuration pourrait consister à introduire Kafka entre Metricbeat et Logstash. Dans ce cas, le pipeline Logstash ressemblerait à l’exemple ci-dessus. Seule exception, vous utiliseriez le plug-in d’entrée kafka au lieu de beats. De la même manière, vous devriez configurer les instances Metricbeat pour envoyer leurs données dans le cluster Kafka au lieu de Logstash.

Conclusion

J’espère que cet article vous explique de manière concrète la mise en œuvre du routage de vos données de monitoring de la Suite Elastic depuis Metricbeat vers Elasticsearch via Logstash (ou Kafka). J’espère aussi qu’il vous a montré avec précision le type de flexibilité dont vous pouvez bénéficier en utilisant Metricbeat pour collecter en externe des données de monitoring dans les produits de la Suite Elastic. 

Si vous avez des questions ou si vous rencontrez des problèmes avec cette configuration, n’hésitez pas à les publier sur discuss.elastic.co. En outre, si vous voulez connaître les avantages du monitoring de la suite, regardez notre démo interactive et faites un essai.