So erfassen Sie Infrastrukturmetriken mit Metricbeat unter CentOS 7

Der Autor hat dieComputer History Museumausgewählt, um eine Spende im Rahmen desWrite for DOnations-Programms zu erhalten.

Einführung

Metricbeat, eines von mehrerenBeats, mit denen verschiedene Arten von Serverdaten an einenElastic Stack-Server gesendet werden können, ist ein leichter Datenversender, der nach der Installation auf Ihren Servern regelmäßig Systemdaten sammelt. Breite und prozessbezogene CPU- und Speicherstatistik und sendet die Daten direkt an Ihre Elasticsearch-Bereitstellung. Dieser Versender ersetzte die früherenTopbeat in Version 5.0 des Elastic Stack.

Andere derzeit bei Elastic erhältliche Beats sind:

  • Filebeat: Sammelt und versendet Protokolldateien.

  • Packetbeat: sammelt und analysiert Netzwerkdaten.

  • Winlogbeat: Sammelt Windows-Ereignisprotokolle.

  • Auditbeat: Sammelt Linux-Audit-Framework-Daten und überwacht die Dateiintegrität.

  • Heartbeat: Überwacht Dienste mit aktiver Prüfung auf ihre Verfügbarkeit.

In diesem Lernprogramm verwenden Sie Metricbeat, um lokale Systemmetriken wie CPU- / Speicher- / Datenträgernutzung und Netzwerknutzung von einem CentOS 7-Server auf einen anderen Server der gleichen Art mit installiertem Elastic Stack weiterzuleiten. Mit diesem Versender sammeln Sie die grundlegenden Messdaten, die Sie benötigen, um den aktuellen Status Ihres Servers abzurufen.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

[.note] #Note: Bei der Installation des Elastic Stack müssen Sie für den gesamten Stack dieselbe Version verwenden. In diesem Lernprogramm verwenden Sie die neuesten Versionen des gesamten Stapels. Zum Zeitpunkt dieses Schreibens sind dies Elasticsearch 6.7.0, Kibana 6.7.0, Logstash 6.7.0 und Metricbeat 6.7.0.
. s #

[[Schritt 1 - Konfigurieren der Elasticsearch zum Abhören des Datenverkehrs auf einer externen IP]] == Schritt 1 - Konfigurieren der Elasticsearch zum Abhören des Datenverkehrs auf einer externen IP

Das TutorialHow To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on CentOS 7hat den Elasticsearch-Zugriff nur auflocalhostbeschränkt. In der Praxis ist dies selten, da Sie häufig viele Hosts überwachen müssen. In diesem Schritt konfigurieren Sie die Elastic Stack-Komponenten für die Interaktion mit der externen IP-Adresse.

Melden Sie sich als Benutzer ohne Rootberechtigung bei Ihrem Elastic Stack-Server an:

ssh sammy@Elastic_Stack_server_ip

Verwenden Sie Ihren bevorzugten Texteditor, um die Hauptkonfigurationsdatei von Elasticsearch,elasticsearch.yml, zu bearbeiten. In diesem Tutorial werdenvi verwendet:

sudo vi /etc/elasticsearch/elasticsearch.yml

Suchen Sie den folgenden Abschnitt und ändern Sie ihn, sodass Elasticsearch alle Schnittstellen überwacht. Rufen Sie den Einfügemodus auf, indem Siei drücken, und fügen Sie dann das folgende hervorgehobene Element hinzu:

/etc/elasticsearch/elasticsearch.yml

...
network.host: 0.0.0.0
...

Der Adresse0.0.0.0 werden in einer Reihe von Kontexten bestimmte Bedeutungen zugewiesen. In diesem Fall bedeutet0.0.0.0 "überhaupt eine IPv4-Adresse".

Wenn Sie fertig sind, drücken SieESC, um den Einfügemodus zu verlassen, und:wq undENTER, um die Datei zu speichern und zu beenden. Weitere Informationen zum Texteditor vi und seinem Nachfolger Vim finden Sie in unserem Tutorial zuInstalling and Using the Vim Text Editor on a Cloud Server. Nachdem Sie die Datei gespeichert und beendet haben, starten Sie den Elasticsearch-Dienst mitsystemctl neu, um die neuen Einstellungen zu übernehmen:

