علی ناصری
علی ناصری
خواندن ۳ دقیقه·۴ سال پیش

مانیتورینگ منابع سرور با Grafana

داشبور Grafana برای مدیریت منابع سرور
داشبور Grafana برای مدیریت منابع سرور

توی این مقاله قراره باهم برای سروری که داریم به کمک Grafana و Prometheus و Node Exporter یک داشبورد مانیتورینگ بیاریم بالا و از میزان مصرف منابع سرورمون باخبر شیم.

قبل از شروع اول یه تعریفی داشتی باشیم ببینیم اصلا چی هستن اینا:

  • اول از همه ‌تعریف Node Exporter: یک سرویسی هست که روی سیستم اجرا میشه و هر ثانیه اطلاعات سیستم رو جمع میکنه.
  • بریم سراغ Prometheus که یک دیتابیس هست که دیتاهاش رو به صورت Time Series نگه میداره. اینجا قراره دیتاهایی که Node Exporter برامون جمع کرده رو نگه داره برامون
  • و در آخر Grafana که یک داشبورد هست که اطلاعاتی که Prometheus ذخیره کرده رو برامون به نمایش درمیاره.

خب حالا قراره باهم این سه تا سرویس رو با Docker Compose بیاریم بالا که هم یکپارچه باشه و هم سرورمون رو کثیف نکرده باشیم و هر موقع دلمون خواست پاکش کنیم بره.


اگه با Docker Compose آشنایی ندارید یه مقاله راجع بهش نوشتم

https://vrgl.ir/n2lMn

خب من محتویات فایل docker-compose.yml رو میزارم بعد بریم سراغ توضیحش:

version: '3' services: grafana: container_name: grafana image: grafana/grafana:latest restart: always ports: - 3000:3000 links: - 'prometheus:prometheus' prometheus: container_name: prometheus image: prom/prometheus:latest restart: always ports: - 9090:9090 links: - 'node-exporter:node-exporter' volumes: - ./prometheus/:/etc/prometheus node-exporter: container_name: node-exporter image: prom/node-exporter:latest restart: always ports: - 9100:9100

خب همونطور که مشخصه ما سه تا سرویس داریم میاریم بالا روی پورت‌هایی که تعریف کردیم. فقط یه Volume اختصاص دادم به Prometheus که توی اون Directory یه فایل prometheus.yml گذاشتم که تنظیمات Prometheus ما هستش که محتویاتش میشه این:

global: scrape_interval: 15s scrape_configs: - job_name: 'node-exporter' static_configs: - targets: ['node-exporter:9100']

اینجا ما گفتیم که هر ۱۵ ثانیه اطلاعات رو از Node Exporter بگیره و ذخیره کنه. توجه کنید که در قسمت target ما بجای ip سرورمون اسم خود Container رو صدا زدیم که توی فایل docker-compose.yml بالا تعریفش کردیم.

خب حالا یه docker-compose up می‌زنیم و قاعداتا باید سه تا سرویس‌ ما روی پورت‌هایی که تعریف کردیم بالا بیاد.

اول از همه بریم ببینیم Prometheus تونسته اطلاعات رو از Node Exporter بگیره یا نه. باید بریم به این آدرس:

http://YOUR_SERVER_IP:9090/targets

اگه تونسته باشه به Node Exporter وصل بشه و اطلاعات بگیره ازش باید یه همچین چیزی ببینیم:

خب کارمون اینور تمومه بریم سراغ Grafana. اول بریم به این آدرس برای اینکه برسیم به تنظیماتش:

http://YOUR_SERVER_IP:3000

بعد از اینکه پسورد رو عوض کردید و وارد داشبورد شدید از منو سمت چپ و تنظیمات برید قسمت Data Sources یا از این آدرس راحت تر بهش برسید:

http://YOUR_SERVER_IP:3000/datasources

گزینه Add data source رو بزنید بعد Prometheus رو انتخاب کنید و توی قسمت URL بزنید:

prometheus:9090

برید پایین Save & Test رو بزنید اگه پیغام Success گرفتید که چه عالی اگه نه این آدرس رو هم تست کنید:

http://YOUR_SERVER_IP:9090

اگه همه چی خوب پیش بره ما تونستیم دیتاهایی که Node Exporter از سرورمون جمع میکنه رو با استفاده از Prometheus ذخیره کنیم و حالا Grafana رو به Prometheus وصل کردیم و نیاز به یه داشبورد داریم که نشونمون بده. از منو سمت چپ از گزینه Dashboard گزینه Manage رو انتخاب کنید و بعد دکمه Import رو بزنید و عدد 1860 رو بزنید و دکمه Load رو بزنید. (در واقع 1860 آیدی اون داشبوردی هست که میخوایم برامون از سایت خود Grafana بگیره)
بعد از Import باید برسید به این قسمت:

فقط حواستون باشه از اون قسمت پایین Prometheus رو انتخاب کنید حتما.

اگه همه چی اوکی باشه با زدن دکمه Import مستقیم میرید توی داشبوردتون و میزان مصرف منابع سرورتون رو می‌بینید. (عکس اول مقاله)


خیلی خوشحال شدم که وقتتون رو گذاشتید و این مقاله رو تا انتها مطالعه کردید. امیدوارم که مفید بوده باشه براتون. خوشحال میشم هر نظری درباره این مقاله یا مقاله‌های پیشین داشتید باهام درمیون بزارید.

grafanaprometheusnode exporterمنابع سرورداشبورد
https:/alinaseri.dev
شاید از این پست‌ها خوشتان بیاید