Überwachen von Systemmetriken mit dem TICK-Stack unter Ubuntu 16.04

Einführung

The TICK stack ist eine Sammlung von Produkten der Entwickler der Zeitreihendatenbank InfluxDB. Es besteht aus folgenden Komponenten:

  • T elegraf sammelt Zeitreihendaten aus verschiedenen Quellen.

  • I nfluxDB speichert Zeitreihendaten.

  • C hronograf visualisiert und graphisiert die Zeitreihendaten.

  • K Apacitor warnt und erkennt Anomalien in Zeitreihendaten.

Sie können jede dieser Komponenten einzeln verwenden. Wenn Sie sie jedoch zusammen verwenden, erhalten Sie ein skalierbares, integriertes Open-Source-System für die Verarbeitung von Zeitreihendaten.

In diesem Tutorial richten Sie diese Plattform ein und verwenden sie als Open-Source-Überwachungssystem. Sie werden ein wenig CPU-Auslastung erzeugen und eine E-Mail-Benachrichtigung erhalten, wenn die Auslastung zu hoch wird.

Voraussetzungen

Bevor Sie beginnen, benötigen Sie Folgendes:

  • Ein Ubuntu 16.04-Server, der unter https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 eingerichtet wurde, enthält eine Anleitung zur Erstinstallation des Ubuntu 16.04-Servers. Root-Benutzer und eine Firewall.

  • Ein SMTP-Server zum Senden von Warnungen zusammen mit den Verbindungsdetails. Wenn Sie keine haben, können Sie "+ sendmail " mit " sudo apt-get install sendmail +" installieren.

  • Wenn Sie die Chronograf-Benutzeroberfläche wie in Schritt 7 erläutert sichern möchten, benötigen Sie ein https://github.com [GitHub] -Konto, das Teil einer GitHub-Organisation ist. Folgen Sie this tutorial, um eine GitHub-Organisation zu erstellen.

Schritt 1 - Hinzufügen des TICK Stack-Repositorys

Die TICK-Stack-Komponenten sind standardmäßig nicht über den Paketmanager verfügbar. Alle TICK-Stack-Komponenten verwenden dasselbe Repository. Daher richten wir eine Repository-Konfigurationsdatei ein, um die Installation nahtlos zu gestalten.

Verwenden Sie die folgenden Befehle, um das InfluxData-Repository hinzuzufügen:

curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/lsb-release
echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

Aktualisieren Sie mit dem neuen Repository die Paketliste:

sudo apt-get update

Jetzt können wir InfluxDB installieren und konfigurieren.

Schritt 2 - InfluxDB installieren und Authentifizierung konfigurieren

InfluxDB ist eine Open-Source-Datenbank, die für das schnelle und hochverfügbare Speichern und Abrufen von Zeitreihendaten optimiert ist. InfluxDB eignet sich hervorragend für Betriebsüberwachung, Anwendungsmetriken und Echtzeitanalysen.

Führen Sie den folgenden Befehl aus, um InfluxDB zu installieren:

sudo apt-get install influxdb

Starten Sie nach Abschluss der Installation den InfluxDB-Dienst:

sudo systemctl start influxdb

Stellen Sie dann sicher, dass der Dienst ordnungsgemäß ausgeführt wird:

systemctl status influxdb

Sie sehen den folgenden Status, der bestätigt, dass der Dienst ausgeführt wird:

