Serverio stebėsena su Netdata: diegimas ir konfigūravimas
Paleiskite serveryje viena komanda (pirmiausia patikrinkite skripto turinį žemiau):
curl -sSL https://cp.lv/scripts/monitoring-servera-netdata.sh | sudo bash…arba su wget:
wget -qO- https://cp.lv/scripts/monitoring-servera-netdata.sh | sudo bashSkripto turinys monitoring-servera-netdata.sh:
#!/usr/bin/env bash
# Install Netdata and expose it through nginx with basic auth
set -euo pipefail
export DEBIAN_FRONTEND=noninteractive
# 1. Install Netdata (official kickstart, stable channel)
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sudo sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry --non-interactive
# 2. Bind the agent to localhost only
sudo tee /etc/netdata/netdata.conf > /dev/null << 'EOF'
[web]
bind to = 127.0.0.1
EOF
sudo systemctl restart netdata
# 3. nginx reverse proxy with basic auth
sudo apt-get update -y
sudo apt-get install -y nginx apache2-utils openssl
PASS="$(openssl rand -base64 12)"
sudo htpasswd -bc /etc/nginx/.netdata-htpasswd admin "$PASS"
# quoted 'EOF' keeps nginx variables ($host) from being expanded
sudo tee /etc/nginx/sites-available/netdata > /dev/null << 'EOF'
server {
listen 80;
server_name monitor.example.com;
auth_basic "Netdata";
auth_basic_user_file /etc/nginx/.netdata-htpasswd;
location / {
proxy_pass http://127.0.0.1:19999;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
}
}
EOF
sudo ln -sf /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/netdata
sudo nginx -t && sudo systemctl reload nginx
echo "Done. Dashboard is served on the domain. Login: admin, password: $PASS"
Netdata įdiegiamas viena komanda ir iš karto pateikia žiniatinklio skydelį su realaus laiko serverio metrikomis: procesoriaus apkrova, atmintis, diskas, tinklas, procesai — sekundės tikslumu. Žemiau — diegimas, prieigos apsauga ir įspėjimų konfigūravimas.
Kodėl Netdata
Skirtingai nuo sunkių derinių, tokių kaip Prometheus ir Grafana, Netdata įdiegiamas per minutę, nereikalauja konfigūravimo ir iš karto rodo šimtus metrikų. Idealiai tinka, kai reikia greitai pamatyti, kas su serveriu vyksta būtent dabar.
Reikalavimai: bet kuris VPS su 512 MB RAM ar daugiau. Agentas sunaudoja mažai resursų.
1 žingsnis. Diegimas
Oficialus diegimo skriptas (kickstart) pats nustatys distributyvą:
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
Vėliava --disable-telemetry išjungia anoniminės statistikos siuntimą.
Po diegimo tarnyba pasileis automatiškai:
systemctl status netdata
2 žingsnis. Prieiga prie skydelio
Netdata klauso prievado 19999. Atverkite naršyklėje:
http://<jusu_VPS_IP>:19999
Pamatysite gyvą skydelį. Pagal nutylėjimą prievadas pasiekiamas visiems — tai nesaugu, todėl prieigą apribosime.
3 žingsnis. Uždarykite tiesioginę prieigą
Susiekite Netdata tik su localhost. Faile /etc/netdata/netdata.conf:
[web]
bind to = 127.0.0.1
Paleiskite iš naujo:
systemctl restart netdata
Dabar skydelis pasiekiamas tik iš paties serverio — iš išorės jį atversime per reverse proxy su slaptažodžiu.
4 žingsnis. Reverse proxy su autorizacija (nginx)
Įdiekite įrankius ir sukurkite slaptažodį:
apt install -y nginx apache2-utils
htpasswd -c /etc/nginx/.netdata-htpasswd admin
Atverkite konfigūraciją redaktoriuje (sudo nano /etc/nginx/sites-available/netdata) ir įrašykite turinį:
server {
listen 80;
server_name monitor.example.com;
auth_basic "Netdata";
auth_basic_user_file /etc/nginx/.netdata-htpasswd;
location / {
proxy_pass http://127.0.0.1:19999;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
}
}
Arba sukurkite konfigūraciją iš karto viena komanda (kabutės 'EOF' svarbios — nginx kintamasis $host liks toks, koks yra):
sudo tee /etc/nginx/sites-available/netdata > /dev/null << 'EOF'
server {
listen 80;
server_name monitor.example.com;
auth_basic "Netdata";
auth_basic_user_file /etc/nginx/.netdata-htpasswd;
location / {
proxy_pass http://127.0.0.1:19999;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
}
}
EOF
Aktyvuokite:
ln -s /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Dabar skydelis atsidaro domenu su prisijungimo vardu ir slaptažodžiu. Šifravimui pridėkite HTTPS per certbot.
5 žingsnis. Įspėjimų konfigūravimas
Netdata gali siųsti įspėjimus į Telegram, el. paštu ar į Slack. Telegram pavyzdys — redaguokite /etc/netdata/health_alarm_notify.conf:
SEND_TELEGRAM="YES"
TELEGRAM_BOT_TOKEN="<boto_zetonas>"
DEFAULT_RECIPIENT_TELEGRAM="<chat_id>"
Patikrinkite siuntimą:
/usr/libexec/netdata/plugins.d/alarm-notify.sh test
Naudingos kontroliuojamos metrikos
| Metrika | Į ką žiūrėti |
|---|---|
| CPU iowait | Didelis — disko siaura vieta |
| RAM available | Mažai — OOM rizika |
| Disk space | Skirsnio užpildymas |
| Network errors | Tinklo arba NIC problemos |
| Load average | Procesoriaus perkrova |
Ribų nustatymas
Įspėjimų taisyklės yra kataloge /etc/netdata/health.d/. Pavyzdžiui, disko užpildymo riba:
nano /etc/netdata/health.d/disk_space.conf
Po pakeitimų perskaitykite konfigūraciją iš naujo:
netdatacli reload-health
Prieigos šifravimas (HTTPS)
Basic autorizacija be HTTPS perduoda slaptažodį atviru tekstu. Pridėkite nemokamą Let’s Encrypt sertifikatą per certbot:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d monitor.example.com
certbot pats sukonfigūruos peradresavimą į HTTPS ir automatinį sertifikato atnaujinimą. Patikrinkite atnaujinimo laikmatį:
systemctl status certbot.timer
Agento resursų ribojimas
Silpname VPS sumažinkite rinkimo dažnį, kad sumažintumėte apkrovą. Faile /etc/netdata/netdata.conf:
[db]
update every = 2
Reikšmė 2 renka metrikas kartą per dvi sekundes vietoj vienos — tikslumas šiek tiek mažesnis, apkrova pastebimai mažesnė. Nereikalingus papildinius (pavyzdžiui, duomenų rinkimą iš neegzistuojančių tarnybų) galima išjungti skiltyje [plugins].
Naudingos skydelio skiltys
- System Overview — procesoriaus, atminties, disko ir tinklo suvestinė.
- Applications — resursų sunaudojimas pagal procesų grupes.
- Disks — kiekvieno blokinio įrenginio vėlinimas ir apkrova.
- Networking Stack — ryšiai, retransmits, TCP klaidos.
Skydelis visiškai interaktyvus: užveskite pelę ant grafiko, kad pamatytumėte tikslias reikšmes konkrečiu momentu, arba pele pažymėkite intervalą, kad jį priartintumėte.
Atnaujinimas ir šalinimas
Atnaujinti Netdata iki naujausios stabilios versijos:
netdata-updater.sh
Visiškai pašalinti agentą, jei jo nebereikia:
/usr/libexec/netdata/netdata-uninstaller.sh --yes --force
Dažni klausimai
Kiek resursų sunaudoja Netdata?
Agentas lengvas, bet sekundės skiriamąja geba silpname VPS apkrova pastebima. Rinkimo intervalą galima padidinti faile netdata.conf.
Ar saugomi istoriniai duomenys?
Taip, vietinėje duomenų bazėje (dbengine). Saugojimo gylis nustatomas konfigūracijos skiltyje [db].
Ar galima stebėti kelis serverius? Taip, per Netdata Cloud arba per tėvinį mazgą (streaming), kuris renka metrikas iš dukterinių.
Ar saugu laikyti prievadą 19999 atvirą? Ne. Susiekite jį su localhost ir proksinkite per nginx su slaptažodžiu ir HTTPS.
Ar Netdata pakeičia Prometheus? Greitai realaus laiko stebėsenai — taip. Ilgam saugojimui ir sudėtingoms užklausoms Prometheus ir Grafana derinys yra lankstesnis.
Stebėsena — privaloma eksploatacijos dalis. Talpinkite projektą VPS nuomoje arba VPS saugumui ir VPN. Stebėsenos ir įspėjimų konfigūravimą perims Serverių administravimas.