WIUNIX ACADEMY
آموزش نصب Prometheus و Grafana در اوبونتو و دبیان
صفحهٔ 3 از 5؛ مراحل قبلی و پیشنیازها را پیش از ادامه مرور کن.
آموزش متناسب با محیط تو
کجا اجرا میکنی؟
سیستمعامل و نسخه را انتخاب کن تا مراحل، دستورها و راهحلها برای همان محیط نمایش داده شوند.
آموزش متناسب با مقادیر تو
تنظیمات این آموزش
مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر میکنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری میشوند و به سرور یا لینک اشتراکگذاری فرستاده نمیشوند. پیش از اجرا، DNS، گواهیها و سیاست شبکهٔ واقعی را بررسی کن.
آیپی، دامنه یا پورت مثالها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای بهروزشده را کپی کن.
تنظیم مقادیر برای محیط من2 مقدار قابلتغییر
قدم بعدی
بررسی دریافت متریک از API
اولین scrape فوری نیست. این بررسی حداکثر ۱۲ بار، با فاصلهٔ پنج ثانیه تلاش میکند و علاوه بر HTTP 200، وضعیت success و مقدار up=1 را برای هر دو هدف محلیِ مشخصشده میخواهد.
ترمینال سرور مانیتورینگ.
(
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 کند یا نه.
curl -fsS --connect-timeout 2 --max-time 5 http://127.0.0.1:9090/api/v1/targets | jq .آمادهکردن دسترسی محلی Grafana پیش از نصب
این override را پیش از نصب بسته بسازید تا حتی راهاندازی احتمالی توسط بسته هم فقط روی loopback باشد.
ترمینال سرور مانیتورینگ.
(
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 میتواند به همین شنوندهٔ محلی متصل شود.
محتوای فایل؛ در فایل نامبرده ذخیره کنید، نه در خط فرمان.
[Service]
Environment="GF_SERVER_HTTP_ADDR=127.0.0.1"
فقط آدرس loopback برای شنونده تنظیم شده است.
قدم بعدی
نصب Grafana از مخزن رسمی APT
مستندات Grafana، مخزن APT برای Ubuntu و Debian را مسیر استاندارد نصب معرفی میکنند. در این آموزش بستهٔ متنباز grafana را نصب میکنیم. اگر در محیطت به نسخهٔ Enterprise رایگان نیاز داری، فقط نام بسته را عوض کن و همین مخزن را نگه دار.
کلید مخزن زیر /etc/apt/keyrings ذخیره میشود و فایل منبع مخزن هم در /etc/apt/sources.list.d قرار میگیرد.
ترمینال سرور مانیتورینگ.
(
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 را میبیند.
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 خارج شوید. محتوای فایل را در ترمینال اجرا نکنید.
ترمینال سرور مانیتورینگ.
sudo nano /etc/grafana/provisioning/datasources/prometheus.yamlدستور باید بدون خطا تمام شود؛ در صورت خطا، پیش از ادامه علت را برطرف کنید.
قدم بعدی
تعریف منبع دادهٔ Prometheus در Grafana
با فایل provisioning، منبع داده هنگام راهاندازی Grafana بهصورت تکرارپذیر تعریف میشود. نیازی به افزودن دستی آن در رابط کاربری نیست.
فایل زیر Prometheus محلی را بهعنوان منبع پیشفرض معرفی میکند. پس از ذخیره، در پنل بعدی سرویس را restart و اتصال را بررسی کنید.
محتوای فایل؛ در فایل نامبرده ذخیره کنید، نه در خط فرمان.
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 متصل میکند.