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,PagerDutyir kt.- Skirtas el. pašto serveris, skirtas siųsti neribotus el. pašto įspėjimus.
BlackboxskirtasHTTP,ICMP,TCPir 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ą!
Kas yra Prometheus Node Exporter
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 Prometheus
Įdiegti Prometheus Node Exporter Linux serveryje
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.
Kaip įdiegti Prometheus Node Exporter Ubuntu
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.
Kaip įdiegti Prometheus Node Exporter Debian
Node Exporter diegimo procesas Debian yra identiškas aukščiau aprašytam Ubuntu metodui. Tiesiog sekite tas pačias instrukcijas.
Kaip įdiegti Prometheus Node Exporter kitose sistemose
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.
Pridėti autentifikaciją prie Prometheus Node Exporter
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.
Atsitiktinio slaptažodžio generavimas
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
htpasswddvejetainio failo, galite jį įdiegti Debian/Ubuntu naudodamiapt-get install --no-install-recommends apache2-utils.
Laikykite aiškų slaptažodį saugiai, nes jums jo reikės konfigūruojant Prometheus.
Vartotojo pridėjimas ir Node Exporter perkrovimas
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/metricsturėtų grąžinti "Unauthorized". - Vykdant
curl -u prometheus:${password} http://localhost:9100/metricsturėtų grąžinti metrikų sąrašą.
Pridėti TLS šifravimą prie Prometheus Node Exporter
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.
TLS sertifikatų kūrimas
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
Konfigūracijos atnaujinimas
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ą.
Konfigūruoti Prometheus serverį, kad gautų duomenis iš Node Exporter
Į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 UP
Rodyti duomenis Prometheus
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.78GB
Konfigūruoti Grafana, kad rodytų Prometheus duomenis, gautus iš Node Exporter
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 duomenimis