sudo systemctl restart elasticsearch

Erlauben Sie nun den Zugriff auf den Elasticsearch-Port von Ihrem zweiten CentOS-Server. Verwenden Sie dierich rule-Funktionalität vonfirewalld, um den Zugriff von bestimmten IP-Adressen oder Subnetzen aus zu konfigurieren:

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'

Mit umfangreichen Regeln können Sie komplexere und anpassbarerefirewalld-Regeln erstellen, um eine bessere Kontrolle über Ihre Firewall zu erhalten. In diesem Befehl fügen Sie eine Regel hinzu, dieipv4 Datenverkehr vonsource, die Sie als IP-Adresse des zweiten CentOS-Servers festgelegt haben, zuport9200 akzeptiert Ihres Elastic Stack-Servers.

Laden Sie als Nächstesfirewalld neu, um die neue Regel zu aktivieren:

sudo firewall-cmd --reload

Wiederholen Sie diese Befehle für jeden Ihrer Server, wenn Sie mehr als zwei haben. Wenn sich Ihre Server auf demselbennetworkbefinden, können Sie den Zugriff mit einer Regel für alle Hosts im Netzwerk zulassen. Dazu müssen Sie die/32 nach der IP-Adresse durch einen niedrigeren Wert ersetzen, z. B./24.

Testen Sie anschließend die Verbindung. Melden Sie sich bei Ihrem zweiten CentOS-Server als Nicht-Root-Benutzer an:

ssh sammy@second_centos_server_ip

Verwenden Sie den Befehlcurl, um die Verbindung zum Elastic Stack-Server zu testen:

curl Elastic_Stack_server_ip:9200

Sie erhalten eine Ausgabe ähnlich der folgenden:

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"
}

Jetzt, da Sie wissen, dass die Verbindung funktioniert, können Sie Metriken an Ihren Elastic Stack-Server senden.

[[Schritt 2 - Installieren und Konfigurieren von Metricbeat auf dem elastischen Stack-Server] == Schritt 2 - Installieren und Konfigurieren von Metricbeat auf dem Elastic Stack Server

In den nächsten beiden Schritten installieren Sie zuerst Metricbeat auf dem Elastic Stack-Server und importieren alle erforderlichen Daten. Anschließend installieren und konfigurieren Sie den Client auf dem zweiten CentOS-Server.

Melden Sie sich bei Ihrem Elastic Stack-Server als Nicht-Root-Benutzer an:

ssh sammy@Elastic_Stack_server_ip

Da Sie zuvor die Elasticsearch-Repositorys in der Voraussetzung eingerichtet haben, müssen Sie nur Metricbeat installieren:

sudo yum install metricbeat

Laden Sie nach Abschluss der Installation die Indexvorlage in Elasticsearch. EinElasticsearch index ist eine Sammlung von Dokumenten mit ähnlichen Merkmalen. Bestimmte Namen kennzeichnen jeden Index, auf den Elasticsearch bei der Ausführung verschiedener Vorgänge verweist. Ihr Elasticsearch-Server wendet die Indexvorlage automatisch an, wenn Sie einen neuen Index erstellen.

Verwenden Sie den folgenden Befehl, um die Vorlage zu laden:

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

Sie werden die folgende Ausgabe sehen:

OutputLoaded index template

Metricbeat wird mit Beispiel-Kibana-Dashboards, -Visualisierungen und -Suchen zur Visualisierung von Metricbeat-Daten in Kibana geliefert. Bevor Sie die Dashboards verwenden können, müssen Sie das Indexmuster erstellen und die Dashboards in Kibana laden.

Verwenden Sie den folgenden Befehl, um die Vorlagen zu laden:

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

Sie werden eine Ausgabe sehen, die so aussieht:

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

Jetzt können Sie Metricbeat starten:

sudo systemctl start metricbeat

Verwenden Sie den Befehlenable, damit Metricbeat von nun an beim Start automatisch gestartet wird:

sudo systemctl enable metricbeat

Metricbeat beginnt mit dem Versand Ihrer Systemstatistiken an Elasticsearch.

Um zu überprüfen, ob Elasticsearch diese Daten tatsächlich empfängt, fragen Sie den Metricbeat-Index mit diesem Befehl ab:

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

Sie sehen eine Ausgabe, die ungefähr so ​​aussieht:

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"
          },
