Prometheus运维(接入容器,Kafka,Redis,Mysql监控)
1.容器监控接入
1.1 容器监控export安装启动
# 创建文件夹
mkdir /usr/local/prometheus_monitor/cadvisor-docker_state/
# 进入文件夹内创建docker-compose文件
root@ubuntu2204-98:/usr/local/prometheus_monitor/cadvisor-docker_state# cat docker-compose.yml
version: "3.8"
services:
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
ports:
- 18080:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
docker_state_exporter:
image: karugaru/docker_state_exporter
volumes:
- type: bind
source: /var/run/docker.sock
target: /var/run/docker.sock
ports:
- 18085:8080
1.2 在Prometheus中添加监控项
# 创建用于存储监控容器列表的文件夹并添加监控的IP及端口
root@ubuntu2204-98:~# mkdir /usr/local/prometheus_monitor/prometheus/cadvisor-docker_state
# 进入文件夹并创建监控列表
root@ubuntu2204-98:~# cd /usr/local/prometheus_monitor/prometheus/cadvisor-docker_state
root@ubuntu2204-98:/usr/local/prometheus_monitor/prometheus/cadvisor-docker_state# cat cadvisor.yaml
- targets:
- 192.168.1.98:18080
root@ubuntu2204-98:/usr/local/prometheus_monitor/prometheus/cadvisor-docker_state# cat docker-state-exporter.yaml
- targets:
- 192.168.1.98:18085
# 修改Prometheus配置文件,在最下面添加即可
root@ubuntu2204-98:/usr/local/prometheus_monitor/prometheus# vi prometheus.yml
......
- job_name: 'cadvisor'
static_configs:
file_sd_configs:
- files:
- /etc/prometheus/cadvisor-docker_state/cadvisor.yaml
relabel_configs:
- source_labels: ['__meta_docker_container_name']
target_label: "container_name"
- source_labels: ['__meta_docker_container_id']
target_label: "container_id"
- job_name: 'docker-state-exporter'
static_configs:
file_sd_configs:
- files:
- /etc/prometheus/cadvisor-docker_state/docker-state-exporter.yaml
1.3 添加模板(ID 21154)
image-20250822122204593
2.Kafka监控接入
2.1 容器监控export安装启动
# 创建文件夹
root@ubuntu2204-98:~# mkdir /usr/local/prometheus_monitor/kafka_export
# 进入文件夹内创建docker-compose文件
root@ubuntu2204-98:~# cd /usr/local/prometheus_monitor/kafka_export
root@ubuntu2204-98:~# cat /usr/local/prometheus_monitor/kafka_export/docker-compose.yml
version: '3.1'
services:
kafka-exporter-opslogs:
image: bitnami/kafka-exporter:latest
command:
- '--kafka.server=192.168.1.98:30004'
- '--kafka.version=3.5.0'
restart: always
ports:
- 9310:9308
2.2 在Prometheus中添加监控项
# 这里我就不拆分了 直接放到prometheus.yml文件中了,想拆分的同学按上面的方式拆分就行
- job_name: 'Kafka'
metrics_path: /metrics
scrape_interval: 15s
scrape_timeout: 10s
static_configs:
- targets:
- 192.168.1.98:9310
labels:
name: kafka-prod
2.3 引入模板(ID 21078)
image-20250822123715170
3.Redis监控接入
3.1 容器监控export安装启动
# 这里注意需要创建一个密码连接文件
# 创建文件夹
root@ubuntu2204-98:~# mkdir /usr/local/prometheus_monitor/redis_epxort
# 创建docker-comopose和密码文件
root@ubuntu2204-98:/usr/local/prometheus_monitor/redis_epxort# cat docker-compose.yml
version: "3.2"
services:
redis-exporter:
image: oliver006/redis_exporter:latest
container_name: redis-exporter
restart: unless-stopped
command:
- "-redis.password-file=/redis_passwd.json"
volumes:
- /usr/share/zoneinfo/PRC:/etc/localtime
- /usr/local/prometheus_monitor/redis_epxort/redis_passwd.json:/redis_passwd.json
expose:
- 9121
network_mode: "host"
# 连接密码文件
root@ubuntu2204-98:/usr/local/prometheus_monitor/redis_epxort# cat redis_passwd.json
{
"redis://192.168.1.98:6379":"密码"
}
3.2 在Prometheus中添加监控项
root@ubuntu2204-98:/usr/local/prometheus_monitor/prometheus# vi prometheus.yml
.....
- job_name: 'redis_exporter_targets'
static_configs:
- targets:
- redis://192.168.1.98:6379
metrics_path: /scrape
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.1.98:9121
## config for scraping the exporter itself
- job_name: 'redis_exporter'
static_configs:
- targets:
- 192.168.1.98:9121
3.3 引入模板(ID 17507)
image-20250822125037031
4.Mysql监控接入
4.1 Mysql监控export安装启动
# 进入文件夹并创建docker-compose
root@ubuntu2204-98:/usr/local/prometheus_monitor/mysql_export# cat docker-compose.yml
version: "3.2"
services:
mysqld_exporter:
image: mysqld_exporter:latest
#image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/mysqld_exporter:latest
container_name: mysqld_exporter
hostname: mysqld_exporter
restart: unless-stopped
volumes:
- /usr/share/zoneinfo/PRC:/etc/localtime
environment:
MYSQLD_EXPORTER_PASSWORD: 123456 # mysql密码
entrypoint:
- /bin/mysqld_exporter
- --collect.info_schema.innodb_metrics
- --collect.info_schema.tables
- --collect.info_schema.processlist
- --collect.info_schema.tables.databases=*
- --mysqld.username=root #用户名,这里最好自己单独创建一个监控用户
expose:
- 9104
network_mode: "host"
# 创建监控用户的sql语句
CREATE USER '监控专用用户名'@'multi_mysqld_exporter主机的IP' IDENTIFIED BY '监控专用密码' WITH MAX_USER_CONNECTIONS 10;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO '监控专用用户名'@'multi_mysqld_exporter主机的IP';
4.2 在Prometheus中添加监控项
root@ubuntu2204-98:/usr/local/prometheus_monitor/prometheus# vi prometheus.yml
.....
- job_name: Mysqld
scrape_interval: 30s
metrics_path: /probe
static_configs:
- targets:
- 192.168.1.215:3306
- 192.168.1.215:3307
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.1.98:9104
4.3 引入模板(ID 17320)
image-20250822131350555
下一章,把告警搞一下就基本上把监控上需要的大概内容写完了。