← شروع آموزش

WIUNIX ACADEMY

آموزش نصب Prometheus و Grafana در اوبونتو و دبیان

صفحهٔ 3 از 3؛ مراحل قبلی و پیش‌نیازها را پیش از ادامه مرور کن.

آموزش متناسب با محیط تو

کجا اجرا می‌کنی؟

سیستم‌عامل و نسخه را انتخاب کن تا مراحل، دستورها و راه‌حل‌ها برای همان محیط نمایش داده شوند.

Ubuntu 26.04 LTSبررسی‌شده با مستندات رسمی ·

آموزش متناسب با مقادیر تو

تنظیمات این آموزش

مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر می‌کنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری می‌شوند و به سرور یا لینک اشتراک‌گذاری فرستاده نمی‌شوند. پیش از اجرا، DNS، گواهی‌ها و سیاست شبکهٔ واقعی را بررسی کن.

ویرایش 2 مقدار این آموزش

راه‌اندازی شنوندهٔ خصوصی سرور دوم

پس از بررسی فایروال، این دستورها را روی سرور دوم اجرا کنید. سپس روی میزبان مانیتورینگ، فایل تنظیم Prometheus را با پنل ویرایشگر قبلی باز کنید.

Bash

ترمینال سرور مانیتورینگ.

(
set -euo pipefail
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl restart node_exporter
systemctl is-active node_exporter
sudo ss -lntp 'sport = :9100'
)
از کجا بدانم درست انجام شد؟

دستور باید بدون خطا تمام شود؛ در صورت خطا، پیش از ادامه علت را برطرف کنید.

16

قدم بعدی

افزودن سرور لینوکسی دوم

روی میزبان مانیتورینگ، دو هدف محلی را حفظ و آدرس خصوصی سرور دوم را اضافه کنید. اگر job دیگری دارید، فقط هدف جدید را با تنظیم موجود ادغام کنید و jobهای دیگر را بازنویسی نکنید.

YAML · /etc/prometheus/prometheus.yml

محتوای فایل؛ در فایل نام‌برده ذخیره کنید، نه در خط فرمان.

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets:
          - 127.0.0.1:9090

  - job_name: node-exporter
    static_configs:
      - targets:
          - 127.0.0.1:9100
          - 10.20.30.41:9100
از کجا بدانم درست انجام شد؟

فایل ذخیره‌شده شامل دو هدف محلی و IP خصوصی درست است؛ در پنل بعدی اعتبارسنجی و restart انجام می‌شود.

target راه دور down می‌ماند

روی میزبان مانیتورینگ، دسترسی و lastError را بررسی کنید؛ روی سرور دوم، پنل شنونده و فایروال بالا را دوباره اجرا کنید. شنوندهٔ محلی میزبان مانیتورینگ، وضعیت bind سرور دوم را نشان نمی‌دهد.

Bash
# Monitoring host: transport and target diagnostics
curl -fsS --connect-timeout 2 --max-time 5 http://10.20.30.41:9100/metrics
curl -fsS --connect-timeout 2 --max-time 5 http://127.0.0.1:9090/api/v1/targets | jq .

اعتبارسنجی و بررسی scrape سرور دوم

این پنل فقط روی میزبان مانیتورینگ اجرا می‌شود. restart وقفهٔ کوتاهی در scrape ایجاد می‌کند و باید بعد از موفقیت اعتبارسنجی انجام شود. در پایان، مقدار up=1 برای همان سرور دوم الزامی است.

Bash

ترمینال سرور مانیتورینگ.

