«Seva ni polepole» ni ripoti ya hitilafu isiyo na maana, isipokuwa unaweza kufungua grafu na kuona kwamba kumbukumbu ilipanda kwa siku tatu kabla ya kuanguka. Hicho ndicho Prometheus na Grafana zinakupa: CPU, RAM, disk na mtandao wa kila seva, vikirekodiwa kila sekunde 15 na kuchorwa kama chati unazoweza kurudi nyuma ndani yake. Ziweke kwenye VPS yao ndogo na zinaendelea kutazama hata mashine ya production ikianguka.
Vipande
- node_exporter kwenye kila seva unayotaka kuitazama: inaonyesha vipimo vya mfumo kwenye bandari 9100.
- Prometheus kwenye VPS ya ufuatiliaji: inavuta (scrape) vipimo hivyo na kuvihifadhi.
- Grafana: dashibodi, nyuma ya HTTPS.
- Hiari Alertmanager au arifa za Grafana ili kukutumia ujumbe kitu kikivuka mstari.
Unachohitaji
- Micro-IP ($10/mwezi, 2 vCPU, 2 GB RAM, 25 GB) inatazama seva kumi hadi ishirini. Kwa hosts zaidi, vipimo maalum vya programu au uhifadhi wa miezi: Small-IP.
- IPv4 ya dedicated kwa seva ya ufuatiliaji: Grafana inatolewa kupitia HTTPS, na malengo yako yanaweza kuweka anwani moja thabiti kwenye orodha ya ruhusa ya bandari 9100.
1. node_exporter kwenye kila lengo
apt install -y prometheus-node-exporter
# allow only the monitoring server to scrape it
ufw allow from 203.0.113.10 to any port 9100 proto tcp
Badilisha 203.0.113.10 kwa anwani ya VPS yako ya ufuatiliaji. Usiache 9100 wazi kwa ulimwengu kamwe; inavujisha mengi kuhusu seva yako.
2. Prometheus na Grafana kwenye VPS ya ufuatiliaji
apt update && apt install -y docker.io docker-compose-v2 caddy
mkdir -p /opt/monitoring && cd /opt/monitoring
cat > prometheus.yml <<'EOF'
global:
scrape_interval: 15s
scrape_configs:
- job_name: nodes
static_configs:
- targets: ['198.51.100.21:9100', '198.51.100.22:9100']
EOF
cat > compose.yml <<'EOF'
services:
prometheus:
image: prom/prometheus
volumes: [ "./prometheus.yml:/etc/prometheus/prometheus.yml:ro", "prom:/prometheus" ]
command: [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.retention.time=15d", "--web.enable-remote-write-receiver" ]
ports: [ "127.0.0.1:9090:9090" ]
restart: unless-stopped
grafana:
image: grafana/grafana
volumes: [ "grafana:/var/lib/grafana" ]
ports: [ "127.0.0.1:3000:3000" ]
restart: unless-stopped
volumes: { prom: {}, grafana: {} }
EOF
docker compose up -d
HTTPS mbele ya Grafana:
echo 'grafana.example.com {
reverse_proxy 127.0.0.1:3000
}' > /etc/caddy/Caddyfile && systemctl reload caddy
Ingia (admin / admin, kisha ibadilishe), ongeza Prometheus kama chanzo cha data kwenye http://prometheus:9090, na ingiza dashibodi ya jamii «Node Exporter Full» (ID 1860). Unapata dashibodi kamili ya mfumo ndani ya takriban dakika moja.
Seva kwenye mipango ya NAT
Seva ya NAT inakubali muunganisho unaoingia kwenye bandari yake binafsi ya SSH pekee, kwa hivyo Prometheus haiwezi ku-scrape exporter yake. Geuza mwelekeo: endesha Prometheus katika agent mode kwenye mashine ya NAT na usukume kwenye seva ya ufuatiliaji, ambayo tayari inakubali remote writes (flag ya --web.enable-remote-write-receiver hapo juu).
# /etc/prometheus/agent.yml on the NAT server
scrape_configs:
- job_name: self
static_configs: [ { targets: ['127.0.0.1:9100'] } ]
remote_write:
- url: https://prom-push.example.com/api/v1/write
Onyesha endpoint hiyo ya push kupitia Caddy kwa basic auth badala ya kufungua bandari 9090 moja kwa moja.
Maelezo ya uwazi
Prometheus inavuta (pull); hiyo ni nzuri kwa kundi la seva unazozidhibiti na ngumu kwa chochote kilicho nyuma ya NAT, ndiyo sababu ya mbinu ya agent. Hifadhi yake ya ndani haikukusudiwa kwa miaka ya historia; kwa uhifadhi mrefu utaongeza hifadhi ya mbali baadaye. Na dashibodi ni nusu tu ya thamani: weka angalau arifa tatu siku ya kwanza (disk juu ya 85%, shinikizo la kumbukumbu, lengo halipatikani), la sivyo utaangalia grafu tu baada ya kitu kuwa kimeshavunjika.
Inayohusiana
- VPS kwa ufuatiliaji wa uptime (Uptime Kuma): arifa za kukatika na kurasa za hali
- Jinsi ya kusanidi firewall ya UFW
- VPS inahitaji RAM kiasi gani?
Maoni
Bado hakuna maoni. Kuwa wa kwanza.