...

Die Zeile"total" : 108, gibt an, dass Metricbeat 108 Suchergebnisse für diese bestimmte Metrik gefunden hat. Eine beliebige Anzahl von Suchergebnissen zeigt an, dass Metricbeat funktioniert. Wenn Ihre Ausgabe 0 Gesamttreffer anzeigt, müssen Sie Ihr Setup auf Fehler überprüfen. Wenn Sie die erwartete Ausgabe erhalten haben, fahren Sie mit dem nächsten Schritt fort, in dem Sie Metricbeat auf dem zweiten CentOS-Server installieren.

[[Schritt 3 - Installieren und Konfigurieren von Metricbeat auf dem zweiten Centos-Server] == Schritt 3 - Installieren und Konfigurieren von Metricbeat auf dem zweiten CentOS-Server

Führen Sie diesen Schritt auf allen CentOS-Servern aus, von denen aus Sie Metriken an Ihren Elastic Stack-Server senden möchten. Wenn Sie auch Ubuntu-Server haben, können Sie Metricbeat installieren, indem Sie Schritt 3 vonHow To Gather Infrastructure Metrics with Metricbeat on Ubuntu 18.04 ausführen.

Melden Sie sich bei Ihrem zweiten CentOS-Server als Nicht-Root-Benutzer an:

ssh sammy@second_centos_server_ip

Die Elastic Stack-Komponenten sind standardmäßig nicht über den yum-Paket-Manager verfügbar. Sie können sie jedoch installieren, indem Sie das Paket-Repository von Elastic hinzufügen.

Alle Pakete des Elastic Stacks sind mit dem Elasticsearch-Signaturschlüssel signiert, um Ihr System vor Spoofing zu schützen. Ihr Paketmanager vertraut Paketen, die mit dem Schlüssel authentifiziert wurden. In diesem Schritt importieren Sie den öffentlichen GPG-Schlüssel von Elasticsearch und fügen die Quellliste des Elastic-Pakets hinzu, um Metricbeat zu installieren.

Führen Sie zunächst den folgenden Befehl aus, um den öffentlichen Signaturschlüssel von Elasticsearch herunterzuladen und zu installieren:

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

Fügen Sie als Nächstes das elastische Repository hinzu. Verwenden Sie Ihren bevorzugten Texteditor, um die Dateielasticsearch.repo im Verzeichnis/etc/yum.repos.d/ zu erstellen:

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

Um yum mit den Informationen zu versorgen, die zum Herunterladen und Installieren der Komponenten des Elastic Stack erforderlich sind, rufen Sie den Einfügemodus auf, indem Siei drücken und der Datei die folgenden Zeilen hinzufügen:

/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

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Installieren Sie anschließend Metricbeat mit dem folgenden Befehl:

sudo yum install metricbeat

Konfigurieren Sie Metricbeat nach Abschluss der Installation für die Verbindung mit Elasticsearch. Öffnen Sie die Konfigurationsdateimetricbeat.yml:

sudo vi /etc/metricbeat/metricbeat.yml

[.note] Die Konfigurationsdatei von #Note:Metricbeat ist im YAML-Format, was bedeutet, dass das Einrücken sehr wichtig ist! Stellen Sie sicher, dass Sie beim Bearbeiten dieser Datei keine zusätzlichen Leerzeichen hinzufügen.
#

Metricbeat unterstützt zahlreiche Ausgaben, in der Regel senden Sie Ereignisse jedoch nur direkt an Elasticsearch oder Logstash, um sie weiterzuverarbeiten. Suchen Sie den folgenden Abschnitt und aktualisieren Sie die IP-Adresse:

/etc/metricbeat/metricbeat.yml

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

...

Speichern und schließen Sie die Datei.

Sie können die Funktionalität von Metricbeat ummodules erweitern. In diesem Lernprogramm verwenden Sie das Modulsystem, mit dem Sie die Statistiken Ihres Servers wie CPU- / Speicher- / Festplattenauslastung und Netzwerkauslastung überwachen können.

In diesem Fall ist das Modulsystemtandardmäßig aktiviert. Sie können eine Liste der aktivierten und deaktivierten Module anzeigen, indem Sie Folgendes ausführen:

sudo metricbeat modules list

Sie sehen eine Liste ähnlich der folgenden:

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

Sie können die Parameter des Moduls in der Konfigurationsdatei von/etc/metricbeat/modules.d/system.ymlehen. In diesem Tutorial müssen Sie nichts an der Konfiguration ändern. Die Standardmetriksätze sindcpu,load,memory,network,process undprocess_summary. Jedes Modul verfügt über einen oder mehrere Metriksätze. Ein Metriksatz ist der Teil des Moduls, der die Daten abruft und strukturiert. Anstatt jede Metrik als separates Ereignis zu erfassen, rufen Metrik-Sets eine Liste mehrerer verwandter Metriken in einer einzelnen Anforderung an das ferne System ab.

Jetzt können Sie Metricbeat starten und aktivieren:

sudo systemctl start metricbeat
sudo systemctl enable metricbeat

Wiederholen Sie diesen Schritt auf allen Servern, auf denen Sie Metriken erfassen möchten. Danach können Sie mit dem nächsten Schritt fortfahren, in dem Sie sehen, wie Sie durch einige Dashboards von Kibana navigieren.

[[Schritt 4 - Erkunden von Kibana-Dashboards] == Schritt 4 - Erkunden von Kibana-Dashboards

In diesem Schritt werfen Sie einen Blick auf Kibana, das Webinterface, das Sie im Abschnitt Voraussetzungen installiert haben.

Wechseln Sie in einem Webbrowser zum FQDN oder zur öffentlichen IP-Adresse Ihres Elastic Stack-Servers. Nachdem Sie die in Schritt 2 vonthe Elastic Stack tutorial definierten Anmeldeinformationen eingegeben haben, wird die Kibana-Homepage angezeigt:

Kibana Homepage

Klicken Sie in der linken Navigationsleiste auf den LinkDiscover. Wählen Sie auf der SeiteDiscover das vordefinierte Indexmustermeticbeat- * aus, um Metricbeat-Daten anzuzeigen. Standardmäßig werden Ihnen alle Protokolldaten der letzten 15 Minuten angezeigt. Sie finden ein Histogramm und einige metrische Details:

Discover page

Hier können Sie Ihre Metriken durchsuchen und anpassen sowie Ihr Dashboard anpassen. Zu diesem Zeitpunkt wird es jedoch noch nicht viel geben, da Sie nur Systemstatistiken von Ihren Servern erfassen.

Verwenden Sie das linke Bedienfeld, um zur Seite vonDashboardzu navigieren und nach dem Dashboard vonMetricbeat Systemzu suchen. Dort können Sie nach den Beispiel-Dashboards suchen, die mit demsystem-Modul von Metricbeat geliefert werden.

Beispielsweise können Sie kurze Informationen zu all Ihren Hosts anzeigen:

Syslog Dashboard

Sie können auch auf den Hostnamen klicken und detailliertere Informationen anzeigen:

Sudo Dashboard

Kibana verfügt über viele weitere Funktionen, wie z. B. Grafiken und Filter.

Fazit

In diesem Lernprogramm haben Sie Metricbeat installiert und den Elastic Stack zum Sammeln und Analysieren von Systemmetriken konfiguriert. Metricbeat enthält internemodules, die Metriken von Diensten wie Apache, Nginx, Docker, MySQL, PostgreSQL und anderen erfassen. Jetzt können Sie die Metriken Ihrer Anwendungen erfassen und analysieren, indem Sie einfach die Module einschalten, die Sie benötigen.

Wenn Sie mehr über die Serverüberwachung erfahren möchten, lesen SieAn Introduction to Metrics, Monitoring, and Alerting undPutting Monitoring and Alerting into Practice.