استفاده از Exporterها در Prometheus برای مانیتورینگ سرویسهای مختلف
امروزه نظارت بر عملکرد سیستمها و سرویسها به یکی از اولویتهای اصلی در مدیریت زیرساختهای IT تبدیل شده است. Prometheus به عنوان یک سیستم مانیتورینگ Open Source، ابزاری قدرتمند برای جمعآوری و تجزیه و تحلیل متریکهای عملکردی ارائه میدهد. Exporterها نقش حیاتی در این فرآیند ایفا میکنند و دادههای مورد نیاز برای تحلیل را از سرویسها جمعآوری میکنند. در این مقاله به بررسی برخی از Exporterهای برتر، نصب آنها با استفاده از Docker و Linux، پیکربندیهای پیشرفته، و سناریوهای واقعی تولید میپردازیم.
Exporter چیست؟
Exporter نرمافزاری است که اطلاعات و متریکهای لازم را از سیستمها و خدمات مختلف جمعآوری و به فرمت قابلفهم برای Prometheus ارسال میکند. این ابزارها میتوانند شامل متریکهای مربوط به استفاده از CPU، حافظه، دیسک، و سایر عملکردهای مهم باشند.
برترین Exporterها
1. Node Exporter
Node Exporter به عنوان یکی از اصلیترین ابزارها برای جمعآوری متریکهای سیستمعامل، شامل بار CPU، استفاده از حافظه، و اطلاعات شبکه است.
نصب Node Exporter با Docker:
docker run -d \
--name=node_exporter \
--restart=always \
-p 9100:9100 \
prom/node-exporter
نصب Node Exporter در Linux:
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
tar -xvf node_exporter-1.8.2.linux-amd64.tar.gz
cd node_exporter-1.8.2.linux-amd64
./node_exporter &
پیکربندی Prometheus:
در فایل prometheus.yml
، پیکربندی زیر را اضافه کنید:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['<NODE_IP>:9100']
متریکهای کلیدی:
node_cpu_seconds_total
: زمان مصرف CPU.node_memory_MemAvailable_bytes
: مقدار حافظه موجود.node_disk_io_time_seconds_total
: زمان I/O دیسک.
2. MySQL Exporter
MySQL Exporter به جمعآوری و تجزیه و تحلیل متریکهای پایگاهداده MySQL کمک میکند.
نصب MySQL Exporter با Docker:
docker run -d \
--name=mysql_exporter \
--restart=always \
-e DATA_SOURCE_NAME='username:password@tcp(<MYSQL_IP>:3306)/' \
-p 9104:9104 \
prom/mysqld-exporter
نصب MySQL Exporter در Linux:
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz
tar -xvf mysqld_exporter-0.15.1.linux-amd64.tar.gz
cd mysqld_exporter-0.15.1.linux-amd64
./mysqld_exporter --config.my-cnf=my.cnf &
[client]
user=<username>
password=<password>
پیکربندی Prometheus:
scrape_configs:
- job_name: 'mysql_exporter'
static_configs:
- targets: ['<MYSQL_IP>:9104']
3. Redis Exporter
Redis Exporter به جمعآوری و نمایش متریکهای مرتبط با Redis کمک میکند.
نصب Redis Exporter با Docker:
docker run -d \
--name=redis_exporter \
--restart=always \
-p 9121:9121 \
oliver006/redis_exporter
نصب Redis Exporter در Linux:
wget https://github.com/oliver006/redis_exporter/releases/download/v1.65.0/redis_exporter-v1.65.0.linux-amd64.tar.gz
tar -xvf redis_exporter-v1.65.0.linux-amd64.tar.gz
cd redis_exporter-v1.65.0.linux-amd64
./redis_exporter &
پیکربندی Prometheus:
در فایل prometheus.yml
، پیکربندی زیر را اضافه کنید:
scrape_configs:
- job_name: 'redis_exporter'
static_configs:
- targets: ['<REDIS_IP>:9121']
4. Blackbox Exporter
Blackbox Exporter به شما این امکان را میدهد تا از راه دور سلامت و در دسترس بودن سرویسها را بررسی کنید.
نصب Blackbox Exporter با Docker:
docker run -d \
--name=blackbox_exporter \
--restart=always \
-p 9115:9115 \
prom/blackbox-exporter
نصب Blackbox Exporter در Linux:
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.25.0/blackbox_exporter-0.25.0.linux-amd64.tar.gz
tar -xvf blackbox_exporter-0.25.0.linux-amd64.tar.gz
cd blackbox_exporter-0.25.0.linux-amd64
./blackbox_exporter &
پیکربندی Prometheus:
scrape_configs:
- job_name: 'blackbox_exporter'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets: ['http://example.com']
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: localhost:9115
سناریو: استفاده از Docker Compose برای راهاندازی همه Exporterها
برای سادهسازی مدیریت و راهاندازی Exporterها، میتوانید از Docker Compose استفاده کنید. این کار به شما این امکان را میدهد که بهراحتی همه Exporterها را در یک فایل یکنواخت راهاندازی کنید.
ایجاد فایل docker-compose.yml
:
version: '3.8'
services:
node_exporter:
image: prom/node-exporter
container_name: node_exporter
restart: always
ports:
- "9100:9100"
mysql_exporter:
image: prom/mysqld-exporter
container_name: mysql_exporter
restart: always
environment:
- DATA_SOURCE_NAME=username:password@tcp(mysql:3306)/
ports:
- "9104:9104"
depends_on:
- mysql
redis_exporter:
image: oliver006/redis_exporter
container_name: redis_exporter
restart: always
ports:
- "9121:9121"
blackbox_exporter:
image: prom/blackbox-exporter
container_name: blackbox_exporter
restart: always
ports:
- "9115:9115"
networks:
default:
external:
name: exporter-network
اجرای Docker Compose:
برای راهاندازی Exporterها با استفاده از Docker Compose، دستور زیر را در دایرکتوری حاوی فایل docker-compose.yml
اجرا کنید:
docker-compose up -d
نتیجهگیری
استفاده از Exporterها در Prometheus به شما این امکان را میدهد که نظارتی جامع و دقیق بر روی زیرساختهای خود داشته باشید. با پیکربندی صحیح و استفاده از قابلیتهای پیشرفته، میتوانید به بهینهسازی عملکرد سیستمها و پیشبینی مشکلات احتمالی کمک کنید. فراموش نکنید که برای هر Exporter به مستندات آن مراجعه کنید و بهطور مرتب متریکها و هشدارها را بررسی کنید تا از عملکرد بهینه اطمینان حاصل کنید.