صحنهٔ نمایشی آکادمی ویونیکس؛ کاربر نشسته و نمودار فیزیکی مانیتورینگ Compose.

WIUNIX ACADEMY

آموزش مانیتورینگ با Prometheus، Grafana و Docker Compose

استک خصوصی مانیتورینگ با ایمیج ثابت، کشف سرویس، داشبورد مبتنی بر فایل و دادهٔ ماندگار بسازید و بکاپ و بازیابی را تمرین کنید.

متوسط60 دقیقه مطالعهبه‌روزرسانی
محیطت را انتخاب کن

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

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

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

Debian 13بررسی‌شده با مستندات رسمی ·

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

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

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

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

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

از اینجا شروع کن

در پایان چه چیزی خواهی داشت؟

استک خصوصی مانیتورینگ Compose با ایمیج ثابت، جمع‌آوری قابل بررسی و دادهٔ قابل بازیابی.

01SSH ← loopback192.0.2.40 · 13000 / 19090
02academy-monitor · 172.30.71.0/24Grafana → prometheus:9090 · Prometheus → grafana:3000
03ذخیرهٔ محلی ماندگار/srv/academy-monitor · /srv/academy-monitor-backups
سیستم‌عامل‌ها و نسخه‌های پوشش‌داده‌شده

پنج مسیر سیستم‌عامل با مستندات بررسی شده‌اند. نصب کامل سیستم و Docker، ورود واقعی SSH، انتشار عمومی و ارسال هشدار ادعا نمی‌شود. بررسی اجرایی ایزوله جدا ثبت می‌شود. تنظیم شخصی آزموده نیست و تصویر DEMO شاهد کارکنان، تأسیسات یا آزمون نیست.

قبل از شروع

  • سرور تازه و اختصاصی amd64 یا arm64 با sudo، کنسول و SSH مجاز.
  • بودجهٔ شروع آزمایشگاه: ۲ vCPU، چهار GiB حافظه و ۲۰ GiB دیسک محلی؛ ظرفیت واقعی اندازه‌گیری شود.
  • مسیر و پورت آزاد، subnet بدون تداخل و خروجی HTTPS به مخزن بسته و ایمیج.
  • ویرایشگر محافظت‌شدهٔ رمز و مقصد بکاپ رمزنگاری‌شدهٔ مصوب خارج میزبان.

مانیتورینگ با Compose، از اجرا تا بازیابی

در این آموزش یک استک خصوصی Prometheus و Grafana می‌سازید که ایمیج مشخص، دادهٔ ماندگار، فهرست قابل تغییر تارگت‌ها و داشبورد آماده از فایل دارد. سپس قطع یکی از سرویس‌ها و برگشت اطلاعات را بررسی می‌کنید. برای حدود ۶۰ دقیقه کار عملی، آشنایی با لینوکس، YAML و SSH لازم است. متریک‌های این تمرین مربوط به همین دو سرویس‌اند؛ مصرف واقعی میزبان و همهٔ کانتینرها خودکار جمع‌آوری نمی‌شود. برای آن کار، آموزش مستقل مانیتورینگ میزبان را ببینید.

آدرس میزبان با آدرس داخل کانتینر فرق دارد

مرورگر از تونل SSH فعلی به پورت‌های محلی 13000 و 19090 میزبان 192.0.2.40 می‌رسد. داخل شبکهٔ جداگانهٔ Compose، گرافانا با نام سرویس prometheus و پورت 9090 کوئری می‌زند و پرومتئوس از خودش و grafana:3000 متریک می‌گیرد. localhost داخل کانتینر به همان کانتینر اشاره دارد. نام سرویس با جایگزینی کانتینر ثابت می‌ماند و به IP دستی نیاز ندارد. پورت داخلی دو سرویس ثابت است؛ تنظیم بالای صفحه فقط پورت میزبان و تونل را تغییر می‌دهد. برای این سناریو دامنه و پورت وب عمومی لازم نیست.

دسترسی مدیریت را عمومی نکنید

