So erfassen Sie Infrastruktur-Metriken mit Packetbeat und ELK unter Ubuntu 16.04

Einführung

Mit Packetbeat können Sie den Echtzeit-Netzwerkverkehr für Protokolle auf Anwendungsebene wie HTTP und MySQL sowie DNS und andere Dienste überwachen.

Zu diesem Zweck konfigurieren Sie Agenten, die als "Versender" bezeichnet werden, auf Client-Computern, die den Netzwerkverkehr überwachen und analysieren und die Nachrichten Transaktionen zuordnen. Diese Versender erstellen dann Aufzeichnungen für jede Aktion und senden sie an Elasticsearch oder Logstash. Sobald Sie über die Daten verfügen, können Sie die Daten mit Kibana durchsuchen, analysieren und visualisieren, um fundierte Entscheidungen über Ihre Infrastruktur zu treffen oder Probleme zu beheben.

In diesem Lernprogramm konfigurieren und verwenden Sie Packetbeat mit einem ELK-Stack, um Infrastrukturmetriken zu erfassen und zu visualisieren.

Voraussetzungen

  • Ein Ubuntu 16.04-Server mit 4 GB RAM, konfiguriert mit dem ELK Stack-Setup, das im Tutorial https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack beschrieben ist -on-ubuntu-16-04 [So installieren Sie Elasticsearch, Logstash und Kibana unter Ubuntu 16.04]. Befolgen Sie das Tutorial, um den ELK-Stack zu konfigurieren und die Kibana-Dashboards zu installieren, konfigurieren Sie jedoch keine Client-Computer.

  • Ein Ubuntu 16.04-Server mit beliebigem RAM, der als Client-Computer fungiert.

  • Ein Standard-Benutzerkonto mit "+ sudo +" - Berechtigungen * für jeden Server *. Sie können ein Standardkonto einrichten, indem Sie dem Tutorial Initial Server Setup with Ubuntu 16.04 folgen.

Schritt 1 - Laden der Packetbeat-Indexvorlage in Elasticsearch

Da wir Packetbeat zum Versenden von Protokollen an Elasticsearch verwenden möchten, laden wir zunächst die Packetbeat-Indexvorlage, mit der Elasticsearch so konfiguriert wird, dass eingehende Packetbeat-Felder auf intelligente Weise analysiert werden.

Melden Sie sich zunächst bei Ihrem ELK-Server an:

ssh @

Sobald Sie angemeldet sind, laden Sie die Packetbeat-Indexvorlage in Ihr Home-Verzeichnis herunter:

cd ~
curl -O https://raw.githubusercontent.com/elastic/beats/master/packetbeat/packetbeat.template-es2x.json

Laden Sie dann die Vorlage mit diesem Befehl:

curl -XPUT 'http://localhost:9200/_template/packetbeat' [email protected]

Sie sehen die Ausgabe, wenn die Vorlage erfolgreich geladen wurde.

Output{"acknowledged":true}

Nachdem Ihr ELK-Server nun bereit ist, Daten von Packetbeat zu akzeptieren, richten Sie den Versender auf einem Client-Server ein.

Schritt 2 - Einrichten von Packetbeat auf einem Client-Server

Um den Packetbeat-Versender einzurichten, müssen Sie das SSL-Zertifikat, das Sie im vorausgesetzten Lernprogramm erstellt haben, auf den Client-Server übertragen. Es ist erforderlich, die Kommunikation zwischen den Client-Servern und dem ELK-Server herzustellen.

Suchen Sie die IP-Adresse Ihres Client-Servers. Kopieren Sie dann * auf Ihrem ELK-Server * das SSL-Zertifikat mit dem Befehl + scp + auf Ihren Client-Server:

scp /etc/pki/tls/certs/logstash-forwarder.crt :/tmp

Stellen Sie nach der Eingabe Ihres Kennworts sicher, dass die Zertifikatkopie erfolgreich war.

Melden Sie sich jetzt bei Ihrem * Client-Server * an:

ssh

Sobald Sie angemeldet sind, kopieren Sie das SSL-Zertifikat des ELK-Servers in das Verzeichnis "++":

sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

Als nächstes müssen wir Packetbeat selbst installieren. Stellen Sie auf Ihrem Client-Server sicher, dass die Beats-Quellenliste vorhanden ist. Öffne die Datei ++ zum Bearbeiten:

sudo nano /etc/apt/sources.list.d/beats.list

Wenn Sie bereits Versender installiert haben, enthält diese Datei möglicherweise bereits die folgende Zeile:

/etc/apt/source.list.d/beats.list

deb https://packages.elastic.co/beats/apt stable main

