So erfassen Sie Infrastrukturmetriken mit Metricbeat unter Ubuntu 18.04

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 ersetzt 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 Tutorial verwenden Sie Metricbeat, um lokale Systemmetriken wie CPU- / Speicher- / Datenträgernutzung und Netzwerknutzung von einem Ubuntu 18.04-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:

  • Zwei Ubuntu 18.04-Server, die gemäß denInitial Server Setup Guide for Ubuntu 18.04 eingerichtet wurden, einschließlich eines Nicht-Root-Benutzers mit Sudo-Berechtigungen und einer mitufw konfigurierten Firewall. Auf einem Server laden Sie den Elastic Stack herunter. In diesem Lernprogramm wird dies als "Elastic Stack-Server" bezeichnet. Der Elastic Stack-Server überwacht Ihren zweiten Server. Dieser zweite Server wird als "zweiter Ubuntu-Server" bezeichnet.

  • Der auf dem Elastic Stack-Server installierte Elastic Stack folgt dem TutorialHow To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 18.04.

[.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, bei denen es sich zum Zeitpunkt des Schreibens um Elasticsearch 6.6.2, Kibana 6.6.2, Logstash 6.6.2 und Metricbeat 6.6.2.
handelt #

[[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 Ubuntu 18.04beschränkt den Elasticsearch-Zugriff nur auf den lokalen Host. 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 werdennano verwendet:

sudo nano /etc/elasticsearch/elasticsearch.yml

Suchen Sie den folgenden Abschnitt und ändern Sie ihn, sodass Elasticsearch alle Schnittstellen überwacht:

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

Speichern und schließen Sieelasticsearch.yml, indem SieCTRL+X drücken, gefolgt vonY undENTER, wenn Sienano verwenden. Starten Sie dann den Elasticsearch-Dienst mitsystemctl neu, um neue Einstellungen zu übernehmen:

sudo systemctl restart elasticsearch

Erlauben Sie nun den Zugriff auf den Elasticsearch-Port von Ihrem zweiten Ubuntu-Server. Sie werdenufw dafür verwenden:

sudo ufw allow from second_ubuntu_server_ip/32 to any port 9200

Wiederholen Sie diesen Befehl 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 das Präfix/32 durch einen niedrigeren Wert ersetzen, z. B./24. Weitere Beispiele für UFW-Setups finden Sie im Tutorial vonUFW Essentials: Common Firewall Rules and Commands.

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

ssh sammy@second_ubuntu_server_ip

Verwenden Sie den Befehltelnet, um die Verbindung zum Elastic Stack-Server zu testen. Dieser Befehl ermöglicht die Kommunikation mit einem anderen Host unter Verwendung desTelnet-Protokolls und kann die Verfügbarkeit eines Ports auf einem Remote-System überprüfen.

telnet Elastic_Stack_server_ip 9200

Sie erhalten folgende Ausgabe:

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

Schließen Sie die Telnet-Verbindung, indem SieCTRL+] und anschließendCTRL+d drücken. Sie könnenquit eingeben und dannENTER drücken, um das Telnet-Dienstprogramm zu beenden.

Jetzt 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 Ubuntu-Server.

Melden Sie sich als Benutzer ohne Rootberechtigung bei Ihrem Elastic Stack-Server 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 apt install metricbeat

Laden Sie nach Abschluss der Installation von Metricbeat 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-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

Jetzt können Sie Metricbeat starten und aktivieren:

sudo systemctl start metricbeat
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.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"
          },
...

Die Zeile"total" : 108, gibt an, dass Metricbeat 108 Suchergebnisse für diese bestimmte Metrik gefunden hat. Wenn Ihre Ausgabe 0 Treffer insgesamt 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 Ubuntu-Server installieren.

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

Führen Sie diesen Schritt auf allen Ubuntu-Servern aus, von denen aus Sie Metriken an Ihren Elastic Stack-Server senden möchten.

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

ssh sammy@second_ubuntu_server_ip

Die Elastic Stack-Komponenten sind in den Standard-Paket-Repositorys von Ubuntu nicht verfügbar. Sie können sie jedoch mit APT installieren, nachdem Sie die Paketquellenliste von Elastic hinzugefügt haben.

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 GPG-Schlüssel von Elasticsearch in APT zu importieren:

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

Fügen Sie als Nächstes die Liste der elastischen Quellen zum Verzeichnissources.list.dhinzu, in dem APT nach neuen Quellen sucht:

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

Aktualisieren Sie als Nächstes Ihre Paketlisten, damit APT die neue Elastic-Quelle liest:

sudo apt update

Dann installiere Metricbeat mit diesem Befehl:

sudo apt install metricbeat

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

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

Sie müssen diesen Schritt auf allen Servern wiederholen, 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 die detaillierten 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.