Prometheus: Metrikų gavimas iš Linux

Kaip gauti Linux serverio metrikas Prometheus naudojant Node Exporter

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti Prometheus cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:

  • Įtrauktas Alert Manager, skirtas siųsti įspėjimus į Slack, Mattermost, PagerDuty ir kt.
  • Skirtas el. pašto serveris, skirtas siųsti neribotus el. pašto įspėjimus.
  • Blackbox skirtas HTTP, ICMP, TCP ir kitų protokolų tikrinimui.
  • Lengvas konfigūravimas su internetiniu konfigūracijos failų redaktoriumi.
  • Paprasti atnaujinimai vienu paspaudimu.
  • Optimali veikla ir tvirta sauga, užtikrinama privačios ir dedikuotos VM.

Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių, kad išbandytumėte Stackhero Prometheus cloud hosting sprendimą!

Node Exporter yra programinė įranga, kurią galite įdiegti *NIX branduoliuose (Linux, OpenBSD, FreeBSD arba Darwin), kad atskleistumėte sistemos metrikas Prometheus. Tai esminis komponentas serverių našumo ir infrastruktūros sveikatos stebėjimui.

Prometheus terminologijoje Node Exporter veikia kaip eksportuotojas ir yra pridedamas kaip tikslas jūsų Prometheus konfigūracijoje. Prometheus jungiasi prie Node Exporter naudodamas TCP prievadą 9100 per HTTP reguliariais intervalais, kad gautų metrikas.

Apibendrinant, Node Exporter leidžia stebėti Linux pagrindu veikiančią sistemą. Windows sistemoms galite naudoti Windows Exporter.

Stackhero vaizdas PrometheusStackhero vaizdas Prometheus

Node Exporter galite atsisiųsti iš jo GitHub leidimų puslapio. Jis platinamas kaip dvejetainis failas, kuris veikia tiesiogiai jūsų sistemoje. Kadangi jis skirtas veikti nuolat, rekomenduojama jį sukonfigūruoti taip, kad jis automatiškai paleistųsi, kai jūsų serveris įsijungia.

Pagal numatytuosius nustatymus Node Exporter atidaro prievadą 9100 pasauliui be autentifikacijos ar šifravimo. Labai rekomenduojama pridėti tiek autentifikaciją, tiek TLS šifravimą (žr. žemiau) ir nustatyti užkardą, kad apribotumėte prieigą prie prievado 9100, kad tik jūsų Prometheus serveris ar kiti įgalioti IP adresai galėtų prisijungti.

Galite sekti šiuos veiksmus Ubuntu:

# Eikite į https://github.com/prometheus/node_exporter/releases, kad gautumėte naujausią versijos numerį.
node_exporter_version="1.2.0"
node_exporter_release="linux-amd64"

# Atsisiųsti ir įdiegti 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

# Sukurti vartotoją "node_exporter"
sudo useradd -rs /bin/false node_exporter

# Sukurti systemd paslaugą, kad node_exporter automatiškai paleistųsi įjungus
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'

# Sukurti konfigūracijos katalogą ir failą
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

# Paleisti node_exporter demoną ir patikrinti jo būseną
sudo systemctl start node_exporter
sudo systemctl status node_exporter

Šiuo metu node_exporter dvejetainis failas turėtų veikti jūsų serveryje. Norėdami patvirtinti, kad jis veikia, galite prisijungti ir patikrinti, ar jis grąžina metrikas:

curl http://localhost:9100/metrics

Node Exporter atidaro prievadą 9100 viešajam tinklui. Tai reiškia, kad bet kas gali prisijungti ir gauti jūsų serverio metrikas! Bent jau turėtumėte pridėti autentifikaciją ir TLS šifravimą (žr. žemiau) ir labai rekomenduojama nustatyti užkardą, kad blokuotumėte užklausas į prievadą 9100 iš kitų IP nei jūsų Prometheus serveris.

Node Exporter diegimo procesas Debian yra identiškas aukščiau aprašytam Ubuntu metodui. Tiesiog sekite tas pačias instrukcijas.

Node Exporter diegimo žingsniai priklauso nuo jūsų naudojamos sistemos. Nors išsami dokumentacija kiekvienai platformai nėra pateikta, pagrindinė procedūra apima dvejetainio failo, atitinkančio jūsų sistemą, atsisiuntimą ir konfigūravimą, kad jis paleistųsi įjungus.

Pagal numatytuosius nustatymus Node Exporter neatlieka autentifikacijos, tai reiškia, kad bet kas gali gauti atskleistas metrikas. Norėdami užtikrinti prieigą, galite pridėti pagrindinę autentifikaciją vartotojui.

