آموزش نصب پرومتئوس با استفاده از داکر
در این مطلب نحوه دانلود یک تصویر خاص یا مجموعه ای از تصاویر را با استفاده از دستور docker pull به شما آموزش خواهیم داد. همچنین نحوه نصب پرومتئوس با استفاده از داکر را نیز یاد می گیرید. این کارها بعد از اتمام نصب داکر در ویندوز امکان پذیرند. اما برای شروع به 2 سوال اساسی پاسخ می دهیم:
پرومتئوس (Prometheus) چیست؟
Prometheus یک برنامه نرم افزاری رایگان برای نظارت بر رویدادها و هشدارها است. این برنامه معیارها را در لحظه، در یک پایگاه داده سری زمانی که با مدل Pull HTTP ساخته شده است، ثبت می کند. این کار امکان درخواست های انعطاف پذیر و هشدار در لحظه را هم فراهم می کند.
مطالعه بیشتر: پرومتئوس چیست؟
داکر چیست؟
Docker مجموعه ای از پلتفرم ها در قالب یک ابزار خدماتی است که با استفاده از مجازی سازی در سطح سیستم عامل، نرم افزار را در کانتینرها ارائه می دهد. کانتینرها مستقل از هم بوده و حاوی نرم افزار، کتابخانه ها و فایل های پیکربندی مربوط به خودشان هستند. آن ها از طریق کانال های کاملاً تعریف شده با یکدیگر ارتباط برقرار می کنند.
داکر به عنوان یک کانتینر کم حجم، قابل حمل و مستقل که تقریباً می تواند در همه جا کار کند، بسته بندی، ارسال و اجرای هر نرم افزار را برای توسعه دهندگان ساده می کند.
کشیدن تصویر از Docker Hub
از Docker pull برای دانلود یک تصویر خاص یا مجموعه ای از تصاویر (به عنوان مثال، یک مخزن) استفاده می شود. اگر هیچ تگی مشخص نشده باشد، Docker Engine به طور پیش فرض بر روی تگ latest قرار می گیرد. این دستور آخرین تصویر را بازیابی می کند:
با استفاده از دستور docker pull، می توانید تصویر داکر Prometheus را دریافت کنید:
$ docker pull prom/prometheus
شناسه تصویر یک خلاصه SHA256 است که پیکربندی و لایه های تصویر را پوشش می دهد و داکر از یک ذخیره ساز تصویر با آدرس محتوا استفاده می کند.
چندین لایه را می توان در یک Image Docker قرار داد. تصویر در مثال بالا دارای لایه های زیر است.
پس از بارگیری تصویر، از دستور docker image ls برای مشاهده لیستی از تمام تصاویر موجود به صورت لوکال استفاده کنید.
C:\Users>docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
prom/prometheus latest 3313ec19d029 13 days ago 189MB
docker/getting-started latest 083d7564d904 3 weeks ago 28MB
hello-world latest d1165f221234 4 months ago 13.3kB
در نهایت، از Docker برای اجرای Prometheus استفاده خواهیم کرد. برای راه اندازی سرور Prometheus در پس زمینه، دستور زیر را تایپ کنید:
$ docker run -d --name=prometheus -p 9090:9090 -v <PATH_TO_prometheus.yml_FILE>:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml
مطمئن شوید که PATH_TO_prometheus.yml_FILE را، با مسیری که فایل prometheus.yml را در آن نگه داشته اید جایگزین کنید. از اینجا می توانید به پیکربندی اسناد Prometheus مراجعه کنید.
در این مثال، من فایل (prometheus.yml) را در درایو D نگه داشته ام. بنابراین من PATH_TO_prometheus.yml_FILE را با D:\prometheus.yml جایگزین کردم.
اما پس از اجرای دستور، با خطای داکر Error answer from daemon: Conflict مواجه شدم. نام کانتینر “/prometheus” در حال حاضر توسط کانتینر استفاده می شود.
C:\Users>docker run -d --name=prometheus -p 9090:9090 -v D:\prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml
docker: Error response from daemon: Conflict.
The container name "/prometheus" is already in use by container "865ad37d121bfdb8819b5459637ff407d0bb40eb4a2fd93a739030e008ef919e".
You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
برای رفع خطای بالا از دستور زیر برای حذف یک یا چند کانتینر استفاده کنید.
docker rm -f prometheus
اکنون از دستور زیر docker برای اجرای Prometheus استفاده کنید.
docker run -d --name=prometheus -p 9090:9090 -v D:\prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml
بصری سازی معیارهای Spring Boot از طریق داشبورد Prometheus
حالا شما می توانید داشبورد Prometheus را از طریق http://localhost:9090 باز کنید. می توانید با رفتن به Status > Targets بررسی کنید که آیا اتصالات کار می کنند و به درستی پیکربندی شده اند یا خیر؟
اگر با خطای زیر مواجه شدید:
Get “http://localhost:8080/actuator/prometheus”: dial tcp 127.0.0.1:8080: connect: connection refused
آدرس IP درست سیستم را در prometheus.yml file از مثال Spring Boot Prometheus جایگزین کنید. برای دریافت آدرس IP سیستم از دستور ipconfig استفاده کنید.
C:\Users>ipconfig
IPv4 Address. . . . . . . . : 192.168.1.9
global:
scrape_interval: 15s # Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['127.0.0.1:9090']
- job_name: 'spring-actuator'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
static_configs:
- targets: ['192.168.1.9:8080'] # refer system ip address rather that localhost
من از مثال Spring Boot Prometheus برای بصری سازی آن در داشبورد Prometheus استفاده کردم.
در اینجا چند نمودار Prometheus برای معیارهای برنامه Spring Boot آورده شده است.
- استفاده از CPU سیستم
- system_cpu_usage
- تأخیر Api
وقتی مثال Spring Boot Prometheus را استارت می کنیم و به http://localhost:8080/actuator/prometheus مراجعه می کنیم، می توانیم آمار برنامه را ببینیم.
- ارجاع
عبارت http_server_requests_second_max{uri=”/testApi”} در نمودار پرومتئوس برای مشاهده تأخیر آزمایشی api.