WIUNIX ACADEMY
آموزش نصب Prometheus و Grafana در اوبونتو و دبیان
صفحهٔ 5 از 5؛ مراحل قبلی و پیشنیازها را پیش از ادامه مرور کن.
آموزش متناسب با محیط تو
کجا اجرا میکنی؟
سیستمعامل و نسخه را انتخاب کن تا مراحل، دستورها و راهحلها برای همان محیط نمایش داده شوند.
آموزش متناسب با مقادیر تو
تنظیمات این آموزش
مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر میکنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری میشوند و به سرور یا لینک اشتراکگذاری فرستاده نمیشوند. پیش از اجرا، DNS، گواهیها و سیاست شبکهٔ واقعی را بررسی کن.
آیپی، دامنه یا پورت مثالها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای بهروزشده را کپی کن.
تنظیم مقادیر برای محیط من2 مقدار قابلتغییر
قدم بعدی
افزودن سرور لینوکسی دوم
روی میزبان مانیتورینگ، دو هدف محلی را حفظ و آدرس خصوصی سرور دوم را اضافه کنید. اگر job دیگری دارید، فقط هدف جدید را با تنظیم موجود ادغام کنید و jobهای دیگر را بازنویسی نکنید.
محتوای فایل؛ در فایل نامبرده ذخیره کنید، نه در خط فرمان.
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 سرور دوم را نشان نمیدهد.
# 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 برای همان سرور دوم الزامی است.
ترمینال سرور مانیتورینگ.
(
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"
)دستور باید بدون خطا تمام شود؛ در صورت خطا، پیش از ادامه علت را برطرف کنید.
قدم بعدی
نگهداری و بررسی نسخهها
نسخههای جدید Prometheus و node_exporter، بهروزرسانیهای Grafana و رشد دادههای مانیتورینگ را پیگیری کنید. باینریهای نصبشده از آرشیو، از طریق APT بهروز نمیشوند.
در بازهٔ نگهداری، ابتدا نسخهها، وضعیت سرویس و ظرفیت دیسک را با پنل زیر بررسی کنید. ارتقا را پس از بررسی سازگاری و تهیهٔ پشتیبان برنامهریزی کنید.
ترمینال سرور مانیتورینگ.
(
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 بهصورت روشن قابل مشاهده است.
قدم بعدی
توقف امن و تأیید پشتیبان سازگار
کنارگذاشتن اختیاری سرویسها، نمودار و scrape را متوقف میکند. برای سازگاری TSDB و SQLite ابتدا سرویسها را متوقف کنید. آرشیو ساختار مسیرها را حفظ میکند تا تنظیم و داده با نام یکسان روی هم نوشته نشوند. خطا در توقف، آرشیو، هش یا بازخوانی، بلوک را قطع میکند. این روش برای بازنشستهکردن نصب است، نه بازگشت خودکار به باینری قدیمی.
اصل تنظیمات و دادهها حفظ میشود. مسیر چاپشده را بررسی و پشتیبان را پیش از حذف بیشتر به مخزن حفاظتشدهٔ موجود منتقل کنید. هش و مقایسهٔ آرشیو، سلامت محلی را بررسی میکنند و جای بازیابی بحران را نمیگیرند. پشتیبان محرمانه است.
ترمینال سرور مانیتورینگ.
(
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 محلی برای بازیابی حفظ میشوند. اگر نصب دیگری مالک این مسیرهاست، این مرحله را اجرا نکنید.
ترمینال سرور مانیتورینگ.
(
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 را به نسخهٔ قدیمی برنگردانید.
در ادامه، ظرفیت و زمان نگهداری متناسب با کار خود را تعیین و قواعد هشدار را همراه با آزمون تحویل اعلان اضافه کنید. وجود داشبورد بهتنهایی در زمان قطعی به مسئول سیستم اطلاع نمیدهد.
بازیابی با وضعیت حفظشده و نسخهٔ سازگار انجام میشود؛ هشداردهی مرحلهٔ مستقل بعدی است.
پشتوانهٔ این آموزش
منابع رسمی
وضعیت بررسی هر محیط بالای صفحه مشخص است؛ بررسی مستندات به معنی اجرای عملی همهٔ نسخهها نیست.
- Prometheus: صفحهٔ دانلود
- Prometheus: نصب
- Prometheus: مرجع پیکربندی
- Prometheus: راهنمای node_exporter
- Grafana: نصب روی Debian یا Ubuntu
- Grafana: منبعدادهٔ Prometheus
- Grafana: provisioning برای data source
- Ubuntu 26.10 release notes
- Debian 13 release notes
- Prometheus management and readiness API
- Prometheus HTTP query API
- Grafana configuration and environment overrides
- Prometheus 3 migration