← شروع آموزش

WIUNIX ACADEMY

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

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

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

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

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

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

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

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

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

آی‌پی، دامنه یا پورت مثال‌ها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای به‌روز‌شده را کپی کن.

تنظیم مقادیر برای محیط من2 مقدار قابل‌تغییر
10

قدم بعدی

بررسی دریافت متریک از API

اولین scrape فوری نیست. این بررسی حداکثر ۱۲ بار، با فاصلهٔ پنج ثانیه تلاش می‌کند و علاوه بر HTTP 200، وضعیت success و مقدار up=1 را برای هر دو هدف محلیِ مشخص‌شده می‌خواهد.

Bash

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

(
set -euo pipefail
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' -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 any(.data.result[]; .metric.job == "prometheus" and .metric.instance == "127.0.0.1:9090" and .value[1] == "1") and any(.data.result[]; .metric.job == "node-exporter" and .metric.instance == "127.0.0.1:9100" and .value[1] == "1")' "$response" >/dev/null; then
      ok=1; break
    fi
  fi
  sleep 5
done
[ "$ok" = 1 ] || { cat "$response" >&2; echo 'Both local targets must have up=1' >&2; exit 1; }
jq . "$response"
)
خروجی نمونه
نمونهٔ پاسخ؛ زمان واقعی متفاوت است:
{"status":"success","data":{"resultType":"vector","result":[{"metric":{"job":"prometheus","instance":"127.0.0.1:9090"},"value":[1792444800,"1"]},{"metric":{"job":"node-exporter","instance":"127.0.0.1:9100"},"value":[1792444800,"1"]}]}}
از کجا بدانم درست انجام شد؟

فیلد status برابر success است و برای jobهای prometheus و node-exporter مقدار 1 دیده می‌شود.

پاسخ Query خالی است

لیست targetهای کشف‌شده را بررسی کن تا مشخص شود Prometheus واقعاً می‌تواند هر job را scrape کند یا نه.

Bash
curl -fsS --connect-timeout 2 --max-time 5 http://127.0.0.1:9090/api/v1/targets | jq .

آماده‌کردن دسترسی محلی Grafana پیش از نصب

این override را پیش از نصب بسته بسازید تا حتی راه‌اندازی احتمالی توسط بسته هم فقط روی loopback باشد.

Bash

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

(
set -euo pipefail
sudo install -d -m 0755 /etc/systemd/system/grafana-server.service.d
sudo nano /etc/systemd/system/grafana-server.service.d/academy-local.conf
)
از کجا بدانم درست انجام شد؟

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

محتوای override دسترسی محلی Grafana

این محتوا را ذخیره کنید و از ویرایشگر خارج شوید. متغیر محیطی بر grafana.ini اولویت دارد. بعداً یک reverse proxy تأییدشده با TLS می‌تواند به همین شنوندهٔ محلی متصل شود.

systemd · /etc/systemd/system/grafana-server.service.d/academy-local.conf

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

[Service]
Environment="GF_SERVER_HTTP_ADDR=127.0.0.1"
از کجا بدانم درست انجام شد؟

فقط آدرس loopback برای شنونده تنظیم شده است.

11

قدم بعدی

نصب Grafana از مخزن رسمی APT

مستندات Grafana، مخزن APT برای Ubuntu و Debian را مسیر استاندارد نصب معرفی می‌کنند. در این آموزش بستهٔ متن‌باز grafana را نصب می‌کنیم. اگر در محیطت به نسخهٔ Enterprise رایگان نیاز داری، فقط نام بسته را عوض کن و همین مخزن را نگه دار.

کلید مخزن زیر /etc/apt/keyrings ذخیره می‌شود و فایل منبع مخزن هم در /etc/apt/sources.list.d قرار می‌گیرد.

Bash

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

(
set -euo pipefail
sudo systemctl daemon-reload
sudo install -d -m 0755 /etc/apt/keyrings
key=$(mktemp)
trap 'rm -f "$key"' EXIT
curl -fL --connect-timeout 10 --max-time 60 https://apt.grafana.com/gpg-full.key -o "$key"
gpg --show-keys "$key"
sudo install -m 0644 "$key" /etc/apt/keyrings/grafana.asc
printf '%s\n' 'deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main' | sudo tee /etc/apt/sources.list.d/grafana.list >/dev/null
sudo apt-get update
sudo apt-get install -y grafana
dpkg-query -W -f='${Version}\n' grafana
)
از کجا بدانم درست انجام شد؟

مخزن Grafana برای APT قابل‌خواندن می‌شود و بستهٔ grafana بدون خطای امضا یا وابستگی نصب می‌گردد.

APT بستهٔ Grafana را پیدا یا اعتبارسنجی نمی‌کند

فایل مخزن، فایل کلید و خروجی policy را ببین تا مطمئن شوی APT واقعاً مخزن رسمی Grafana را می‌بیند.

Bash
sudo cat /etc/apt/sources.list.d/grafana.list
sudo ls -l /etc/apt/keyrings/grafana.asc
sudo apt-cache policy grafana

بازکردن فایل تنظیمات بعدی

فایل را باز کنید، محتوای پنل بعدی را در آن قرار دهید و ذخیره کنید. در nano با Ctrl+O و Enter ذخیره و با Ctrl+X خارج شوید. محتوای فایل را در ترمینال اجرا نکنید.

Bash

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

sudo nano /etc/grafana/provisioning/datasources/prometheus.yaml
از کجا بدانم درست انجام شد؟

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

12

قدم بعدی

تعریف منبع دادهٔ Prometheus در Grafana

با فایل provisioning، منبع داده هنگام راه‌اندازی Grafana به‌صورت تکرارپذیر تعریف می‌شود. نیازی به افزودن دستی آن در رابط کاربری نیست.

فایل زیر Prometheus محلی را به‌عنوان منبع پیش‌فرض معرفی می‌کند. پس از ذخیره، در پنل بعدی سرویس را restart و اتصال را بررسی کنید.

YAML · /etc/grafana/provisioning/datasources/prometheus.yaml

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

apiVersion: 1

datasources:
  - name: Prometheus
    uid: prometheus-local
    type: prometheus
    access: proxy
    url: http://127.0.0.1:9090
    isDefault: true
    editable: true
از کجا بدانم درست انجام شد؟

فایل provisioning ساخته می‌شود و Grafana را به API محلی Prometheus متصل می‌کند.

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