Generuokite slaptažodį naudodami šias komandas:

password=`openssl rand -base64 32`
passwordHashed=`echo ${password} | htpasswd -inBC 10 "" | tr -d ':'`
echo "Aiškus slaptažodis, kurį reikia išsaugoti Prometheus serveriui: ${password}"

Jei neturite htpasswd dvejetainio failo, galite jį įdiegti Debian/Ubuntu naudodami apt-get install --no-install-recommends apache2-utils.

Laikykite aiškų slaptažodį saugiai, nes jums jo reikės konfigūruojant Prometheus.

Pridėkite šias eilutes prie konfigūracijos failo, kad pridėtumėte vartotoją "prometheus" su sugeneruotu slaptažodžio hash:

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

EOF

# Perkrauti Node Exporter
sudo systemctl restart node_exporter

Galiausiai, patikrinkite, ar autentifikacija veikia tinkamai:

  • Vykdant curl http://localhost:9100/metrics turėtų grąžinti "Unauthorized".
  • Vykdant curl -u prometheus:${password} http://localhost:9100/metrics turėtų grąžinti metrikų sąrašą.

Pagal numatytuosius nustatymus Node Exporter nešifruoja komunikacijų. Tai reiškia, kad kredencialai, įskaitant anksčiau apibrėžtą slaptažodį, perduodami nešifruoti. Norėdami užtikrinti komunikacijų saugumą, galite įjungti TLS šifravimą taip.

Vykdykite šias komandas, kad sukurtumėte TLS sertifikatą ir raktą:

# Sukurti TLS sertifikatą
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

Pridėkite šias eilutes prie konfigūracijos failo, kad pridėtumėte TLS nustatymus, ir tada perkraukite 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

# Perkrauti Prometheus Node Exporter
sudo systemctl restart node_exporter

Galite patikrinti, ar TLS yra aktyvus, prisijungdami per HTTPS su šia komanda:

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

Atkreipkite dėmesį, kad šis metodas nenaudoja CA sertifikato, todėl turite perduoti "-k" parinktį cURL, kad apeitumėte sertifikato patikrinimą.

Įdiegę Node Exporter ir jį apsaugoję, sukonfigūruokite savo Prometheus serverį, kad reguliariai gautų metrikas.

Stackhero, pasirinkite savo Prometheus paslaugą ir eikite į "Prometheus configuration" URL. Tada pridėkite šiuos duomenis prie savo scrape_configs skyriaus:

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" to remove the ":9100" part
    relabel_configs:
      - source_labels: [__address__]
        target_label: instance
        regex: '([^:]+)(:[0-9]+)?'
        replacement: '${1}'

Išsaugokite failą ir patikrinkite savo Prometheus žurnalus, kad patvirtintumėte, jog jis sėkmingai perkrautas (galite peržiūrėti žurnalus iš Stackhero prietaisų skydelio pasirinkdami savo Prometheus paslaugą ir spustelėdami "Logs" skirtuką).

Galiausiai, patikrinkite, ar Prometheus gauna metrikas, pasiekdami Prometheus UI Stackhero prietaisų skydelyje ir naršydami į Status > Targets. Jūsų Linux serveris turėtų pasirodyti tikslų sąraše kaip UP.

Tikslas "myLinuxServer" yra UPTikslas "myLinuxServer" yra UP

Norėdami peržiūrėti metrikas, gautas iš Node Exporter, prisijunkite prie Prometheus per Stackhero prietaisų skydelį naudodami "Prometheus UI" URL arba tiesiogiai adresu https://<prometheusDomain>/.

Lauke "Expression" įveskite node_memory_MemTotal_bytes ir paspauskite Enter. Jei viskas sukonfigūruota teisingai, pamatysite serverio bendrą RAM kiekį, rodomą baitais.

Bendras RAM kiekis šiam serveriui yra 4068794368 baitai, tai yra 3.78GBBendras RAM kiekis šiam serveriui yra 4068794368 baitai, tai yra 3.78GB

Grafana gali lengvai generuoti prietaisų skydelius, pagrįstus Prometheus duomenimis. Dėl išsamių instrukcijų, kaip konfigūruoti Grafana, kad rodytų Prometheus duomenis, prašome kreiptis į Grafana dokumentaciją.

Pavyzdys prietaisų skydelio, sukurto Grafana, pagrįsto Prometheus Node Exporter duomenimisPavyzdys prietaisų skydelio, sukurto Grafana, pagrįsto Prometheus Node Exporter duomenimis