[secondary_label Output
●  - InfluxDB is an open-source, distributed, time series database
  Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
  Active:
    Docs: https://docs.influxdata.com/influxdb/
Main PID: 1619 (influxd)
  CGroup: /system.slice/influxdb.service
          └─1619 /usr/bin/influxd -config /etc/influxdb/influxdb.conf

InfluxDB wird ausgeführt, Sie möchten jedoch die Benutzerauthentifizierung aktivieren, um den Zugriff auf die Datenbank einzuschränken. Lässt mindestens einen Admin-Benutzer erstellen.

Starten Sie die InfluxDB-Konsole:

influx

Führen Sie den folgenden Befehl aus, um einen neuen Administratorbenutzer zu erstellen. Wir erstellen einen "+ sammy " - Benutzer mit dem Passwort " sammy_admin +". Sie können jedoch alles verwenden, was Sie möchten.

CREATE USER "" WITH PASSWORD '' WITH ALL PRIVILEGES

Stellen Sie sicher, dass der Benutzer erstellt wurde:

show users

Sie werden die folgende Ausgabe sehen, die bestätigt, dass Ihr Benutzer erstellt wurde:

Output    user  admin
   ----  -----
    true

Nachdem der Benutzer existiert, beenden Sie die InfluxDB-Konsole:

exit

Öffnen Sie nun die Datei "+ / etc / influxdb / influxdb.conf +" in Ihrem Editor. Dies ist die Konfigurationsdatei für InfluxDB.

sudo nano /etc/influxdb/influxdb.conf

Suchen Sie den Abschnitt "+ [http] ", deaktivieren Sie die Option " auth-enabled " und setzen Sie ihren Wert auf " true +":

/etc/influxdb/influxdb.conf

...
   [http]
     # Determines whether HTTP endpoint is enabled.
     # enabled = true

     # The bind address used by the HTTP service.
     # bind-address = ":8086"

     # Determines whether HTTP authentication is enabled.

...

Speichern Sie dann die Datei, beenden Sie den Editor und starten Sie den InfluxDB-Dienst neu:

sudo systemctl restart influxdb

InfluxDB ist jetzt konfiguriert. Installieren wir also Telegraf, einen Agenten zum Erfassen von Metriken.

Schritt 3 - Installieren und Konfigurieren von Telegraf

Telegraf ist ein Open-Source-Agent, der Messdaten und Daten auf dem System sammelt, auf dem er ausgeführt wird, oder von anderen Diensten. Telegraf schreibt dann die Daten in InfluxDB oder andere Ausgaben.

Führen Sie den folgenden Befehl aus, um Telegraf zu installieren:

sudo apt-get install telegraf

Der Telegraf-Dienst wird nach der Installation automatisch gestartet.

Telegraf verwendet Plugins zur Ein- und Ausgabe von Daten. Das Standard-Ausgabe-Plugin ist für InfluxDB. Da wir die Benutzerauthentifizierung für IndexedDB aktiviert haben, müssen wir die Telegraf-Konfigurationsdatei ändern, um den Benutzernamen und das Kennwort anzugeben, die wir konfiguriert haben. Öffnen Sie die Telegraf-Konfigurationsdatei in Ihrem Editor:

sudo nano /etc/telegraf/telegraf.conf

Suchen Sie den Abschnitt "+ [output.influxdb] +" und geben Sie den Benutzernamen und das Passwort ein:

/etc/telegraf/telegraf.conf

   [[outputs.influxdb]]
     ## The full HTTP or UDP endpoint URL for your InfluxDB instance.
     ## Multiple urls can be specified as part of the same cluster,
     ## this means that only ONE of the urls will be written to each interval.
     # urls = ["udp://localhost:8089"] # UDP endpoint example
     urls = ["http://localhost:8086"] # required
     ## The target database for metrics (telegraf will create it if not exists).
     database = "telegraf" # required

     ...

     ## Write timeout (for the InfluxDB client), formatted as a string.
     ## If not provided, will default to 5s. 0s means no timeout (not recommended).
     timeout = "5s"


     ## Set the user agent for HTTP POSTs (can be useful for log differentiation)
     # user_agent = "telegraf"
     ## Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes)
     # udp_payload = 512

Speichern Sie die Datei, beenden Sie den Editor und starten Sie Telegraf neu:

sudo systemctl restart telegraf

Überprüfen Sie dann, ob der Dienst ordnungsgemäß ausgeführt wird:

systemctl status telegraf

Der folgende Status zeigt an, dass Telegraf ausgeführt wird.

Output●  - The plugin-driven server agent for reporting metrics into InfluxDB
  Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled)
  Active:
    Docs: https://github.com/influxdata/telegraf
Main PID: 1752 (telegraf)
  CGroup: /system.slice/telegraf.service
          └─1752 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

Telegraf sammelt jetzt Daten und schreibt sie in InfluxDB. Lassen Sie uns die InfluxDB-Konsole öffnen und sehen, welche Messungen Telegraf in der Datenbank speichert. Stellen Sie eine Verbindung mit dem zuvor konfigurierten Benutzernamen und Passwort her:

influx -username '' -password ''

Führen Sie nach dem Anmelden diesen Befehl aus, um die verfügbaren Datenbanken anzuzeigen:

show databases

Sie sehen die "+ telegraf +" - Datenbank in der Ausgabe:

Output    name: databases
   name
   ----
   _internal

Lassen Sie uns sehen, was Telegraf in dieser Datenbank speichert. Führen Sie den folgenden Befehl aus, um zur Telegraf-Datenbank zu wechseln:

use telegraf

Zeigen Sie die verschiedenen Messungen an, die Telegraf durch Ausführen dieses Befehls erfasst hat:

