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:
-
Deux serveurs CentOS 7 configurés en suivant le guideInitial Server Setup with CentOS 7, y compris un utilisateur non root avec des privilèges sudo et un pare-feu configuré avec
firewalld
. Pour configurerfirewalld
, suivez la section“Configuring a Basic Firewall” du didacticielAdditional Recommended Steps for New CentOS 7 Servers. Sur un serveur, vous allez télécharger Elastic Stack; Ce didacticiel se référera à cela sous le nom de «serveur Elastic Stack». Le serveur Elastic Stack, qui dans ce didacticiel disposera de 4 Go de RAM et de 2 CPU, surveillera votre second serveur. Ce deuxième serveur sera appelé «deuxième serveur CentOS». -
Elastic Stack installé sur le serveur Elastic Stack en suivant le tutorielHow To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on CentOS 7.
[.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, versport
9200
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:
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:
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:
Vous pouvez également cliquer sur le nom de l'hôte et afficher des informations plus détaillées:
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.