Wenn die Datei leer ist oder diese Zeile nicht existiert, fügen Sie sie hinzu und speichern Sie die Datei. Beenden Sie dann den Editor.

Zur Installation dieser Quelle benötigen wir einen GPG-Schlüssel. Packetbeat verwendet denselben GPG-Schlüssel wie Elasticsearch, den wir mit diesem Befehl installieren:

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

Installieren Sie jetzt das Packetbeat-Paket:

sudo apt-get update
sudo apt-get install packetbeat

Packetbeat ist jetzt installiert, muss jedoch konfiguriert werden, bevor Sie es verwenden können.

Schritt 3 - Konfigurieren von Packetbeat auf dem Client

Packetbeat muss wissen, was protokolliert und wohin die Daten gesendet werden sollen. Konfigurieren Sie es so, dass eine Verbindung zu Logstash auf unserem ELK-Server hergestellt wird, und definieren Sie, welche Art von Datenverkehr von ihm überwacht werden soll. Dazu ändern wir die mit Packetbeat gelieferte Standardkonfigurationsdatei.

Bearbeiten Sie auf dem Client-Server die Packetbeat-Konfigurationsdatei:

sudo nano /etc/packetbeat/packetbeat.yml

Oben in der Datei sehen Sie den Abschnitt "+ input", in dem Sie angeben können, welche Metriken und Statistiken an den ELK-Server gesendet werden sollen. Wir verwenden die Standard-Eingabeeinstellungen, können sie jedoch jederzeit an Ihre Bedürfnisse anpassen.

Wählen Sie die Netzwerkschnittstelle aus, von der der Datenverkehr erfasst werden soll. Unter Linux unterstützt Packetbeat die Erfassung aller Nachrichten, die von dem Server gesendet oder empfangen werden, auf dem Packetbeat installiert ist. Verwenden Sie dazu ++ als Gerät:

packetbeat.yml

# Select the network interfaces to sniff the data. You can use the "any"
# keyword to sniff on all connected interfaces.
interfaces:
 device:

Konfigurieren Sie im Abschnitt "+ protocols +" die Ports, an denen Packetbeat die einzelnen Protokolle finden kann. Wenn Sie nicht standardmäßige Ports verwenden, fügen Sie diese hier hinzu. Andernfalls sollten die Standardwerte in Ordnung sein.

packetbeat.yml

protocols:
 dns:
   ports:

   include_authorities: true
   include_additionals: true

 http:
   ports:

 memcache:
   ports:

 mysql:
   ports:

 pgsql:
   ports:

 redis:
   ports:

 thrift:
   ports:

 mongodb:
   ports:

Als Nächstes müssen wir Packetbeat mitteilen, wohin die Daten gesendet werden sollen.

Suchen Sie im Abschnitt "+ output " die Zeile, die mit " elasticsearch: " beginnt und den Abschnitt "Elasticsearch output" angibt. Wir werden diesen Abschnitt nicht verwenden, also * löschen oder kommentieren Sie den gesamten Elasticsearch-Ausgabeabschnitt * aus, bis zu der Zeile, in der " # logstash: +" steht.

Beginnen Sie hier mit dem Löschen:

packetbeat.yml

 ### Elasticsearch as output
 elasticsearch:
   # Array of hosts to connect to.
   # Scheme and port can be left out and will be set to the default (http and 9200)

   ...

Und lösche weiter, bis du diese Zeile findest:

packetbeat.yml

 ### Logstash as output

Anstatt die Daten an Elasticsearch zu senden, senden wir sie an Logstash. Suchen Sie also den auskommentierten Logstash-Ausgabeabschnitt, der durch die Zeile gekennzeichnet ist, die mit "+ # logstash:. " Beginnt. Kommentieren Sie diese Zeile aus, indem Sie das vorhergehende " # " löschen. Dann entfernen Sie das Kommentarzeichen in der Zeile "+" und ändern "+ localhost +" in die private IP-Adresse Ihres ELK-Servers. Der Abschnitt der Konfigurationsdatei sollte folgendermaßen aussehen:

packetbeat.yml

 ### Logstash as output
 logstash:
   # The Logstash hosts
   hosts: [":5044"]

Dadurch wird Packetbeat so konfiguriert, dass eine Verbindung zu Logstash auf Ihrem ELK-Server über Port "+ 5044 +" hergestellt wird, den Port, den wir für die Logstash-Eingabe im vorausgesetzten Lernprogramm angegeben haben.

Suchen Sie als Nächstes den Abschnitt "+ tls " und entfernen Sie den Kommentar vor " tls: ". Deaktivieren Sie dann die Zeile, die " certificate_authorities " angibt, und ändern Sie ihren Wert in "+":