show measurements

Sie sehen die folgende Ausgabe:

Output    name: measurements
   name
   ----
   cpu
   disk
   diskio
   kernel
   mem
   processes
   swap
   system

Wie Sie sehen, hat Telegraf viele Informationen in dieser Datenbank gesammelt und gespeichert.

Es gibt mehr als 60 Eingangs-Plugins für Telegraf. Es kann Messdaten aus vielen gängigen Diensten und Datenbanken erfassen, darunter:

  • Apache

  • Kassandra

  • Docker

  • Elasticsearch

  • Graylog

  • IPtables

  • MySQL

  • PostgreSQL

  • Redis

  • SNMP

  • und viele andere

Sie können Verwendungsanweisungen für jedes Eingabe-Plugin anzeigen, indem Sie "+ telegraf -usage +" in einem Terminalfenster ausführen.

Beenden Sie die InfluxDB-Konsole:

exit

Nachdem wir wissen, dass Telegraf Messungen speichert, richten wir Kapacitor für die Verarbeitung der Daten ein.

Schritt 4 - Installieren von Kapacitor

Kapacitor ist eine Datenverarbeitungsmaschine. Sie können Ihre eigene benutzerdefinierte Logik einbinden, um Warnungen mit dynamischen Schwellenwerten zu verarbeiten, Metriken für Muster abzugleichen oder statistische Anomalien zu identifizieren. Wir werden Kapacitor verwenden, um Daten aus InfluxDB zu lesen, Warnungen zu generieren und diese Warnungen an eine angegebene E-Mail-Adresse zu senden.

Führen Sie den folgenden Befehl aus, um Kapacitor zu installieren:

sudo apt-get install kapacitor

Öffnen Sie die Kapacitor-Konfigurationsdatei in Ihrem Editor:

sudo nano /etc/kapacitor/kapacitor.conf

Suchen Sie den Abschnitt + + und geben Sie den Benutzernamen und das Kennwort ein, um eine Verbindung zur InfluxDB-Datenbank herzustellen:

/etc/kapacitor/kapacitor.conf

# Multiple InfluxDB configurations can be defined.
# Exactly one must be marked as the default.
# Each one will be given a name and can be referenced in batch queries and InfluxDBOut nodes.
[[influxdb]]
 # Connect to an InfluxDB cluster
 # Kapacitor can subscribe, query and write to this cluster.
 # Using InfluxDB is not required and can be disabled.
 enabled = true
 default = true
 name = "localhost"
 urls = ["http://localhost:8086"]


...

Speichern Sie die Datei, beenden Sie den Editor und starten Sie Kapacitor:

sudo systemctl start kapacitor

Lassen Sie uns nun überprüfen, ob der Kapacitor ausgeführt wird. Überprüfen Sie die Aufgabenliste von Kapacitor mit dem folgenden Befehl:

kapacitor list tasks

Wenn Kapacitor in Betrieb ist, wird eine leere Liste mit Aufgaben angezeigt:

Output    ID                            Type      Status    Executing Databases and Retention Policies

Nachdem Sie Kapacitor installiert und konfiguriert haben, installieren Sie die Benutzeroberflächenkomponente des TICK-Stacks, damit wir einige Ergebnisse sehen und einige Warnungen konfigurieren können.

Schritt 5 - Installieren und Konfigurieren von Chronograf

Chronograf ist eine Grafik- und Visualisierungsanwendung, die Tools zur Visualisierung von Überwachungsdaten sowie zur Erstellung von Warn- und Automatisierungsregeln bereitstellt. Es unterstützt Vorlagen und verfügt über eine Bibliothek intelligenter, vorkonfigurierter Dashboards für allgemeine Datensätze. Wir konfigurieren es so, dass es eine Verbindung zu den anderen von uns installierten Komponenten herstellt.

Laden Sie das neueste Paket herunter und installieren Sie es:

wget https://dl.influxdata.com/chronograf/releases/chronograf__amd64.deb
sudo dpkg -i chronograf__amd64.deb

Dann starten Sie den Chronograf-Service:

sudo systemctl start chronograf

Sie können jetzt auf die Chronograf-Oberfläche zugreifen, indem Sie in Ihrem Webbrowser "+ http: //: 8888 +" aufrufen.

Sie sehen eine Begrüßungsseite wie in der folgenden Abbildung:

image: https://assets.digitalocean.com/articles/tickstack_ubuntu1604/BM7l6eF.png [Der Chronograf-Begrüßungsbildschirm mit Feldern zum Herstellen einer Verbindung zu einer Datenquelle]

