Comment rassembler des métriques d’infrastructure avec Metricbeat sur CentOS 7

L'auteur a sélectionné lesComputer History Museum pour recevoir un don dans le cadre du programmeWrite for DOnations.

introduction

Metricbeat, qui est l'un desBeats qui permet d'envoyer divers types de données de serveur à un serveurElastic Stack, est un expéditeur de données léger qui, une fois installé sur vos serveurs, collecte périodiquement le système. des statistiques de CPU et de mémoire étendues et par processus et envoie les données directement à votre déploiement Elasticsearch. Cet expéditeur a remplacé lesTopbeatprécédents dans la version 5.0 de l'Elastic Stack.

Les autres rythmes actuellement disponibles chez Elastic sont:

  • Filebeat: collecte et expédie les fichiers journaux.

  • Packetbeat: collecte et analyse les données du réseau.

  • Winlogbeat: collecte les journaux d'événements Windows.

  • Auditbeat: collecte les données du cadre d'audit Linux et surveille l'intégrité des fichiers.

  • Heartbeat: surveille la disponibilité des services avec une détection active.

Dans ce didacticiel, vous utiliserez Metricbeat pour transférer des métriques du système local telles que l'utilisation du processeur / de la mémoire / du disque et l'utilisation du réseau d'un serveur CentOS 7 vers un autre serveur du même type sur lequel Elastic Stack est installé. Avec cet expéditeur, vous allez rassembler les mesures de base dont vous avez besoin pour connaître l’état actuel de votre serveur.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

[.note] #Note: lors de l'installation d'Elastic Stack, vous devez utiliser la même version sur toute la pile. Dans ce tutoriel, vous utiliserez les dernières versions de l'ensemble de la pile, qui sont, au moment de la rédaction de cet article, Elasticsearch 6.7.0, Kibana 6.7.0, Logstash 6.7.0 et Metricbeat 6.7.0.
#

[[step-1 -—- configuration-elasticsearch-to-listen-for-traffic-on-an-external-ip]] == Étape 1 - Configuration d'Elasticsearch pour écouter le trafic sur une adresse IP externe

Le didacticielHow To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on CentOS 7 restreint l'accès d'Elasticsearch uniquement auxlocalhost. En pratique, cela est rare, car vous aurez souvent besoin de surveiller plusieurs hôtes. Dans cette étape, vous allez configurer les composants Elastic Stack pour qu’ils interagissent avec l’adresse IP externe.

Connectez-vous à votre serveur Elastic Stack en tant qu'utilisateur non root:

ssh sammy@Elastic_Stack_server_ip

Utilisez votre éditeur de texte préféré pour modifier le fichier de configuration principal d'Elasticsearch,elasticsearch.yml. Ce tutoriel utiliseravi:

sudo vi /etc/elasticsearch/elasticsearch.yml

Recherchez la section suivante et modifiez-la afin qu'Elasticsearch écoute sur toutes les interfaces. Entrez en mode insertion en appuyant suri, puis ajoutez l'élément suivant en surbrillance:

/etc/elasticsearch/elasticsearch.yml

...
network.host: 0.0.0.0
...

L'adresse0.0.0.0 se voit attribuer des significations spécifiques dans un certain nombre de contextes. Dans ce cas,0.0.0.0 signifie "n'importe quelle adresse IPv4."

Lorsque vous avez terminé, appuyez surESC pour quitter le mode insertion, puis sur:wq etENTER pour enregistrer et quitter le fichier. Pour en savoir plus sur l'éditeur de texte vi et son successeur Vim, consultez notre tutorielInstalling and Using the Vim Text Editor on a Cloud Server. Après avoir enregistré et quitté le fichier, redémarrez le service Elasticsearch avecsystemctl pour appliquer les nouveaux paramètres:

sudo systemctl restart elasticsearch

Maintenant, autorisez l’accès au port Elasticsearch à partir de votre deuxième serveur CentOS. Afin de configurer l'accès provenant d'adresses IP ou de sous-réseaux spécifiques, utilisez la fonctionnalitérich rule defirewalld:

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="second_centos_server_ip/32" port protocol="tcp" port="9200" accept'

Les règles riches vous permettent de créer des règlesfirewalld plus complexes et personnalisables pour mieux contrôler votre pare-feu. Dans cette commande, vous ajoutez une règle qui accepte le traficipv4 dusource, que vous avez défini comme adresse IP du deuxième serveur CentOS, versport9200 de votre serveur Elastic Stack.

