Prometheus运维(接入容器,Kafka,Redis,Mysql监控)

68 阅读4分钟

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.yamltargets:
  - 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

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

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__
        replacement192.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

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_PASSWORD123456 # 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 PROCESSREPLICATION CLIENTSELECT ON *.* TO '监控专用用户名'@'multi_mysqld_exporter主机的IP';

4.2 在Prometheus中添加监控项

root@ubuntu2204-98:/usr/local/prometheus_monitor/prometheus# vi prometheus.yml 
.....
  - job_name: Mysqld
    scrape_interval30s
    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__
        replacement192.168.1.98:9104

4.3 引入模板(ID 17320)

image-20250822131350555

image-20250822131350555

下一章,把告警搞一下就基本上把监控上需要的大概内容写完了。