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:
image: https://assets.digitalocean.com/articles/tickstack_ubuntu1604/OXk2ohb.png [Das Dashboard für Ihren Server]
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.
image: https://assets.digitalocean.com/articles/tickstack_ubuntu1604/B1pTobl.png [Konfigurieren von Kapacitor]
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:
-
Füllen Sie * Bewerbungsname * mit * Chronograf * oder einem passenden aussagekräftigen Namen aus.
-
Verwenden Sie für die * Homepage-URL *
+ http: //: 8888 +
. -
Füllen Sie die * Authorization Callback URL * mit
+ http: //: 8888 / oauth / github / callback +
aus. -
Klicken Sie auf * Anwendung registrieren *, um die Einstellungen zu speichern.
-
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.