Prometheus: Abrufen von Metriken von Linux
Wie man Linux-Server-Metriken in Prometheus mit Node Exporter abruft
👋 Willkommen in der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Prometheus Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:
Alert Managerinklusive, um Warnungen anSlack,Mattermost,PagerDutyusw. zu senden.- Dedizierter E-Mail-Server zum Versenden von unbegrenzten E-Mail-Warnungen.
Blackboxzur Überprüfung vonHTTP,ICMP,TCPund mehr.- Einfache Konfiguration mit Online-Konfigurationsdatei-Editor.
- Mühelose Updates mit nur einem Klick.
- Optimale Leistung und robuste Sicherheit durch eine private und dedizierte VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Prometheus Cloud Hosting-Lösung von Stackhero auszuprobieren!
Was ist Prometheus Node Exporter
Node Exporter ist eine Software, die Sie auf *NIX-Kernen (Linux, OpenBSD, FreeBSD oder Darwin) installieren können, um Systemmetriken für Prometheus bereitzustellen. Es ist ein wesentlicher Bestandteil zur Überwachung der Serverleistung und der Infrastrukturgesundheit.
In der Prometheus-Terminologie fungiert Node Exporter als Exporteur und wird als Ziel in Ihrer Prometheus-Konfiguration hinzugefügt. Prometheus verbindet sich in regelmäßigen Abständen über HTTP mit Node Exporter über den TCP-Port 9100, um Metriken abzurufen.
Zusammenfassend ermöglicht Node Exporter die Überwachung eines Linux-basierten Systems. Für Windows-Systeme können Sie den Windows Exporter verwenden.
Großes Bild von Stackhero für Prometheus
Prometheus Node Exporter auf einem Linux-Server installieren
Sie können Node Exporter von seiner GitHub-Releases-Seite herunterladen. Es wird als Binärdatei verteilt, die direkt auf Ihrem System läuft. Da es für den kontinuierlichen Betrieb ausgelegt ist, wird empfohlen, es so zu konfigurieren, dass es automatisch beim Start Ihres Servers startet.
Standardmäßig öffnet Node Exporter Port 9100 für die Welt ohne Authentifizierung oder Verschlüsselung. Es wird dringend empfohlen, sowohl Authentifizierung als auch TLS-Verschlüsselung hinzuzufügen (siehe unten) und eine Firewall einzurichten, um den Zugriff auf Port 9100 zu beschränken, sodass nur Ihr Prometheus-Server oder andere autorisierte IP-Adressen eine Verbindung herstellen können.
Wie man Prometheus Node Exporter auf Ubuntu installiert
Sie können diese Schritte auf Ubuntu befolgen:
# Gehen Sie zu https://github.com/prometheus/node_exporter/releases, um die neueste Versionsnummer zu erhalten.
node_exporter_version="1.2.0"
node_exporter_release="linux-amd64"
# node_exporter herunterladen und installieren
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v${node_exporter_version}/node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
tar xvfa node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
sudo mv node_exporter-${node_exporter_version}.${node_exporter_release}/node_exporter /usr/local/bin/
rm -rf node_exporter-${node_exporter_version}.${node_exporter_release} node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
# Erstellen Sie einen Benutzer "node_exporter"
sudo useradd -rs /bin/false node_exporter
# Erstellen Sie einen systemd-Dienst, um node_exporter automatisch beim Start zu starten
sudo bash -c 'cat << EOF > /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.config=/etc/prometheus_node_exporter/configuration.yml
[Install]
WantedBy=multi-user.target
EOF'
# Erstellen Sie ein Konfigurationsverzeichnis und eine Datei
sudo mkdir -p /etc/prometheus_node_exporter/
sudo touch /etc/prometheus_node_exporter/configuration.yml
sudo chmod 700 /etc/prometheus_node_exporter
sudo chmod 600 /etc/prometheus_node_exporter/*
sudo chown -R node_exporter:node_exporter /etc/prometheus_node_exporter
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
# Starten Sie den node_exporter-Daemon und überprüfen Sie seinen Status
sudo systemctl start node_exporter
sudo systemctl status node_exporter
Zu diesem Zeitpunkt sollte die node_exporter-Binärdatei auf Ihrem Server laufen. Um zu bestätigen, dass es funktioniert, können Sie sich verbinden und überprüfen, ob es Metriken zurückgibt:
curl http://localhost:9100/metrics
Node Exporter öffnet Port 9100 für das öffentliche Netzwerk. Das bedeutet, dass jeder eine Verbindung herstellen und Ihre Servermetriken abrufen kann! Mindestens sollten Sie Authentifizierung und TLS-Verschlüsselung hinzufügen (siehe unten) und es wird dringend empfohlen, eine Firewall einzurichten, um Anfragen an Port 9100 von anderen IPs als Ihrem Prometheus-Server zu blockieren.
Wie man Prometheus Node Exporter auf Debian installiert
Der Installationsprozess für Node Exporter auf Debian ist identisch mit der oben beschriebenen Ubuntu-Methode. Folgen Sie einfach den gleichen Anweisungen.
Wie man Prometheus Node Exporter auf anderen Systemen installiert
Die Installationsschritte für Node Exporter hängen von dem System ab, das Sie verwenden. Obwohl keine detaillierte Dokumentation für jede Plattform bereitgestellt wird, besteht das grundlegende Verfahren darin, das zu Ihrem System passende Binärprogramm herunterzuladen und es so zu konfigurieren, dass es beim Start ausgeführt wird.
Authentifizierung zu Prometheus Node Exporter hinzufügen
Standardmäßig führt Node Exporter keine Authentifizierung durch, was bedeutet, dass jeder die bereitgestellten Metriken abrufen kann. Um den Zugriff zu sichern, können Sie eine grundlegende Authentifizierung für einen Benutzer hinzufügen.
Generieren eines zufälligen Passworts
Generieren Sie ein Passwort mit den folgenden Befehlen:
password=`openssl rand -base64 32`
passwordHashed=`echo ${password} | htpasswd -inBC 10 "" | tr -d ':'`
echo "Klartext-Passwort für den Prometheus-Server aufbewahren: ${password}"
Wenn Sie das
htpasswd-Binärprogramm nicht haben, können Sie es auf Debian/Ubuntu mitapt-get install --no-install-recommends apache2-utilsinstallieren.
Bewahren Sie das Klartext-Passwort sicher auf, da Sie es bei der Konfiguration von Prometheus benötigen.
Hinzufügen des Benutzers und Neustarten von Node Exporter
Fügen Sie die folgenden Zeilen zur Konfigurationsdatei hinzu, um einen Benutzer namens "prometheus" mit dem generierten Passwort-Hash hinzuzufügen:
sudo cat << EOF >> /etc/prometheus_node_exporter/configuration.yml
basic_auth_users:
prometheus: ${passwordHashed}
EOF
# Node Exporter neu starten
sudo systemctl restart node_exporter
Überprüfen Sie schließlich, ob die Authentifizierung korrekt funktioniert:
- Das Ausführen von
curl http://localhost:9100/metricssollte "Unauthorized" zurückgeben. - Das Ausführen von
curl -u prometheus:${password} http://localhost:9100/metricssollte die Liste der Metriken zurückgeben.
TLS-Verschlüsselung zu Prometheus Node Exporter hinzufügen
Standardmäßig verschlüsselt Node Exporter keine Kommunikation. Das bedeutet, dass Anmeldedaten, einschließlich des zuvor definierten Passworts, im Klartext übertragen werden. Um die Kommunikation zu sichern, können Sie die TLS-Verschlüsselung wie folgt aktivieren.
Erstellen von TLS-Zertifikaten
Führen Sie die folgenden Befehle aus, um ein TLS-Zertifikat und einen Schlüssel zu erstellen:
# TLS-Zertifikat erstellen
cd /tmp
sudo openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 \
-keyout /etc/prometheus_node_exporter/tlsCertificate.key \
-out /etc/prometheus_node_exporter/tlsCertificate.crt \
-subj "/CN=`hostname`" \
-addext "subjectAltName = DNS:`hostname`"
sudo chmod 600 /etc/prometheus_node_exporter/*
sudo chown -R node_exporter:node_exporter /etc/prometheus_node_exporter
Aktualisieren der Konfiguration
Fügen Sie die folgenden Zeilen zur Konfigurationsdatei hinzu, um TLS-Einstellungen hinzuzufügen, und starten Sie dann Node Exporter neu:
sudo cat << 'EOF' >> /etc/prometheus_node_exporter/configuration.yml
tls_server_config:
cert_file: /etc/prometheus_node_exporter/tlsCertificate.crt
key_file: /etc/prometheus_node_exporter/tlsCertificate.key
EOF
# Prometheus Node Exporter neu starten
sudo systemctl restart node_exporter
Sie können überprüfen, ob TLS aktiv ist, indem Sie sich mit dem folgenden Befehl über HTTPS verbinden:
curl -k -u prometheus:${password} https://localhost:9100/metrics
Beachten Sie, dass diese Methode kein CA-Zertifikat verwendet, sodass Sie die Option "-k" an cURL übergeben müssen, um die Zertifikatsüberprüfung zu umgehen.
Prometheus-Server konfigurieren, um Daten von Node Exporter abzurufen
Nachdem Sie Node Exporter installiert und gesichert haben, konfigurieren Sie Ihren Prometheus-Server, um Metriken in regelmäßigen Abständen abzurufen.
Wählen Sie auf Stackhero Ihren Prometheus-Dienst aus und gehen Sie zur URL "Prometheus-Konfiguration". Fügen Sie dann Folgendes zu Ihrem scrape_configs-Abschnitt hinzu:
scrape_configs:
- job_name: "My servers pool"
static_configs:
- targets: [ "<yourLinuxServerDomain>:9100" ]
basic_auth:
username: "prometheus"
password: "<password>"
scheme: https
tls_config:
insecure_skip_verify: true
# Relabeling "instance", um den ":9100"-Teil zu entfernen
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: '([^:]+)(:[0-9]+)?'
replacement: '${1}'
Speichern Sie die Datei und überprüfen Sie die Prometheus-Protokolle, um zu bestätigen, dass sie erfolgreich neu geladen wurde (Sie können die Protokolle im Stackhero-Dashboard anzeigen, indem Sie Ihren Prometheus-Dienst auswählen und auf die Registerkarte "Logs" klicken).
Überprüfen Sie schließlich, ob Prometheus Metriken abruft, indem Sie auf das Prometheus-UI im Stackhero-Dashboard zugreifen und zu Status > Targets navigieren. Ihr Linux-Server sollte in der Zielliste als UP erscheinen.
Das Ziel "myLinuxServer" ist UP
Daten auf Prometheus anzeigen
Um die von Node Exporter abgerufenen Metriken anzuzeigen, melden Sie sich über das Stackhero-Dashboard mit der URL "Prometheus UI" oder direkt unter https://<prometheusDomain>/ bei Prometheus an.
Geben Sie im Feld "Expression" node_memory_MemTotal_bytes ein und drücken Sie die Eingabetaste. Wenn alles korrekt konfiguriert ist, sehen Sie den gesamten RAM des Servers in Bytes angezeigt.
Die Gesamtmenge an RAM für diesen Server beträgt 4068794368 Bytes, was 3,78 GB entspricht
Grafana konfigurieren, um Prometheus-Daten von Node Exporter anzuzeigen
Grafana kann mühelos Dashboards basierend auf Prometheus-Daten erstellen. Für detaillierte Anweisungen zur Konfiguration von Grafana zur Anzeige von Prometheus-Daten, lesen Sie bitte die Dokumentation von Grafana.
Beispiel eines von Grafana generierten Dashboards, basierend auf Prometheus Node Exporter-Daten