Prometheus: Het ophalen van statistieken van Linux

Hoe Linux-serverstatistieken op te halen in Prometheus met Node Exporter

👋 Welkom bij de Stackhero-documentatie!

Stackhero biedt een kant-en-klare Prometheus cloud oplossing die tal van voordelen biedt, waaronder:

  • Alert Manager inbegrepen om meldingen te sturen naar Slack, Mattermost, PagerDuty, enz.
  • Toegewijde e-mailserver om onbeperkte e-mailmeldingen te verzenden.
  • Blackbox om HTTP, ICMP, TCP en meer te testen.
  • Eenvoudige configuratie met online configuratiebestand editor.
  • Moeiteloze updates met slechts één klik.
  • Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.

Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Prometheus cloud hosting oplossing van Stackhero te proberen!

Node Exporter is software die u kunt installeren op *NIX-kernels (Linux, OpenBSD, FreeBSD of Darwin) om systeemstatistieken voor Prometheus bloot te leggen. Het is een essentieel onderdeel voor het monitoren van serverprestaties en de gezondheid van de infrastructuur.

In Prometheus-terminologie fungeert Node Exporter als een exporter en wordt toegevoegd als een doel in uw Prometheus-configuratie. Prometheus maakt verbinding met Node Exporter via TCP-poort 9100 via HTTP op regelmatige intervallen om statistieken op te halen.

Samengevat stelt Node Exporter u in staat om een Linux-gebaseerd systeem te monitoren. Voor Windows-systemen kunt u de Windows Exporter gebruiken.

Groot overzicht van Stackhero voor PrometheusGroot overzicht van Stackhero voor Prometheus

U kunt Node Exporter downloaden van de GitHub-releasespagina. Het wordt gedistribueerd als een binaire die direct op uw systeem draait. Omdat het is ontworpen om continu te draaien, wordt aanbevolen om het zo te configureren dat het automatisch start wanneer uw server opstart.

Standaard opent Node Exporter poort 9100 voor de wereld zonder authenticatie of encryptie. Het wordt sterk aanbevolen om zowel authenticatie als TLS-encryptie toe te voegen (zie hieronder) en een firewall in te stellen om toegang tot poort 9100 te beperken, zodat alleen uw Prometheus-server of andere geautoriseerde IP-adressen verbinding kunnen maken.

U kunt deze stappen op Ubuntu volgen:

# Ga naar https://github.com/prometheus/node_exporter/releases om het laatste versienummer te krijgen.
node_exporter_version="1.2.0"
node_exporter_release="linux-amd64"

# Download en installeer node_exporter
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

# Maak een gebruiker "node_exporter"
sudo useradd -rs /bin/false node_exporter

# Maak een systemd-service om node_exporter automatisch bij opstarten te 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'

# Maak een configuratiemap en bestand
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

# Start de node_exporter-daemon en controleer de status
sudo systemctl start node_exporter
sudo systemctl status node_exporter

Op dit punt zou de node_exporter-binaire op uw server moeten draaien. Om te bevestigen dat het werkt, kunt u verbinding maken en controleren of het statistieken retourneert:

curl http://localhost:9100/metrics

Node Exporter opent poort 9100 naar het openbare netwerk. Dit betekent dat iedereen verbinding kan maken en uw serverstatistieken kan ophalen! U moet minimaal authenticatie en TLS-encryptie toevoegen (zie hieronder) en het wordt sterk aanbevolen om een firewall in te stellen om verzoeken naar poort 9100 van andere IP's dan uw Prometheus-server te blokkeren.

Het installatieproces voor Node Exporter op Debian is identiek aan de hierboven beschreven Ubuntu-methode. Volg gewoon dezelfde instructies.

De installatie stappen voor Node Exporter hangen af van het systeem dat u gebruikt. Hoewel gedetailleerde documentatie voor elk platform niet wordt verstrekt, omvat de basisprocedure het downloaden van de binaire die bij uw systeem past en het configureren om bij opstarten te starten.

Standaard voert Node Exporter geen authenticatie uit, wat betekent dat iedereen de blootgestelde statistieken kan ophalen. Om toegang te beveiligen, kunt u basisauthenticatie voor een gebruiker toevoegen.

Genereer een wachtwoord met de volgende commando's:

password=`openssl rand -base64 32`
passwordHashed=`echo ${password} | htpasswd -inBC 10 "" | tr -d ':'`
echo "Duidelijk wachtwoord om te bewaren voor Prometheus-server: ${password}"

Als u de htpasswd-binaire niet heeft, kunt u deze op Debian/Ubuntu installeren met apt-get install --no-install-recommends apache2-utils.

Houd het duidelijke wachtwoord veilig, want u heeft het nodig bij het configureren van Prometheus.

Voeg de volgende regels toe aan het configuratiebestand om een gebruiker genaamd "prometheus" toe te voegen met de gegenereerde wachtwoordhash:

sudo cat << EOF >> /etc/prometheus_node_exporter/configuration.yml
basic_auth_users:
  prometheus: ${passwordHashed}

EOF

# Herstart Node Exporter
sudo systemctl restart node_exporter

Controleer ten slotte of authenticatie correct werkt:

  • Het uitvoeren van curl http://localhost:9100/metrics zou "Unauthorized" moeten retourneren.
  • Het uitvoeren van curl -u prometheus:${password} http://localhost:9100/metrics zou de lijst met statistieken moeten retourneren.

Standaard versleutelt Node Exporter geen communicatie. Dit betekent dat inloggegevens, inclusief het eerder gedefinieerde wachtwoord, in platte tekst worden verzonden. Om communicatie te beveiligen, kunt u TLS-encryptie inschakelen zoals volgt.

Voer de volgende commando's uit om een TLS-certificaat en sleutel te maken:

# Maak TLS-certificaat
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

Voeg de volgende regels toe aan het configuratiebestand om TLS-instellingen toe te voegen en herstart vervolgens Node Exporter:

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

# Herstart Prometheus Node Exporter
sudo systemctl restart node_exporter

U kunt verifiëren dat TLS actief is door verbinding te maken via HTTPS met het volgende commando:

curl -k -u prometheus:${password} https://localhost:9100/metrics

Merk op dat deze methode geen CA-certificaat gebruikt, dus u moet de "-k" optie aan cURL doorgeven om certificaatverificatie te omzeilen.

Nadat u Node Exporter heeft geïnstalleerd en beveiligd, configureert u uw Prometheus-server om regelmatig statistieken op te halen.

Op Stackhero selecteert u uw Prometheus-service en gaat u naar de "Prometheus-configuratie" URL. Voeg vervolgens het volgende toe aan uw scrape_configs sectie:

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" om het ":9100" deel te verwijderen
    relabel_configs:
      - source_labels: [__address__]
        target_label: instance
        regex: '([^:]+)(:[0-9]+)?'
        replacement: '${1}'

Sla het bestand op en controleer uw Prometheus-logs om te bevestigen dat het succesvol is herladen (u kunt de logs bekijken vanaf het Stackhero-dashboard door uw Prometheus-service te selecteren en op het tabblad "Logs" te klikken).

Controleer ten slotte of Prometheus statistieken ophaalt door toegang te krijgen tot de Prometheus UI op het Stackhero-dashboard en te navigeren naar Status > Targets. Uw Linux-server zou in de doel lijst moeten verschijnen als UP.

Het doel "myLinuxServer" is UPHet doel "myLinuxServer" is UP

Om de statistieken te bekijken die zijn opgehaald van Node Exporter, logt u in op Prometheus via het Stackhero-dashboard met de "Prometheus UI" URL of direct op https://<prometheusDomain>/.

In het "Expression" veld, typ node_memory_MemTotal_bytes en druk op enter. Als alles correct is geconfigureerd, ziet u het totale RAM-geheugen van de server weergegeven in bytes.

De totale hoeveelheid RAM voor deze server is 4068794368 bytes, wat 3.78GB isDe totale hoeveelheid RAM voor deze server is 4068794368 bytes, wat 3.78GB is

Grafana kan moeiteloos dashboards genereren op basis van Prometheus-gegevens. Voor gedetailleerde instructies over het configureren van Grafana om Prometheus-gegevens weer te geven, raadpleegt u Grafana's documentatie.

Voorbeeld van een dashboard gegenereerd door Grafana, gebaseerd op Prometheus Node Exporter-gegevensVoorbeeld van een dashboard gegenereerd door Grafana, gebaseerd op Prometheus Node Exporter-gegevens