WIUNIX ACADEMY
کاردینالیتی بالای Prometheus؛ یافتن برچسب مسئلهساز و آزمایش Recording Rule
تعداد سریها و نرخ ایجاد آنها را بررسی کنید، برچسبی با تعداد مقادیر نامحدود را در مبدأ اصلاح کنید و قاعدهٔ تجمیع را پیش از فعالسازی با promtool بسنجید.
محیطت را انتخاب کنآموزش متناسب با محیط تو
کجا اجرا میکنی؟
سیستمعامل و نسخه را انتخاب کن تا مراحل، دستورها و راهحلها برای همان محیط نمایش داده شوند.
آموزش متناسب با مقادیر تو
تنظیمات این آموزش
مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر میکنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری میشوند و به سرور یا لینک اشتراکگذاری فرستاده نمیشوند. پیش از اجرا، DNS، گواهیها و سیاست شبکهٔ واقعی را بررسی کن.
آیپی، دامنه یا پورت مثالها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای بهروزشده را کپی کن.
تنظیم مقادیر برای محیط من4 مقدار قابلتغییر
از اینجا شروع کن
در پایان چه چیزی خواهی داشت؟
منشأ رشد سریهای زمانی را از هزینهٔ پرسوجو جدا کنید و یک Recording Rule با معنای روشن، برچسبهای محدود و آزمون محاسباتی قابل بازبینی بسازید.
سیستمعاملها و نسخههای پوششدادهشده
فرمانها و تفاوتهای محیطهای منتخب با مستندات رسمی بررسی شدهاند؛ این بررسی به معنای اجرای عملی روی همهٔ سیستمها یا سرویس شما نیست.
قبل از شروع
- Prometheus موجود با نشانی مدیریتی محافظتشده و دسترسی مجاز برای بررسی آمار و قواعد.
- نسخهٔ سازگار promtool و شناخت مسیر rule_files و روش بارگذاری تنظیمات در نصب فعلی.
- متریک و برچسبهای واقعی برنامه و مسئول مشخص برای اصلاح ابزار اندازهگیری و داشبوردهای وابسته.
قدم بعدی
ابزار میزبان انتخابشده را آماده کنید
ابزارهای لازم را روی کامپیوتر یا سروری آماده کنید که فرمانهای مدیریتی را از آن اجرا میکنید. پیش از تأیید، فهرست تغییر بستهها را بخوانید؛ داخل کانتینر برنامه ابزار نصب نکنید. کلاستر، سرویس و باینریهای اصلی باید از قبل با نسخهٔ مورد تأیید موجود باشند. پنلهای بعد را در Bash اجرا کنید. نصب بسته روی همین میزبان تغییر ایجاد میکند، اما سرور برنامهٔ تازهای راه نمیاندازد.
از Prometheus موجود و promtool سازگار استفاده کنید. این مسیر هیچیک را نصب نمیکند و مسیر قواعد و روش بارگذاری نصب فعلی را حفظ میکند.
میزبان انتخابشده؛ نصب بسته فقط با مجوز تغییر همین میزبان
sudo dnf install ca-certificates bash coreutils
if ! command -v curl >/dev/null 2>&1; then sudo dnf install curl; fi
cat /etc/os-release
command -v bash curl timeout
'/usr/local/bin/promtool' --versionنسخهٔ سیستم با انتخاب شما یکسان باشد، ابزارها پیدا شوند و نسخهٔ کلاینت و سرویس با شرایط بالا سازگار باشند. اگر باینری موجود نیست یا سازگار نیست، ادامه ندهید.
حفاظت میزبان و مسیرهای نصب موجود را حفظ کنید
SELinux را در حالت enforcing و قواعد firewalld را فعال نگه دارید. ابزار کلاینت به خروجی مجازِ API، TLS یا SFTP نیاز دارد و پورت ورودی تازهای لازم نیست. نتیجهٔ سرویس محدودشدهٔ systemd ممکن است با اجرای تعاملی فرق داشته باشد. خطای AVC، برچسب فایل و مجوز سرویس را با مسئول سیاست بررسی کنید؛ خاموشکردن SELinux یا دیوارهٔ آتش و مجوز گسترده راهحل نیست. خطای زنجیرهٔ اعتماد یا سیاست رمزنگاری به مقصد سازگار نیاز دارد، نه ضعیفکردن حفاظت سیستم. مسیر داده و پیکربندی سفارشی باید برچسب مناسب فعلی را حفظ کند؛ بازبرچسبگذاری بازگشتیِ کورکورانه انجام ندهید.
میزبان انتخابشده؛ فقط خواندن وضعیت حفاظت
if command -v getenforce >/dev/null 2>&1; then getenforce; fi
if command -v firewall-cmd >/dev/null 2>&1; then firewall-cmd --state; fiتعداد سری، تغییر مداوم سریها و هزینهٔ پرسوجو یکی نیستند
هر سری زمانی از نام متریک و مجموعهٔ کامل برچسبهایش ساخته میشود. شناسهٔ درخواست، کاربر یا URL خام میتواند تعداد ترکیبها را بیحد افزایش دهد. کاردینالیتی تعداد ترکیبهای فعال است؛ churn سرعت ایجاد و ناپدیدشدن آنها را نشان میدهد. پرسوجوی کند ممکن است از بازهٔ طولانی یا عبارت پرهزینه ناشی شود، حتی وقتی تعداد سریها ثابت است.
Recording Rule نتیجهٔ محاسبه را بهصورت سری تازه ذخیره میکند. این کار هزینهٔ محاسبهٔ تکراری را کم میکند، اما سری ذخیرهشده هم اضافه میکند و ورودی اصلی را حذف نمیکند. پیش از معرفی تجمیع بهعنوان درمان فضای ذخیرهسازی، منشأ برچسبی با تعداد مقادیر نامحدود را اصلاح کنید. این راهنما برای Prometheus موجود است، نه نصب سامانهٔ مانیتورینگ تازه.
قدم بعدی
نسخهٔ سرور و مسیر قواعد فعال را مشخص کنید
از نشانی loopback محافظتشده روی میزبان Prometheus استفاده کنید. اگر مسیر شما احراز هویت یا پراکسی TLS دارد، تنظیم کلاینت مصوب را به کار ببرید و اطلاعات محرمانه را در فرم عمومی نگذارید. promtool باید با سرور سازگار باشد. rule_files فعلی و روش reload را خصوصی ثبت کنید؛ وجود فایل نمونه به معنای فعالبودن آن نیست.
خط فرمان؛ فقط در محیطی که مجوز بررسی آن را دارید
'/usr/local/bin/promtool' --version
curl --noproxy '*' --fail --silent --show-error --max-time 5 'http://127.0.0.1:9090/api/v1/status/buildinfo'
curl --noproxy '*' --fail --silent --show-error --max-time 5 'http://127.0.0.1:9090/api/v1/status/flags'نسخهٔ سرور و ابزار، فایلهای قواعد فعال و روش بارگذاری مجدد معلوم باشند.
قدم بعدی
بررسی را با آمار محدود TSDB شروع کنید
API وضعیت TSDB تعداد سریهای بخش head، متریکهای پرشمار و آمار مقادیر برچسب را نشان میدهد. این اطلاعات حساب دقیق حافظهٔ هر متریک یا مصرف دیسک کل دورهٔ نگهداری نیست. نمونهها را در زمانهای قابل مقایسه بگیرید و با تغییرهای انتشار تطبیق دهید. خود پایانهٔ تشخیصی هم منابع مصرف میکند؛ هنگام حادثه پیدرپی و بدون فاصله آن را نخوانید.
خط فرمان؛ فقط در محیطی که مجوز بررسی آن را دارید
curl --noproxy '*' --fail --silent --show-error --max-time 10 'http://127.0.0.1:9090/api/v1/status/tsdb?limit=10'
curl --noproxy '*' --fail --silent --show-error --get --max-time 10 'http://127.0.0.1:9090/api/v1/query' --data-urlencode 'query=prometheus_tsdb_head_series'آمار head و متریکها و برچسبهای پرشمار ثبت شده باشند، بدون ادعای اندازهگیری دقیق حافظهٔ هر متریک.
قدم بعدی
دامنهٔ پرسوجو را به یک job و یک متریک محدود کنید
نمونه فرض میکند برنامهٔ شما شمارندهٔ HTTP نمایشدادهشده را واقعاً ارائه میکند. اگر قرارداد متریک متفاوت است، با مسئول برنامه تطبیق دهید؛ نبود داده معادل ترافیک صفر نیست. روی سرور درگیر، از خروجی نامحدود series یا شمارش سراسری پرهیز کنید. topk تعداد سطرهای خروجی را محدود میکند، نه لزوماً کاری را که موتور برای محاسبه انجام میدهد.
شمارندهٔ ایجاد سری در عبارت پایانی، نرخ ایجاد سری در کل Prometheus را نشان میدهد. برچسب job یا instance آن به هدف پایش خود Prometheus اشاره دارد، نه برنامهٔ مسئلهساز. از آن برای نسبتدادن رشد سری به job منتخب استفاده نکنید.
خط فرمان؛ فقط در محیطی که مجوز بررسی آن را دارید
curl --noproxy '*' --fail --silent --show-error --get --max-time 10 'http://127.0.0.1:9090/api/v1/query' --data-urlencode 'query=count(http_requests_total{job="api"})'
curl --noproxy '*' --fail --silent --show-error --get --max-time 10 'http://127.0.0.1:9090/api/v1/query' --data-urlencode 'query=topk(10,count by (route) (http_requests_total{job="api"}))'
curl --noproxy '*' --fail --silent --show-error --get --max-time 10 'http://127.0.0.1:9090/api/v1/query' --data-urlencode 'query=rate(prometheus_tsdb_head_series_created_total[5m])'شواهد متریک و job منتخب از روند سراسری ایجاد سری تفکیک شده باشند و پرسوجوی نامحدود اجرا نشده باشد.