Wer bereits Elasticsearch und Kibana nutzt, findet sicher auch Gefallen an Metricbeat – einem simplen Tool welches eure System- und Servicemetriken einfach an Elasticsearch übermittelt.
Installation
Ich nutze auf fast allen meinen Servern Ubuntu 16.04, daher folgende Vorgehensweise:
sudo apt-get update curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.0.1-amd64.deb sudo dpkg -i metricbeat-6.0.1-amd64.deb
Bevor ich den Service starte, editiere ich die entsprechende metricbeat.yml
sudo nano /etc/metricbeat/metricbeat.yml
In meinem Fall will ich vorerst nur NGINX monitoren
metricbeat.modules: - module: nginx metricsets: ["stubstatus"] period: 10s # Nginx hosts hosts: ["http://127.0.0.1"] # Path to server status. Default server-status #server_status_path: "server-status" output.elasticsearch: hosts: ["localhost:9200"] setup.kibana: host: "localhost:5601"
Wichtig ist hierbei, dass Ihr das richtige Modul auswählt, eine Liste findet Ihr hier und das Ihr den output richtig setzt, in meinem Fall natürlich Elasticsearch.
NGINX Config
Prüft vorab ob Ihr auch stubstatus am laufen habt
nginx -V 2>&1 | grep -o with-http_stub_status_module
ist es aktiv seht ihr -> with-http_stub_status_module
außerdem müsst Ihr den Pfad zu den Metriken von NGINX noch in eurer default config setzen
sudo nano /etc/nginx/sites-available/default
Dort fügt in innerhalb des server{} tags diese config hinzu. Den Ort könnt Ihr entsprechend noch anpassen, denkt aber dies dann auch in der metricbeat.yml zu machen
location /server-status { stub_status on; access_log off; allow 127.0.0.1; deny all; }
Danach könnt Ihr den metricbeat serivce starten
sudo service metricbeat start
Euer Index sollte direkt angelegt werden und der Call alle 10s ausgeführt werden.
Kibana Setup
Sucht euren Index mit metricbeat und * als Wildcard. Fügt den Index hinzu und klickt danach auf Discover.
Die Einträge sollten dann in etwas so aussehen
Bekommt Ihr die Fehlermeldung error.message:HTTP error 404 in stubstatus: 404 Not Found stimmt die Konfiguration des NGINX oder der metricbeat.yml nicht und der Metricbeat kann die NGINX Metriken nicht auslesen.
@timestamp:December 12th 2017, 19:25:02.115 beat.name:micha beat.hostname:micha beat.version:6.0.1 metricset.host:127.0.0.1 metricset.rtt:345 metricset.module:nginx metricset.name:stubstatus error.message:HTTP error 404 in stubstatus: 404 Not Found _id:Axxxxxxx _type:doc _index:metricbeat-6.0.1-2017.12.12 _score: -
Visualisierung & Dashboard
Um das ganze jetzt visuell zu betrachten brauchen wir nur unter Visualize ein Basic Chart anzulegen (Line) dort tragen wir folgenden Werte ein
Fertige Dashboards laden
cd /usr/share/metricbeat sudo ./bin/metricbeat setup -E "setup.dashboards.directory=/usr/share/metricbeat/kibana" --dashboards --path.config /etc/metricbeat
bei Erfolg seht ihr „Loaded Dashboards“ und unter Dashboards in Kibana das folgende:
Et voila