Comment rassembler des métriques d’infrastructure avec Metricbeat sur Ubuntu 18.04

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 remplace lesTopbeatprécédents de la version 5.0 d'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 Ubuntu 18.04 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 la pile entière qui sont, au moment de la rédaction de cet article, Elasticsearch 6.6.2, Kibana 6.6.2, Logstash 6.6.2 et Metricbeat 6.6.2.
#

[[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 tutorielHow To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 18.04 restreint l'accès d'Elasticsearch à l'hôte local uniquement. 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 utiliseranano:

sudo nano /etc/elasticsearch/elasticsearch.yml

Recherchez la section suivante et modifiez-la afin qu'Elasticsearch écoute sur toutes les interfaces:

/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."

Enregistrez et fermezelasticsearch.yml en appuyant surCTRL+X, suivi deY puis deENTER si vous utiliseznano. Ensuite, 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 Ubuntu. Vous utiliserezufw pour cela:

sudo ufw allow from second_ubuntu_server_ip/32 to any port 9200

Répétez cette commande 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 le préfixe/32 par une valeur inférieure, par exemple/24. Vous pouvez trouver plus d'exemples de configurations UFW dans le didacticielUFW Essentials: Common Firewall Rules and Commands.

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

ssh sammy@second_ubuntu_server_ip

Utilisez la commandetelnet pour tester la connexion au serveur Elastic Stack. Cette commande permet la communication avec un autre hôte à l'aide du protocoleTelnet et peut vérifier la disponibilité d'un port sur un système distant.

telnet Elastic_Stack_server_ip 9200

Vous recevrez le résultat suivant:

OutputTrying Elastic_Stack_server_ip...
Connected to Elastic_Stack_server_ip.
Escape character is '^]'.

Fermez la connexion Telnet en appuyant surCTRL+], suivi deCTRL+d. Vous pouvez taperquit, puis appuyer surENTER pour quitter l'utilitaire Telnet.

Vous êtes maintenant prêt à envoyer des mesures à 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 Ubuntu.

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 apt install metricbeat

Une fois l'installation de Metricbeat 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-02-15T09:51:32.096Z        INFO    instance/beat.go:281    Setup Beat: metricbeat; Version: 6.6.2
2019-02-15T09: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-02-15T09:51:32.137Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.137Z        INFO    [publisher]     pipeline/module.go:110  Beat name: elastic
2019-02-15T09:51:32.138Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.140Z        INFO    elasticsearch/client.go:721     Connected to Elasticsearch version 6.6.2
2019-02-15T09:51:32.148Z        INFO    template/load.go:130    Template already exists and will not be overwritten.
2019-02-15T09:51:32.148Z        INFO    instance/beat.go:894    Template successfully loaded.
Loaded index template
Loading dashboards (Kibana must be running and reachable)
2019-02-15T09:51:32.149Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.150Z        INFO    elasticsearch/client.go:721     Connected to Elasticsearch version 6.6.2
2019-02-15T09:51:32.151Z        INFO    kibana/client.go:118    Kibana url: http://localhost:5601
2019-02-15T09:51:56.209Z        INFO    instance/beat.go:741    Kibana dashboards successfully loaded.
Loaded dashboards

Vous pouvez maintenant démarrer et activer Metricbeat:

sudo systemctl start metricbeat
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.6.2-2019.02.15",
        "_type" : "doc",
        "_id" : "A4mU8GgBKrpxEYMLjJZt",
        "_score" : 1.0,
        "_source" : {
          "@timestamp" : "2019-02-15T09: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.6.2",
            "name" : "elastic",
            "hostname" : "elastic"
          },
...

La ligne"total" : 108, indique que Metricbeat a trouvé 108 résultats de recherche pour cette métrique spécifique. 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 Ubuntu.

[[step-3 -—- installation-et-configuration-metricbeat-on-the-second-ubuntu-server]] == Étape 3 - Installation et configuration de Metricbeat sur le deuxième serveur Ubuntu

Effectuez cette étape sur tous les serveurs Ubuntu à partir desquels vous souhaitez envoyer des métriques à votre serveur Elastic Stack.

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

ssh sammy@second_ubuntu_server_ip

Les composants Elastic Stack ne sont pas disponibles dans les référentiels de paquets par défaut d’Ubuntu. Cependant, vous pouvez les installer avec APT après avoir ajouté la liste des sources de paquets d’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 importer la clé GPG publique Elasticsearch dans APT:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Ensuite, ajoutez la liste des sources Elastic au répertoiresources.list.d, où APT recherchera de nouvelles sources:

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

Ensuite, mettez à jour vos listes de paquets pour qu'APT lise la nouvelle source Elastic:

sudo apt update

Ensuite, installez Metricbeat avec cette commande:

sudo apt 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 nano /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

Vous devez répéter 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 les informations 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