−25%

Windows-ის წლიურ გადახდაზე, 31 ოქტომბრამდე. ტარიფებზე

EQVPS

VPS სერვერების მონიტორინგისთვის Grafana-თი და Prometheus-ით

შეაგროვეთ ყველა სერვერის CPU, RAM, დისკისა და სერვისების მეტრიკები ერთ ადგილას: Prometheus, node_exporter და Grafana VPS-ზე, HTTPS-ის უკან.

«სერვერი ნელია» უსარგებლო შეცდომის ანგარიშია, თუ არ შეგიძლიათ გრაფიკის გახსნა და დანახვა, რომ მეხსიერება ავარიამდე სამი დღე იზრდებოდა. სწორედ ამას გაძლევთ Prometheus და Grafana: ყოველი სერვერის CPU, RAM, დისკი და ქსელი, ჩაწერილი ყოველ 15 წამში და დახატული გრაფიკებად, რომლებშიც უკან გადახვევა შეგიძლიათ. განათავსეთ ისინი საკუთარ პატარა VPS-ზე და ისინი დაკვირვებას განაგრძობენ მაშინაც კი, როცა production მანქანა ეცემა.

ნაწილები

რა გჭირდებათ

1. 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 სამყაროსთვის ღია; ის თქვენს სერვერზე ბევრს ამჟღავნებს.

2. Prometheus და Grafana მონიტორინგის VPS-ზე

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 Grafana-ს წინ:

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» (ID 1860). დაახლოებით ერთ წუთში სისტემის სრული დაფა გექნებათ.

სერვერები NAT ტარიფებზე

NAT სერვერი შემომავალ კავშირებს მხოლოდ თავის პერსონალურ SSH პორტზე იღებს, ამიტომ Prometheus ვერ წაიკითხავს მის ექსპორტერს. შეატრიალეთ მიმართულება: გაუშვით Prometheus agent რეჟიმში NAT მანქანაზე და გაგზავნეთ მონიტორინგის სერვერზე, რომელიც დისტანციურ ჩაწერას უკვე იღებს (ზემოთ --web.enable-remote-write-receiver ფლაგი).

# /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

ეს push-წერტილი Caddy-ით basic auth-ით გამოაჩინეთ, ნაცვლად 9090 პორტის ღიად დატოვებისა.

გულწრფელი შენიშვნები

Prometheus იზიდავს (pull); ეს შესანიშნავია თქვენს კონტროლქვეშ მყოფი სერვერებისთვის და მოუხერხებელი ყველაფრისთვის NAT-ის უკან, აქედან agent-ის ხრიკი. მისი ლოკალური საცავი წლების ისტორიისთვის არ არის განკუთვნილი; გრძელი შენახვისთვის მოგვიანებით დისტანციურ საცავს დაამატებთ. და დაფები მხოლოდ ღირებულების ნახევარია: პირველივე დღეს დააყენეთ მინიმუმ სამი შეტყობინება (დისკი 85%-ზე მეტი, მეხსიერების დატვირთვა, სამიზნე მიუწვდომელია), თორემ გრაფიკებს მხოლოდ მაშინ შეხედავთ, როცა რაღაც უკვე გაფუჭდა.

დაკავშირებული

მზად ხართ განთავსებისთვის? გადაიხადეთ კრიპტოთი, KYC-ის გარეშე — ჩართული დაახლოებით წუთში.

განათავსეთ ახლა →

ხდკ

რით განსხვავდება ეს Uptime Kuma-სგან?

Uptime Kuma პასუხობს კითხვას «მუშაობს?». Prometheus და Grafana პასუხობენ «რატომ არის ნელი და როდის დაიწყო?»: CPU-ს, მეხსიერების, დისკის, ქსელისა და აპის მეტრიკები დროში. ბევრი ორივეს უშვებს: Kuma გათიშვის შეტყობინებებისთვის, Grafana ტენდენციებისა და სიმძლავრის დაგეგმვისთვის.

რამდენ დისკს იყენებს Prometheus?

შეკუმშვის შემდეგ დაახლოებით 1–2 ბაიტს თითო ნიმუშზე. ათი სერვერი, რომელთაგან თითოეული ათას სერიას აექსპორტებს და ყოველ 15 წამში იკითხება, დღეში დაახლოებით 60 მილიონ ნიმუშს იძლევა, ანუ დაახლოებით 100 MB-ს. 15-დღიანი ნაგულისხმევი შენახვით ეს რამდენიმე გიგაბაიტია.

შემიძლია NAT ტარიფებზე მყოფი სერვერების მონიტორინგი?

კი, მაგრამ scrape-ით არა: NAT სერვერი თავის ექსპორტერზე შემომავალ კავშირებს არ იღებს. გაუშვით Prometheus agent რეჟიმში NAT მანქანაზე და გაგზავნეთ მეტრიკები მონიტორინგის სერვერზე remote_write-ით. თავად მონიტორინგის სერვერი გამოყოფილი IP-ის ტარიფზე უნდა იყოს.

რომელ ტარიფზე უნდა იყოს მონიტორინგის სერვერი?

Micro-IP (2 GB RAM, $10/თვე) კომფორტულად უმკლავდება ათიდან ოც ჰოსტამდე. თუ დაამატებთ მაღალი cardinality-ის აპის მეტრიკებს ან თვეების მონაცემებს შეინახავთ, გადადით Small-IP-ზე. გამოყოფილი IP გაძლევთ HTTPS-ს Grafana-სთვის და სტაბილურ მისამართს სამიზნეების whitelist-ისთვის.

უნდა იყოს მონიტორინგის სერვერი იმისგან განცალკევებული, რასაც აკვირდება?

კი. თუ Grafana იმ სერვერზე მუშაობს, რომელსაც ახლახან მეხსიერება ამოეწურა, პრობლემის ხედვას სწორედ მაშინ კარგავთ, როცა ყველაზე მეტად გჭირდებათ. პატარა ცალკე VPS მუშაობას აგრძელებს, როცა production მანქანა ვერ მუშაობს.

კომენტარები

ჯერ არ არის კომენტარები. იყავით პირველი.

დატოვეთ კომენტარი

კომენტარები მოდერირდება გამოჩენამდე.