(
set -euo pipefail
sudo -u prometheus /usr/local/bin/promtool check config /etc/prometheus/prometheus.yml
sudo systemctl restart prometheus
ok=0
for attempt in $(seq 1 12); do
  if code=$(curl -sS --connect-timeout 2 --max-time 5 -o /dev/null -w '%{http_code}' http://127.0.0.1:9090/-/ready); then
    if [ "$code" = 200 ]; then ok=1; break; fi
  fi
  sleep 2
done
[ "$ok" = 1 ] || { echo 'Endpoint did not become ready: http://127.0.0.1:9090/-/ready' >&2; exit 1; }
printf '%s -> 200\n' 'http://127.0.0.1:9090/-/ready'
response=$(mktemp)
trap 'rm -f "$response"' EXIT
ok=0
for attempt in $(seq 1 12); do
  if code=$(curl -sS --connect-timeout 2 --max-time 5 -G \
    --data-urlencode 'query=up{job="node-exporter",instance="10.20.30.41:9100"}' -o "$response" -w '%{http_code}' \
    http://127.0.0.1:9090/api/v1/query); then
    if [ "$code" = 200 ] && jq -e '.status == "success" and .data.resultType == "vector" and (.data.result | length == 1) and .data.result[0].value[1] == "1"' "$response" >/dev/null; then
      ok=1; break
    fi
  fi
  sleep 5
done
[ "$ok" = 1 ] || { cat "$response" >&2; echo 'Remote target must have up=1' >&2; exit 1; }
jq . "$response"
)
از کجا بدانم درست انجام شد؟

دستور باید بدون خطا تمام شود؛ در صورت خطا، پیش از ادامه علت را برطرف کنید.

17

قدم بعدی

نگه‌داری و بررسی نسخه‌ها

نسخه‌های جدید Prometheus و node_exporter، به‌روزرسانی‌های Grafana و رشد داده‌های مانیتورینگ را پیگیری کنید. باینری‌های نصب‌شده از آرشیو، از طریق APT به‌روز نمی‌شوند.

در بازهٔ نگه‌داری، ابتدا نسخه‌ها، وضعیت سرویس و ظرفیت دیسک را با پنل زیر بررسی کنید. ارتقا را پس از بررسی سازگاری و تهیهٔ پشتیبان برنامه‌ریزی کنید.

Bash

ترمینال سرور مانیتورینگ.

(
set -euo pipefail
prometheus --version
node_exporter --version
dpkg -l grafana | awk '/^ii/ {print $2, $3}'
systemctl is-active prometheus node_exporter grafana-server
sudo du -sh /var/lib/prometheus
df -h /var/lib/prometheus
)
از کجا بدانم درست انجام شد؟

نسخهٔ مؤلفه‌های نصب‌شده، وضعیت active سرویس‌ها و اندازهٔ فعلی دایرکتوری دادهٔ Prometheus به‌صورت روشن قابل مشاهده است.

18

قدم بعدی

توقف امن و تأیید پشتیبان سازگار

کنارگذاشتن اختیاری سرویس‌ها، نمودار و scrape را متوقف می‌کند. برای سازگاری TSDB و SQLite ابتدا سرویس‌ها را متوقف کنید. آرشیو ساختار مسیرها را حفظ می‌کند تا تنظیم و داده با نام یکسان روی هم نوشته نشوند. خطا در توقف، آرشیو، هش یا بازخوانی، بلوک را قطع می‌کند. این روش برای بازنشسته‌کردن نصب است، نه بازگشت خودکار به باینری قدیمی.

اصل تنظیمات و داده‌ها حفظ می‌شود. مسیر چاپ‌شده را بررسی و پشتیبان را پیش از حذف بیشتر به مخزن حفاظت‌شدهٔ موجود منتقل کنید. هش و مقایسهٔ آرشیو، سلامت محلی را بررسی می‌کنند و جای بازیابی بحران را نمی‌گیرند. پشتیبان محرمانه است.

Bash

ترمینال سرور مانیتورینگ.

(
set -euo pipefail
sudo systemctl disable --now grafana-server prometheus node_exporter
sudo sh -eu <<'BACKUP'
umask 077
install -d -m 0700 /root/academy-backups
backup=$(mktemp -d /root/academy-backups/monitoring-XXXXXXXX)
tar -C / -cpf "$backup/monitoring.tar" \
  etc/prometheus var/lib/prometheus etc/grafana var/lib/grafana \
  etc/systemd/system/prometheus.service etc/systemd/system/node_exporter.service \
  etc/systemd/system/grafana-server.service.d/academy-local.conf \
  etc/apt/sources.list.d/grafana.list etc/apt/keyrings/grafana.asc
cd "$backup"
sha256sum monitoring.tar > SHA256SUMS
sha256sum -c SHA256SUMS
tar -tf monitoring.tar >/dev/null
tar -C / -df monitoring.tar
printf 'Verified local archive: %s/monitoring.tar\n' "$backup"
BACKUP
)
از کجا بدانم درست انجام شد؟

سرویس‌ها متوقف‌اند، آرشیو هش و مقایسه را گذرانده و اصل داده و تنظیمات باقی است. با هر خطا، اصل فایل‌ها را نگه دارید و علت را بررسی کنید.

اختیاری: حذف برنامه‌ها با حفظ داده

فقط پس از تأیید پشتیبان بالا و نگه‌داری مستقل آن، سه باینری و دو unit ساخته‌شده در همین آموزش را حذف کنید. برای Grafana از remove بدون purge استفاده می‌شود؛ autoremove نزنید. داده‌ها، تنظیمات، حساب‌های سیستمی، کلید مخزن و override محلی برای بازیابی حفظ می‌شوند. اگر نصب دیگری مالک این مسیرهاست، این مرحله را اجرا نکنید.

Bash

ترمینال سرور مانیتورینگ.

(
set -euo pipefail
for unit in grafana-server prometheus node_exporter; do
  state=$(systemctl show -p ActiveState --value "$unit")
  case "$state" in inactive|failed) ;; *) echo "Stop $unit before removal" >&2; exit 1 ;; esac
done
sudo apt-get remove grafana
sudo rm -f /etc/systemd/system/prometheus.service /etc/systemd/system/node_exporter.service
sudo rm -f /usr/local/bin/prometheus /usr/local/bin/promtool /usr/local/bin/node_exporter
sudo systemctl daemon-reload
)
از کجا بدانم درست انجام شد؟

