«serverሩ ቀርፋፋ ነው» ከንቱ የስህተት ሪፖርት ነው፣ graph ከፍተው ከብልሽቱ በፊት ለሶስት ቀናት ማህደረ ትውስታ ሲጨምር ማየት ካልቻሉ በስተቀር። Prometheus እና Grafana የሚሰጡዎት ይህንን ነው፦ የእያንዳንዱ server CPU፣ RAM፣ disk እና አውታረ መረብ፣ በየ15 ሰከንዱ ተመዝግቦ ወደ ኋላ ማሸብለል የሚችሉባቸው charts ሆኖ የተሳለ። በራሳቸው ትንሽ VPS ላይ ያስቀምጧቸው፣ የproduction ማሽን ሲወድቅ እንኳ መከታተላቸውን ይቀጥላሉ።
ክፍሎቹ
- node_exporter መከታተል በሚፈልጉት እያንዳንዱ server ላይ፦ የስርዓት metricsን በፖርት 9100 ያጋልጣል።
- Prometheus በክትትል VPS ላይ፦ እነዚያን metrics ይጎትታል (scrape) እና ያከማቻል።
- Grafana፦ dashboards፣ ከHTTPS ጀርባ።
- በአማራጭ Alertmanager ወይም የGrafana ማንቂያዎች፣ አንድ ነገር ገደብ ሲያልፍ መልዕክት እንዲልኩልዎ።
የሚያስፈልግዎ
- Micro-IP ($10/ወር፣ 2 vCPU፣ 2 GB RAM፣ 25 GB) ከአስር እስከ ሃያ servers ይከታተላል። ለተጨማሪ hosts፣ ብጁ የapp metrics ወይም የወራት ማቆያ፦ Small-IP።
- dedicated IPv4 ለክትትል serverሩ፦ Grafana በHTTPS ይቀርባል፣ targetsዎም ለፖርት 9100 አንድ ቋሚ አድራሻ whitelist ማድረግ ይችላሉ።
1. በእያንዳንዱ target ላይ node_exporter
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
203.0.113.10ን በክትትል VPSዎ አድራሻ ይተኩ። 9100ን ለዓለም ክፍት በጭራሽ አይተዉ፤ ስለ serverዎ ብዙ ያጋልጣል።
2. በክትትል VPS ላይ Prometheus እና Grafana
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
ከGrafana ፊት HTTPS፦
echo 'grafana.example.com {
reverse_proxy 127.0.0.1:3000
}' > /etc/caddy/Caddyfile && systemctl reload caddy
ይግቡ (admin / admin፣ ከዚያ ይቀይሩት)፣ Prometheusን እንደ የውሂብ ምንጭ በhttp://prometheus:9090 ያክሉ፣ እና የማህበረሰቡን «Node Exporter Full» dashboard (ID 1860) ያስመጡ። በአንድ ደቂቃ ያህል ሙሉ የስርዓት dashboard ይኖርዎታል።
በNAT ዕቅዶች ላይ ያሉ servers
የNAT server ገቢ ግንኙነቶችን የሚቀበለው በግል SSH ፖርቱ ላይ ብቻ ነው፣ ስለዚህ Prometheus exporterኡን scrape ማድረግ አይችልም። አቅጣጫውን ይገልብጡ፦ Prometheusን በNAT ማሽኑ ላይ በagent mode ያሂዱ እና አስቀድሞ remote writes ወደሚቀበለው የክትትል server ይግፉ (ከላይ ያለው --web.enable-remote-write-receiver flag)።
# /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
ፖርት 9090ን በጥሬው ከመክፈት ይልቅ ይህንን የpush endpoint በCaddy በbasic auth ያጋልጡ።
ሐቀኛ ማስታወሻዎች
Prometheus ይጎትታል (pull)፤ ይህ ለሚቆጣጠሩት የservers ስብስብ በጣም ጥሩ፣ ከNAT ጀርባ ላለ ማንኛውም ነገር ደግሞ አስቸጋሪ ነው፣ ስለዚህ የagent ዘዴው። የአካባቢያዊ ማከማቻው ለዓመታት ታሪክ የተሰራ አይደለም፤ ለረጅም ማቆያ በኋላ remote store ያክላሉ። እና dashboards የዋጋው ግማሽ ብቻ ናቸው፦ ከመጀመሪያው ቀን ቢያንስ ሶስት ማንቂያዎችን ያዘጋጁ (disk ከ85% በላይ፣ የማህደረ ትውስታ ጫና፣ target የማይደረስ)፣ አለበለዚያ graphsን የሚመለከቱት አንድ ነገር ከተበላሸ በኋላ ብቻ ይሆናል።
ተዛማጅ
- ለuptime ክትትል VPS (Uptime Kuma)፦ የመቋረጥ ማንቂያዎች እና የሁኔታ ገጾች
- የUFW firewall እንዴት እንደሚዋቀር
- VPS ምን ያህል RAM ያስፈልገዋል?
አስተያየቶች
እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።