تجربهی بهینهسازی و استفاده از Docker Registry Exporter
چند وقت پیش درگیر پروژهای برای رجیستریهای داکر بودم، و بزرگترین چالشم مانیتور کردن وضعیت رجیستری ها بود. داکر رجیستری بهطور پیشفرض یکسری متریک داره که میشه اونها رو با چند خط تنظیمات فعال کرد. برای این کار، باید توی تنظیمات http
، آپشن debug
رو فعال کنید و یه مسیر برای نمایش متریکها تعریف کنید. تنظیماتش به این شکله:
http:
addr: 0.0.0.0:5000
net: tcp
debug:
addr: 0.0.0.0:5001
prometheus:
enabled: true
path: /metrics
مشکل اینجا بود که این متریکها کافی نبودن و شامل مواردی که لازم داشتم، مثل تعداد ریپازیتوریها و تعداد تگها، نمیشدن. برای همین قبل از اینکه خودم دست به کار بشم و Exporter بنویسم، توی گیتهاب یه گشتی زدم. بعد از کلی گشتن، بالاخره یه Exporter پیدا کردم که کارم رو راه مینداخت.
نکتهی جالب این بود که این Exporter خودش از Docker استفاده نمیکرد:))))) و حدود یک سال هم آپدیت نشده بود!! پس دست به کار شدم و یه سری بهینهسازی روش انجام دادم و Dockerizeاش کردم تا بتونم همون خروجی که میخوام رو ازش بگیرم. این شد نتیجه کارم :
سعی کردم مستندات رو هم کامل بنویسم تا کار باهاش راحت باشه. برای استفاده ازش میتونید مستقیم از دستور Docker استفاده کنید و پارامترهای لازم رو به عنوان env variable پاس بدید:
docker run -d -p 9055:9055 -e REGISTRY_ADDRESS=127.0.0.1:5000 zer0power/docker-registry-exporter
اگه هم بخواید تنظیمات بیشتری انجام بدید، میتونید با یه فایل yaml
و env variable یا volumes اجراش کنید.
ترکیب متریکها و مانیتورینگ با Prometheus و Grafana
در نهایت با ترکیب متریکهای داکر رجیستری و Exporter بالا، یه کانفیگ برای Prometheus نوشتم که به شکل زیره:
global:
scrape_interval: 45s
scrape_timeout: 30s
scrape_configs:
- job_name: 'local-registry'
static_configs:
- targets: ['172.16.101.250:5001', 'local-registry-exporter:9055']
اینطوری Prometheus میتونه متریکها رو بهصورت مرتب جمع کنه و با یه داشبورد خوشگل توی Grafana، وضعیت رجیستریها رو مانیتور کنید. این کار دید خوبی به وضعیت رجیستری میده و کمک میکنه از وضعیت رجیستری ها با خبر باشم.