Geben Sie den Benutzernamen und das Passwort für die InfluxDB-Datenbank ein und klicken Sie auf * Connect New Source * (Neue Quelle verbinden), um fortzufahren.

Sobald die Verbindung hergestellt ist, wird eine Liste der Hosts angezeigt. Klicken Sie auf den Hostnamen Ihres Servers, um ein Dashboard mit einer Reihe von Diagrammen auf Systemebene zu Ihrem Host zu öffnen, wie in der folgenden Abbildung dargestellt:

Verbinden wir nun Chronograf mit Kapacitor, um eine Warnung einzurichten. Bewegen Sie den Mauszeiger über das Zahnradsymbol im linken Navigationsmenü und klicken Sie auf * Kapacitor *, um die Konfigurationsseite zu öffnen.

Verwenden Sie die Standardverbindungsdetails. Wir haben keinen Benutzernamen und kein Passwort für Kapacitor konfiguriert. Klicken Sie auf * Connect Kapacitor *. Sobald die Verbindung zu Kapacitor erfolgreich hergestellt wurde, wird der Abschnitt * Configure Alert Endpoints * (Warnendpunkte konfigurieren) unter dem Formular angezeigt.

Kapacitor unterstützt mehrere Warnendpunkte:

  • HipChat

  • OpsGenie

  • PagerDuty

  • Sensu

  • Locker

  • SMTP

  • Talk

  • Telegramm

  • VictorOps

Die einfachste Kommunikationsmethode ist * SMTP *, die standardmäßig ausgewählt ist. Füllen Sie das Feld * Von E-Mail * mit der Adresse aus, von der aus Benachrichtigungen gesendet werden. Geben Sie dann die Details für Ihren SMTP-Server ein oder belassen Sie die Standardwerte, wenn Sie "+ sendmail +" installiert haben. Klicken Sie dann auf * Speichern *.

Lassen Sie uns nach erfolgter Konfiguration einige Warnungen erstellen.

Schritt 6 - Konfigurieren von Warnungen

Richten wir eine einfache Warnung ein, die nach einer hohen CPU-Auslastung sucht.

Bewegen Sie den Mauszeiger über das Ausrufezeichen im linken Navigationsmenü und klicken Sie auf * Kapacitor Rules *. Klicken Sie dann auf * Neue Regel erstellen *.

Wählen Sie im ersten Abschnitt die Zeitreihe aus, indem Sie auf * telegraf.autogen * klicken. Wählen Sie dann * system * aus der angezeigten Liste. Dann wählen Sie * load1 *. Im unteren Bereich sehen Sie sofort eine entsprechende Grafik.

Suchen Sie über dem Diagramm das Feld mit der Aufschrift * Send Alert, wobei load1 größer als * ist, und geben Sie als Wert + 0.8 + ein.

Fügen Sie dann den folgenden Text in das Feld * Warnmeldung * ein, um den Text der Warnmeldung zu konfigurieren:

{{ .ID }} is {{ .Level }} value: {{ index .Fields "value" }}

Sie können mit der Maus über die Einträge im Abschnitt * Vorlagen * fahren, um Beschreibungen der einzelnen Felder zu erhalten.

Wählen Sie dann die Option * Smtp * aus der Dropdown-Liste * Diesen Alert senden an * und geben Sie Ihre E-Mail-Adresse in das zugehörige Feld ein.

Standardmäßig erhalten Sie Nachrichten im JSON-Format wie folgt:

Beispielnachricht

{
   "Name":"system",
   "TaskName":"chronograf-v1-50c67090-d74d-42ba-a47e-45ba7268619f",
   "Group":"nil",
   "Tags":{
       "host":"centos-tick"
   },
   "ID":"TEST:nil",
   "Fields":{
       "value":1.25
   },
   "Level":"CRITICAL",
   "Time":"2017-03-08T12:09:30Z",
   "Message":"TEST:nil is CRITICAL value: 1.25"
}

Sie können für die E-Mail-Benachrichtigungen besser lesbare Nachrichten einrichten. Geben Sie dazu Ihre Nachricht in das Textfeld mit dem Platzhalter * E-Mail-Nachrichtentext hier einfügen * ein.

Sie können diese Regel umbenennen, indem Sie oben links auf der Seite auf ihren Namen klicken und einen neuen Namen eingeben.

Klicken Sie abschließend oben rechts auf * Regel speichern *, um die Konfiguration dieser Regel abzuschließen.