انتشار پورت فقط روی 127.0.0.1 انجام می‌شود. Docker Engine نگهداری‌شده و حداقل نسخهٔ 28 لازم است؛ نسخه‌های قدیمی‌تر مشکل دسترسی همسایهٔ لایهٔ دو به پورت localhost داشتند. پورت منتشرشدهٔ داکر ممکن است از قواعد معمول UFW عبور کند؛ برای رفع خطا آن را به همهٔ آدرس‌ها باز نکنید. root میزبان و دارندگان Docker API به فایل‌ها و شبکه دسترسی دارند. سرویس غیرقابل اعتماد را وارد این شبکه نکنید. mount فقط‌خواندنی Docker socket مجوز API را محدود نمی‌کند. این تمرین socket، ریشهٔ میزبان، cgroup یا exporter دارای دسترسی ویژه را mount نمی‌کند؛ افزودن cAdvisor و node_exporter کانتینری به بررسی جداگانه نیاز دارد.

ابتدا مقادیر عمومی محیط را انتخاب کنید

شناسهٔ آزاد academy-monitor، دو پوشهٔ مطلق و تازه برای استک و بکاپ، subnet بدون تداخل 172.30.71.0/24 و پورت‌های آزاد و متفاوت انتخاب کنید. پوشه‌ها نباید داخل هم یا از قبل موجود باشند؛ مالکیت والد و symlink را جداگانه ببینید. شبکه نباید با LAN، VPN، route یا شبکهٔ دیگر داکر هم‌پوشانی داشته باشد. IP، کاربر و پورت SSH مربوط به دسترسی مجاز موجود شماست. نگهداری داده 15 روز و سقف بلوک‌ها 5 گیبی‌بایت است؛ برای WAL، دادهٔ فعال، گرافانا، لاگ و بکاپ فضای اضافه بگذارید. تنظیمات اعمال‌شده و پیشرفت شخصی در sessionStorage همین تب، زبان، مقاله و محیط می‌مانند و پیشرفت پیش‌فرض از localStorage استفاده می‌کند. مقادیر به لینک اشتراک یا سرور نمی‌روند؛ رمز و توکن وارد نکنید. این تنظیمات، آزمون اجرایی محیط شما نیستند.

01

قدم بعدی

پیش از نصب، میزبان را بررسی کنید

از سرور تازهٔ amd64 یا arm64 با sudo و راه دسترسی کنسول مستقل استفاده کنید. برای این تمرین کوچک، ۲ پردازندهٔ مجازی، ۴ گیبی‌بایت RAM و دست‌کم ۲۰ گیبی‌بایت دیسک محلی آزاد نقطهٔ شروع است؛ اندازهٔ نهایی به تعداد سری‌های فعال و نرخ دریافت وابسته است. route و شنونده‌ها را ببینید. اگر runtime یا بار کاری فعالی وجود دارد، نصب را متوقف و مهاجرت را طراحی کنید؛ بسته‌ها را حذف و daemon مشترک را کورکورانه restart نکنید.

Bash

سرور اختصاصی لینوکس؛ پوستهٔ Bash

cat /etc/os-release
dpkg --print-architecture
df -h /var/lib /srv
free -h
ip -4 route show table all
sudo ss -lntup
dpkg-query -W docker.io docker-ce containerd containerd.io runc podman-docker docker-compose docker-compose-v2 2>/dev/null || true
از کجا بدانم درست انجام شد؟

سیستم پشتیبانی‌شده، منابع کافی و پورت آزاد دارید و runtime متعلق به کار دیگری نیست.

02

قدم بعدی

مخزن رسمی Docker را تنظیم کنید

مستندات فعلی سازنده Ubuntu 26.10، نسخه‌های LTS انتخابی و Debian 13/12 را صریحاً فهرست می‌کنند. مخزن باید برای همان سیستم و codename باشد؛ نسخهٔ توزیع دیگری جایگزین نمی‌شود. این مرحله فقط برای میزبان خالیِ تأییدشده است. بسته‌های داکر، containerd و runc توزیع را طبق صفحهٔ رسمی پیش‌نیازها از نظر تداخل بررسی کنید. نصب Docker شبکهٔ میزبان را تغییر می‌دهد و daemon دارای دسترسی بالا راه می‌اندازد؛ آن را فقط در آزمایشگاه خود انجام دهید. کلید سازنده از HTTPS دریافت می‌شود و مخزن امضاشده، فرادادهٔ بسته‌ها را کنترل می‌کند.

Bash

سرور اختصاصی لینوکس؛ پوستهٔ Bash

sudo apt-get update
sudo apt-get install --no-install-recommends ca-certificates curl python3 nano iproute2
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt-get update
apt-cache policy docker-ce docker-compose-plugin
از کجا بدانم درست انجام شد؟

مخزن امضاشده برای codename همین سیستم است و خطای امضا یا نبود Release ندارد.

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