為實現Prometheus監控目標配置的動態加載,可通過基於文件的服務發現完成配置
1 Kafka服務的自動發現配置
Prometheus官方exporter鏈接:
在kafka節點上運行docker版kafka-exporter
docker run -d -p 9308:9308 danielqsj/kafka-exporter --kafka.server=kafka:9092
創建targets文件夾:
mkdir -p /etc/promethues/targets/kafka
創建組件targets的yml文件:
vim /etc/promethues/targets/kafka - targets: - "kafka1:9308" - "kafka2:9308" - "kafka3:9308"
修改/etc/prometheus/prometheus.yml:
... - job_name: 'kafka' file_sd_configs: - files: - targets/kafka/*.yml refresh_interval: 5m
2 MySQL服務的自動發現配置
Prometheus官方exporter鏈接:
在kafka節點上運行docker版mysql-exporter,並對應雙實例
docker run -d -p 9104:9104 -e DATA_SOURCE_NAME="exporter:pwd@(mysql-1:3306)/" prom/mysqld-exporter # 雙實例 docker run -d -p 9105:9104 -e DATA_SOURCE_NAME="exporter:pwd@(mysql-1:13306)/" prom/mysqld-exporter
創建targets文件夾:
mkdir -p /etc/promethues/targets/mysql
創建組件targets的yml文件:
- targets: - "mysql-1:9104" - "mysql-1:9105"
修改/etc/prometheus/prometheus.yml:
- job_name: 'mysql' file_sd_configs: - files: - targets/mysql/*.yml refresh_interval: 5m
3 Redis Cluster服務的自動發現配置
Prometheus官方exporter鏈接:
在redis節點上運行docker版redis-exporter
docker run -d --name redis_exporter -p 9121:9121 oliver006/redis_exporter
創建targets文件夾:
mkdir -p /etc/promethues/targets/redis
創建組件targets的yml文件:
- targets: - redis://redis-1:16379 - redis://redis-2:16379 - redis://redis-3:16379
修改/etc/prometheus/prometheus.yml:
... - job_name: 'redis_exporter_targets' file_sd_configs: - files: - targets/redis/redis.yml metrics_path: /scrape relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: redis_exporter:9121 ## config for scraping the exporter itself - job_name: 'redis_exporter' static_configs: - targets: - redis_exporter:9121