packetbeat.yml

   tls:
     # List of root certificates for HTTPS server verifications
     certificate_authorities: []

Dadurch wird Packetbeat so konfiguriert, dass das vom ELK-Server kopierte Zertifikat verwendet wird. Ohne dies kann der Client keine Verbindung herstellen.

Wenn Sie Ihre Konfigurationsdatei noch einmal überprüfen möchten, vergleichen Sie Ihre mit diesem Beispiel, in dem die meisten unnötigen Kommentare zur Verbesserung der Lesbarkeit weggelassen wurden:

packetbeat.yml

############################# Sniffer #########################################
interfaces:
 device: any

############################# Protocols #######################################
protocols:
 dns:
   ports:

   include_authorities: true
   include_additionals: true

 http:
   ports:

 memcache:
   ports:

 mysql:
   ports:

 pgsql:
   ports:

 redis:
   ports:

 thrift:
   ports:

 mongodb:
   ports:

############################# Output ##########################################
output:

 ### Logstash as output
  logstash:
   hosts: [":5044"]

   tls:
     certificate_authorities: []

############################# Logging #########################################
logging:

 files:
   rotateeverybytes: 10485760 # = 10MB

Speichern Sie die Datei, und beenden Sie den Texteditor, nachdem Sie Ihre Konfiguration überprüft haben.

Starten Sie nun Packetbeat neu, um Ihre Änderungen zu übernehmen:

sudo service packetbeat restart

Und konfigurieren Sie Packetbeat so, dass es beim Neustart Ihres Servers gestartet wird:

sudo update-rc.d packetbeat defaults 95 10

Wiederholen Sie diesen Abschnitt für alle anderen Server, die Sie überwachen möchten.

Packetbeat sollte jetzt den Netzwerkverkehr überwachen und an Logstash senden. Mal sehen, ob es funktioniert.

Schritt 4 - Testen der Packetbeat-Installation

Zu diesem Zeitpunkt sollte Packetbeat auf Ihrem Client-Server Protokolle Ihres Netzwerkverkehrs an Logstash auf Ihrem ELK-Server senden. Logstash sollte die Packetbeat-Daten in einem mit einem Datumsstempel versehenen Index mit der Bezeichnung "+ packetbeat-YYYY.MM.DD +" in Elasticsearch laden. Lassen Sie uns testen, ob dies funktioniert, indem Sie eine einfache HTTP-Anfrage auf dem Client-Computer erstellen und diese Anfrage in Elasticsearch auf dem ELK-Server suchen.

Verwenden Sie auf Ihrem Client-Server "+ curl", um eine Anfrage an "+ http: // www.elastic.co" zu senden.

curl http://www.elastic.co/ > /dev/null

Überprüfen Sie dann auf Ihrem ELK-Server, ob Elasticsearch die Daten tatsächlich empfängt, indem Sie den Packetbeat-Index mit folgendem Befehl abfragen:

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

Sie sollten eine Reihe von Ausgaben sehen, die so aussehen:

Output{
 "_index" : "packetbeat-2016.09.29",
 "_type" : "http",
 "_id" : "AVdDG6pDqHsDFrI4DAlI",
 "_score" : 1.0,
 "_source" : {
   "responsetime" : 80,
   "path" : "/",
   "beat" : {
     "hostname" : "",
     "name" : ""
   },
   "direction" : "out",
   "port" : 80,
   "server" : "",
   "status" : "OK",
   "params" : "",
   "count" : 1,
   "client_port" : 52072,
   "client_proc" : "",
   "ip" : "",
   "bytes_out" : 432,
   "bytes_in" : 78,
   "query" : "GET /",
   "http" : {
     "code" : 301,
     "content_length" : 178,
     "phrase" : "Permanently"
   },
   "proc" : "",
   "client_ip" : "",
   "client_server" : "",
   "@timestamp" : "2016-09-29T15:41:07.725Z",
   "type" : "http",
   "method" : "GET",
   "@version" : "1",
   "host" : "",
   "tags" : [ "beats_input_raw_event" ]
 }
}

Wenn Ihre Ausgabe 0 Gesamttreffer anzeigt, lädt Elasticsearch keine Packetbeat-Daten unter dem von Ihnen gesuchten Index. Sie sollten es nach einigen Sekunden erneut versuchen, da es möglicherweise kurze Zeit dauert, bis die Daten erfasst werden. Wenn nach dem Warten immer noch keine Ergebnisse angezeigt werden, überprüfen Sie das Setup auf Fehler. Stellen Sie sicher, dass Sie die Konfigurationsdatei von Packetbeat auf das übertragene Zertifikat gerichtet haben, da dies unbemerkt fehlschlägt, wenn der Pfad falsch ist.