دستور باید بدون خطا تمام شود؛ در صورت خطا، پیش از ادامه علت را برطرف کنید.

بازیابی وضعیت نگه‌داری‌شده و ادامهٔ کار

در توقف ساده، اصل داده و تنظیمات موجود است: اگر برنامه‌ها حذف شده‌اند همان نسخه‌های ثبت‌شده را نصب، پیکربندی Prometheus را اعتبارسنجی و بررسی‌های راه‌اندازی، آمادگی و منبع داده را تکرار کنید. برای بازیابی از آرشیو، نخست هش را بررسی و محتوا را در پوشهٔ جدا استخراج کنید؛ سپس مالکیت و مسیرها را پیش از بازگردانی به سرویس‌های متوقف بررسی کنید. آرشیو را روی پایگاه‌دادهٔ در حال اجرا استخراج نکنید و بدون بررسی سازگاری رسمی، TSDB را به نسخهٔ قدیمی برنگردانید.

در ادامه، ظرفیت و زمان نگه‌داری متناسب با کار خود را تعیین و قواعد هشدار را همراه با آزمون تحویل اعلان اضافه کنید. وجود داشبورد به‌تنهایی در زمان قطعی به مسئول سیستم اطلاع نمی‌دهد.

از کجا بدانم درست انجام شد؟

بازیابی با وضعیت حفظ‌شده و نسخهٔ سازگار انجام می‌شود؛ هشداردهی مرحلهٔ مستقل بعدی است.

پشتوانهٔ این آموزش

منابع رسمی

وضعیت بررسی هر محیط بالای صفحه مشخص است؛ بررسی مستندات به معنی اجرای عملی همهٔ نسخه‌ها نیست.

همهٔ آموزش‌های آکادمی ↗