Um diese neu erstellte Warnung zu testen, erstellen Sie einen CPU-Spitzenwert, indem Sie mit dem Befehl "+ dd " Daten aus " / dev / zero " lesen und an " / dev / null +" senden:

dd if=/dev/zero of=/dev/null

Lassen Sie den Befehl einige Minuten lang laufen, was ausreichen sollte, um eine Spitze zu erzeugen. Sie können den Befehl jederzeit stoppen, indem Sie die Tastenkombination "+ STRG + C +" drücken.

Nach einer Weile erhalten Sie eine E-Mail-Nachricht. Darüber hinaus können Sie alle Ihre Benachrichtigungen anzeigen, indem Sie im linken Navigationsmenü der Chronograf-Benutzeroberfläche auf * Benachrichtigungsverlauf * klicken.

Wir haben Benachrichtigungen im Gange, aber jeder kann sich bei Chronograf anmelden. Beschränken wir den Zugriff.

Schritt 7 - Sichern von Chronograf mit OAuth

Standardmäßig kann jeder, der die Adresse des Servers kennt, auf dem die Chronograf-Anwendung ausgeführt wird, alle Daten anzeigen. Dies ist für die Testumgebung akzeptabel, jedoch nicht für die Produktion. Chronograf unterstützt die OAuth-Authentifizierung für Google, Heroku und GitHub. Wir konfigurieren die Anmeldung über ein https://github.com [GitHub] -Konto, sodass Sie eines benötigen, um fortzufahren.

Registrieren Sie zunächst eine neue Anwendung bei GitHub. Melden Sie sich in Ihrem GitHub-Konto an und navigieren Sie zu https://github.com/settings/applications/new.

Dann füllen Sie das Formular mit folgenden Angaben aus:

  1. Füllen Sie * Bewerbungsname * mit * Chronograf * oder einem passenden aussagekräftigen Namen aus.

  2. Verwenden Sie für die * Homepage-URL * + http: //: 8888 +.

  3. Füllen Sie die * Authorization Callback URL * mit + http: //: 8888 / oauth / github / callback + aus.

  4. Klicken Sie auf * Anwendung registrieren *, um die Einstellungen zu speichern.

  5. Kopieren Sie die Werte für * Client ID * und * Client Secret *, die auf dem nächsten Bildschirm angezeigt werden.

Bearbeiten Sie als Nächstes das systemd-Skript von Chronograf, um die Authentifizierung zu aktivieren. Öffnen Sie die Datei "+ / lib / systemd / system / chronograf.service +":

sudo nano /lib/systemd/system/chronograf.service

Suchen Sie dann den Abschnitt "+ [Service] " und bearbeiten Sie die Zeile, die mit " ExecStart = +" beginnt:

/lib/systemd/system/chronograf.service

[Service]
User=chronograf
Group=chronograf
/usr/bin/chronograf --host 0.0.0.0 --port 8888 -b /var/lib/chronograf/chronograf-v1.db -c /usr/share/chronograf/canned -t '' -i '' -s '' -o ''
KillMode=control-group
Restart=on-failure

Das + secret_token + wird von allen OAuth-Providern benötigt. Stellen Sie eine zufällige Zeichenfolge ein. Verwenden Sie für die anderen Werte Ihre Github-Client-ID, Ihr Github-Client-Geheimnis und Ihre Github-Organisation.

Speichern Sie die Datei, beenden Sie den Editor und starten Sie den Chronograf-Dienst neu:

sudo systemctl daemon-reload
sudo systemctl restart chronograf

Öffnen Sie "+ http: //: 8888 +", um auf die Chronograf-Oberfläche zuzugreifen. Diesmal wird Ihnen die Schaltfläche "Mit Github anmelden" angezeigt. Klicken Sie auf die Schaltfläche, um sich anzumelden, und Sie werden aufgefordert, der Anwendung den Zugriff auf Ihr Github-Konto zu ermöglichen. Sobald Sie den Zugriff erlauben, werden Sie angemeldet.

Fazit

In diesem Tutorial haben Sie gesehen, wie der TICK-Stack ein leistungsstarkes Werkzeug zum Speichern, Analysieren und Visualisieren von Zeitreihendaten sein kann. Es hat viele Funktionen und Anwendungsfälle. Beispielsweise können Sie mit Kapacitor anomaly detection oder https://docs.influxdata.com/kapacitor/v1.2/ ausführen. examples / live_leaderboard / [Live-Bestenliste der Spielergebnisse erstellen]. Weitere Informationen zum TICK-Stapel finden Sie in der offiziellen Dokumentation unter official documentation.