Sobald Sie die erwartete Ausgabe erhalten haben, können Sie mit dem nächsten Schritt fortfahren und lernen, wie Sie mit Kibana einige Diagramme und Grafiken Ihres Netzwerkverkehrs anzeigen.

Schritt 5 - Visualisieren von Daten mit Kibana

Wenn Sie mit der Einrichtung von Packetbeat auf allen Servern fertig sind, für die Sie Systemstatistiken erfassen möchten, schauen wir uns Kibana an.

Wechseln Sie in einem Webbrowser zum Domainnamen oder zur öffentlichen IP-Adresse Ihres ELK-Servers. Nachdem Sie die Anmeldeinformationen Ihres ELK-Servers eingegeben haben, sollte die Seite "Kibana Discover" angezeigt werden.

Klicken Sie oben auf der Seite auf die Registerkarte * Einstellungen . Wählen Sie nun * packetbeat - * aus dem Menü * Index Patterns * auf der linken Seite der Benutzeroberfläche:

image: http: //i.imgur.com/Gcd1SSE.png [Paketschlag-Indexmuster auswählen]

Wählen Sie dann die Registerkarte * Discover * am oberen Bildschirmrand, um diese Daten anzuzeigen. Auf Ihrem Bildschirm wird Folgendes angezeigt:

image: http: //i.imgur.com/JIhUioG.png [Packetbeat-Protokolleinträge]

Von hier aus können Sie Ihre verschiedenen Packetbeat-Einträge anzeigen, indem Sie nach den verfügbaren Feldern filtern. Sie können auf diese Felder klicken, um sie hinzuzufügen oder sie mithilfe von Aggregationen (Anzahl, Summe, Min, Max, Median usw.) zu visualisieren.

Kibana bietet auch eine Vielzahl von Visualisierungen, mit denen Sie Daten analysieren können. Klicken Sie oben auf dem Bildschirm auf die Registerkarte * Visualisieren *, um Visualisierungen aufzulisten oder eine gespeicherte Visualisierung zu öffnen.

image: http: //i.imgur.com/7BTCiY2.png [Packetbeat-Visualisierungen]

Schauen wir uns als Nächstes das Beispiel-Packetbeat-Dashboard an, das wir zu Beginn dieses Tutorials geladen haben. Klicken Sie oben im Bildschirm auf die Registerkarte * Dashboard * und dann auf das Symbol * Gespeichertes Dashboard laden * rechts im Bildschirm. Sie sehen eine Liste der Dashboard-Filter als paginierte Vorschläge:

image: http: //i.imgur.com/hqDKrjo.png [Beispiel für Packetbeat-Dashboard-Typen anzeigen]

Wählen Sie * Packetbeat-Dashboard * aus der Liste der Vorschläge. Da wir nur wenige Webanforderungen als Dokumente in unserem Index haben, führt das Dashboard zu * Keine Ergebnisse gefunden * für DB-, Cache-, RPC-Transaktionen oder andere Ergebnisse.

image: http: //i.imgur.com/e9HUsfn.png [Beispiel für ein Packetbeat-Dashboard anzeigen]

Wenn Sie jedoch nach unten scrollen, werden verschiedene Messdaten angezeigt, die von Ihren Client-Servern erfasst wurden, auf denen Sie Packetbeat installiert haben.

image: http: //i.imgur.com/g5aQb8g.png [Beispiel für Packetbeat-Dashboard unten anzeigen]

Von hier aus können Sie Diagramme basierend auf den Indexdaten erstellen. Beispielsweise können Sie ein Diagramm erstellen, in dem die Aufschlüsselung der HTTP-Abfragen anhand der Antwortzeit dargestellt wird. Auf diese Weise können Sie langsame Antworten Ihrer Webanwendungen nachverfolgen. Mithilfe von Unteraggregationen können Sie die Antwortzeit für jeden Code, die besuchten Domänen und vieles mehr ermitteln.

Weitere Informationen finden Sie in der Packetbeat documentation.

Fazit

Jetzt, da Ihre Systemmetriken über Elasticsearch und Logstash zentralisiert sind und Sie sie mit Kibana visualisieren können, sollten Sie auf einen Blick sehen können, was Ihre Server vorhaben. Von hier aus können Sie andere Versender untersuchen, darunter Filebeat, Topbeat und andere. Weitere Informationen zu verfügbaren Versendern finden Sie auf der Seite Beats.