استفاده از Exporterها در Prometheus برای مانیتورینگ سرویس‌های مختلف

استفاده از Exporterها در Prometheus برای مانیتورینگ سرویس‌های مختلف
Using Exporters in Prometheus for Monitoring Various Services

امروزه نظارت بر عملکرد سیستم‌ها و سرویس‌ها به یکی از اولویت‌های اصلی در مدیریت زیرساخت‌های 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 به مستندات آن مراجعه کنید و به‌طور مرتب متریک‌ها و هشدارها را بررسی کنید تا از عملکرد بهینه اطمینان حاصل کنید.