Ensuite, rechargezfirewalld pour activer la nouvelle règle:

sudo firewall-cmd --reload

Répétez ces commandes pour chacun de vos serveurs si vous en avez plus de deux. Si vos serveurs sont sur les mêmesnetwork, vous pouvez autoriser l'accès en utilisant une règle pour tous les hôtes du réseau. Pour ce faire, vous devez remplacer les/32 après l'adresse IP par une valeur inférieure, par exemple/24.

Ensuite, testez la connexion. Connectez-vous à votre deuxième serveur CentOS en tant qu'utilisateur non root:

ssh sammy@second_centos_server_ip

Utilisez la commandecurl pour tester la connexion au serveur Elastic Stack:

curl Elastic_Stack_server_ip:9200

Vous recevrez une sortie semblable à celle-ci:

Output{
  "name" : "tl5Is5f",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "W9AcSNWHQ3mYs2uE8odklA",
  "version" : {
    "number" : "6.7.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "3bd3e59",
    "build_date" : "2019-03-06T15:16:26.864148Z",
    "build_snapshot" : false,
    "lucene_version" : "7.6.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Maintenant que vous savez que la connexion fonctionne, vous êtes prêt à envoyer des métriques à votre serveur Elastic Stack.

[[step-2 -—- installation-et-configuration-metricbeat-on-the-elastic-stack-server]] == Étape 2 - Installation et configuration de Metricbeat sur le serveur Elastic Stack

Au cours des deux prochaines étapes, vous allez d’abord installer Metricbeat sur le serveur Elastic Stack et importer toutes les données nécessaires, puis installer et configurer le client sur le deuxième serveur CentOS.

Connectez-vous à votre serveur Elastic Stack en tant qu'utilisateur non root:

ssh sammy@Elastic_Stack_server_ip

Comme vous avez précédemment configuré les référentiels Elasticsearch dans les prérequis, vous devez uniquement installer Metricbeat:

sudo yum install metricbeat

Une fois l'installation terminée, chargez le modèle d'index dans Elasticsearch. UnElasticsearch index est un ensemble de documents qui ont des caractéristiques similaires. Des noms spécifiques identifient chaque index, qu'Elasticsearch utilisera pour faire référence aux index lors de diverses opérations. Votre serveur Elasticsearch appliquera automatiquement le modèle d’index lorsque vous créez un nouvel index.

Pour charger le modèle, utilisez la commande suivante:

sudo metricbeat setup --template -E 'output.elasticsearch.hosts=["localhost:9200"]'

Vous verrez la sortie suivante:

OutputLoaded index template

Metricbeat est fourni avec des exemples de tableaux de bord, visualisations et recherches Kibana pour la visualisation des données Metricbeat dans Kibana. Avant de pouvoir utiliser les tableaux de bord, vous devez créer le modèle d’index et les charger dans Kibana.

Pour charger les modèles, utilisez la commande suivante:

sudo metricbeat setup -e -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

Vous verrez une sortie qui ressemble à ceci:

Output...
2019-03-20T09:51:32.096Z        INFO    instance/beat.go:281    Setup Beat: metricbeat; Version: 6.7.0
2019-03-20T09:51:32.136Z        INFO    add_cloud_metadata/add_cloud_metadata.go:323    add_cloud_metadata: hosting provider type detected as digitalocean, metadata={"instance_id":"133130541","provider":"digitalocean","region":"fra1"}
2019-03-20T09:51:32.137Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-03-20T09:51:32.137Z        INFO    [publisher]     pipeline/module.go:110  Beat name: elastic
2019-03-20T09:51:32.138Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-03-20T09:51:32.140Z        INFO    elasticsearch/client.go:721     Connected to Elasticsearch version 6.7.0
2019-03-20T09:51:32.148Z        INFO    template/load.go:130    Template already exists and will not be overwritten.
2019-03-20T09:51:32.148Z        INFO    instance/beat.go:894    Template successfully loaded.
Loaded index template
Loading dashboards (Kibana must be running and reachable)
2019-03-20T09:51:32.149Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-03-20T09:51:32.150Z        INFO    elasticsearch/client.go:721     Connected to Elasticsearch version 6.7.0
2019-03-20T09:51:32.151Z        INFO    kibana/client.go:118    Kibana url: http://localhost:5601
2019-03-20T09:51:56.209Z        INFO    instance/beat.go:741    Kibana dashboards successfully loaded.
Loaded dashboards

Vous pouvez maintenant lancer Metricbeat:

sudo systemctl start metricbeat

Pour que Metricbeat démarre automatiquement au démarrage à partir de maintenant, utilisez la commandeenable:

sudo systemctl enable metricbeat

Metricbeat commencera à envoyer vos statistiques système à Elasticsearch.

Pour vérifier qu'Elasticsearch reçoit effectivement ces données, interrogez l'index Metricbeat à l'aide de la commande suivante:

curl -XGET 'http://localhost:9200/metricbeat-*/_search?pretty'

Vous verrez une sortie qui ressemble à ceci:

Output...
{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 108,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "metricbeat-6.7.0-2019.03.20",
        "_type" : "doc",
        "_id" : "A4mU8GgBKrpxEYMLjJZt",
        "_score" : 1.0,
        "_source" : {
          "@timestamp" : "2019-03-20T09:54:52.481Z",
          "metricset" : {
            "name" : "network",
            "module" : "system",
            "rtt" : 125
          },
          "event" : {
            "dataset" : "system.network",
            "duration" : 125260
          },
          "system" : {
            "network" : {
              "in" : {
                "packets" : 59728,
                "errors" : 0,
                "dropped" : 0,
                "bytes" : 736491211
              },
              "out" : {
                "dropped" : 0,
                "packets" : 31630,
                "bytes" : 8283069,
                "errors" : 0
              },
              "name" : "eth0"
            }
          },
          "beat" : {
            "version" : "6.7.0",
            "name" : "elastic",
            "hostname" : "elastic"
          },
...

La ligne"total" : 108, indique que Metricbeat a trouvé 108 résultats de recherche pour cette métrique spécifique. N'importe quel nombre de résultats de recherche indique que Metricbeat fonctionne; Si votre sortie affiche 0 succès au total, vous devrez vérifier si votre configuration contient des erreurs. Si vous avez reçu le résultat attendu, passez à l'étape suivante, dans laquelle vous installerez Metricbeat sur le deuxième serveur CentOS.

[[step-3 -—- installation-et-configuration-metricbeat-on-the-second-centos-server]] == Étape 3 - Installation et configuration de Metricbeat sur le second serveur CentOS

Effectuez cette étape sur tous les serveurs CentOS à partir desquels vous souhaitez envoyer des métriques à votre serveur Elastic Stack. Si vous avez également des serveurs Ubuntu, vous pouvez installer Metricbeat en suivant l'étape 3 deHow To Gather Infrastructure Metrics with Metricbeat on Ubuntu 18.04.

Connectez-vous à votre deuxième serveur CentOS en tant qu'utilisateur non root:

ssh sammy@second_centos_server_ip

Les composants Elastic Stack ne sont pas disponibles par défaut via le gestionnaire de packages yum, mais vous pouvez les installer en ajoutant le référentiel de packages Elastic.

Tous les packages Elastic Stack sont signés avec la clé de signature Elasticsearch afin de protéger votre système contre l’usurpation de package. Votre gestionnaire de paquets fera confiance aux paquets authentifiés à l'aide de la clé. Dans cette étape, vous allez importer la clé GPG publique Elasticsearch et ajouter la liste des sources de packages Elastic afin d'installer Metricbeat.

Pour commencer, exécutez la commande suivante pour télécharger et installer la clé de signature publique Elasticsearch:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Ensuite, ajoutez le référentiel Elastic. Utilisez votre éditeur de texte préféré pour créer le fichierelasticsearch.repo dans le répertoire/etc/yum.repos.d/:

sudo vi /etc/yum.repos.d/elasticsearch.repo

Pour fournir à yum les informations dont il a besoin pour télécharger et installer les composants de Elastic Stack, entrez en mode insertion en appuyant suri et ajoutez les lignes suivantes au fichier:

/etc/yum.repos.d/elasticsearch.repo

[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Ensuite, installez Metricbeat avec cette commande:

sudo yum install metricbeat

Une fois l'installation de Metricbeat terminée, configurez-le pour qu'il se connecte à Elasticsearch. Ouvrez son fichier de configuration,metricbeat.yml:

sudo vi /etc/metricbeat/metricbeat.yml

[.note] #Note: Le fichier de configuration de Metricbeat est au format YAML, ce qui signifie que l’indentation est très importante! Assurez-vous de ne pas ajouter d'espaces supplémentaires lorsque vous modifiez ce fichier.
#

Metricbeat prend en charge de nombreuses sorties, mais vous envoyez généralement des événements directement à Elasticsearch ou à Logstash pour un traitement supplémentaire. Recherchez la section suivante et mettez à jour l'adresse IP:

/etc/metricbeat/metricbeat.yml

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["Elastic_Stack_server_ip:9200"]

...

Enregistrez et fermez le fichier.

Vous pouvez étendre les fonctionnalités de Metricbeat avecmodules. Dans ce didacticiel, vous utiliserez le modulesystem, qui vous permet de surveiller les statistiques de votre serveur telles que l’utilisation du processeur / de la mémoire / du disque et l’utilisation du réseau.

Dans ce cas, le modulesystem est activé par défaut. Vous pouvez voir une liste des modules activés et désactivés en exécutant:

sudo metricbeat modules list

Vous verrez une liste semblable à la suivante:

OutputEnabled:
system

Disabled:
aerospike
apache
ceph
couchbase
docker
dropwizard
elasticsearch
envoyproxy
etcd
golang
graphite
haproxy
http
jolokia
kafka
kibana
kubernetes
kvm
logstash
memcached
mongodb
munin
mysql
nginx
php_fpm
postgresql
prometheus
rabbitmq
redis
traefik
uwsgi
vsphere
windows
zookeeper

Vous pouvez voir les paramètres du module dans le fichier de configuration de/etc/metricbeat/modules.d/system.yml. Dans le cas de ce tutoriel, vous n'avez rien à changer dans la configuration. Les ensembles de métriques par défaut sontcpu,load,memory,network,process etprocess_summary. Chaque module a un ou plusieurs métricset. Un ensemble de métriques est la partie du module qui récupère et structure les données. Plutôt que de collecter chaque métrique en tant qu'événement distinct, les métriques récupèrent une liste de plusieurs métriques associées dans une seule demande adressée au système distant.

Vous pouvez maintenant démarrer et activer Metricbeat:

sudo systemctl start metricbeat
sudo systemctl enable metricbeat

Répétez cette étape sur tous les serveurs sur lesquels vous souhaitez collecter des métriques. Ensuite, vous pouvez passer à l’étape suivante, dans laquelle vous verrez comment naviguer dans certains tableaux de bord de Kibana.

[[step-4 -—- explore-kibana-dashboards]] == Étape 4 - Explorer les tableaux de bord Kibana

Dans cette étape, vous allez examiner Kibana, l'interface Web que vous avez installée dans la section Prérequis.

Dans un navigateur Web, accédez au nom de domaine complet ou à l'adresse IP publique de votre serveur Elastic Stack. Après avoir entré les informations de connexion que vous avez définies à l'étape 2 dethe Elastic Stack tutorial, vous verrez la page d'accueil de Kibana:

Kibana Homepage

Cliquez sur le lienDiscover dans la barre de navigation de gauche. Sur la pageDiscover, sélectionnez le modèle d'indexmeticbeat- * prédéfini pour afficher les données Metricbeat. Par défaut, toutes les données du journal s'affichent au cours des 15 dernières minutes. Vous trouverez un histogramme et quelques détails métriques:

Discover page

Ici, vous pouvez rechercher et parcourir vos métriques, ainsi que personnaliser votre tableau de bord. À ce stade, cependant, il n’y aura pas grand-chose là-dedans, car vous ne collectez que des statistiques système à partir de vos serveurs.

Utilisez le panneau de gauche pour accéder à la pageDashboard et recherchez le tableau de bordMetricbeat System. Une fois sur place, vous pouvez rechercher les exemples de tableaux de bord fournis avec le modulesystem de Metricbeat.

Par exemple, vous pouvez afficher de brèves informations sur tous vos hôtes:

Syslog Dashboard

Vous pouvez également cliquer sur le nom de l'hôte et afficher des informations plus détaillées:

Sudo Dashboard

Kibana possède de nombreuses autres fonctionnalités, telles que la représentation graphique et le filtrage, alors n'hésitez pas à explorer.

Conclusion

Dans ce tutoriel, vous avez installé Metricbeat et configuré Elastic Stack pour collecter et analyser les métriques du système. Metricbeat est livré avec desmodules internes qui collectent des métriques à partir de services comme Apache, Nginx, Docker, MySQL, PostgreSQL, etc. Vous pouvez maintenant collecter et analyser les métriques de vos applications en activant simplement les modules dont vous avez besoin.

Si vous souhaitez en savoir plus sur la surveillance des serveurs, consultezAn Introduction to Metrics, Monitoring, and Alerting etPutting Monitoring and Alerting into Practice.

Related