【Docker学习】13、使用 Docker/Docker-Compose 部署 Prometheus 监控组件

1、Prometheus 监控组件

从上面的构建可以发现,现在已经可以监控当前Linux主机了,实际上能监控的内容很多,可以在官网查看,监控内容或社区查找

搭建各种组件的监控,首先需要找到提供数据的数据源,当然,Prometheus已经给我们写好了配置,我们只需要在找到对应的配置进行安装即可,Prometheus GitHub,例如

(1)Prometheus 监控 Linux

拉去 node-exporter 镜像

docker pull prom/node-exporter

启动node-exporter

docker run -d -p 9100:9100 --name=node-exporter \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
--net="host" prom/node-exporter

访问测试

http://服务器IP:9100/metrics

修改 Prometheus 配置文件 prometheus.yml

scrape_configs:
  # Linux 监控配置
  - job_name: linux
    static_configs:
      - targets: ['101.200.127.67:9100']
        labels:
          instance: 101.200.127.67

然后Docker重启 Prometheus

docker restart prometheus容器id

在 Prometheus 监控面板添加模板,推荐模板:9276,添加时别忘了设置Prometheus数据源

在这里插入图片描述

(2)Prometheus 监控 Docker

监控docker使用的是cadvisor收集数据

docker pull google/cadvisor

启动cadvisor

docker run -p 8080:8080 -d \
-v /:/rootfs:ro \
-v /var/run:/var/run:rw \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-v /dev/disk/:/dev/disk:ro \
--name=cadvisor google/cadvisor

浏览器访问测试,一样的会返回统计信息

http://IP:8080/containers/

修改 Prometheus 配置文件 prometheus.yml

scrape_configs:
  # Docker 监控配置
  - job_name: 'docker'
    static_configs:                                                                                                                     
      - targets: ['101.200.127.67:8080']
        labels:
          instance: 101.200.127.67

然后Docker重启 Prometheus

docker restart prometheus容器id

在 Prometheus 监控面板添加模板,推荐模板:193,添加时别忘了设置Prometheus数据源

在这里插入图片描述

(3)Prometheus 监控 MySQL

mysqld exporter的功能是收集mysql服务器的数据,并向外提供api接口,用于prometheus主要获取数据

docker network create my-mysql-network

docker pull prom/mysqld-exporter

在被监控端mysql服务器上创建账号用于mysql exporter收集使用

GRANT REPLICATION CLIENT, PROCESS ON  *.*  to 'exporter'@'%' identified by '123456';

GRANT SELECT ON performance_schema.* TO 'exporter'@'%';

flush privileges;

安装 mysqld exporter,exporter是上面创建的用户,123456是密码,101.200.127.67是服务器地址

docker run -d -p 9104:9104 \
-e DATA_SOURCE_NAME="exporter:123456@(101.200.127.67:3306)/" \
--name mysqld-exporter prom/mysqld-exporter

浏览器访问测试,一样的会返回统计信息

http://IP:9104/metrics

要查看容器是否报错, 主要是验证exporter与mysql服务端之间正常连接和获取数据

# 看有没有报错
docker logs -f mysqld-exporter

修改 Prometheus 配置文件 prometheus.yml

scrape_configs:
  # MySQL 监控配置
  - job_name: mysql
    # 抓取间隔
    scrape_interval: 5s
    static_configs:
      - targets: ['101.200.127.67:9104']
        labels:
          instance: 101.200.127.67

然后Docker重启 Prometheus

docker restart prometheus容器id

在 Prometheus 监控面板添加模板,推荐模板:7362,添加时别忘了设置Prometheus数据源

在这里插入图片描述

2、Docker-Compose 一键部署监控系统

(1)准备工作

前面说了那么多搭建步骤,都是通过Docker一条条命令构建的,现在我们使用Docker-Compose来一键部署监控系统,前提条件是我们已经使用 Docker 搭建 Prometheus、Grafana 环境,完成了,然后有Prometheus的配置文件 prometheus.yml,下面明确安装内容以及构建内容

(2)编写 Docker-Compose 配置文件

文件名为 docker-compose-prometheus.yml,由于之前我已经安装过了,这里的所有生成的容器‘’名称都是 dc- 开头

version: "3.8" # 版本对比查找官网:https://docs.docker.com/compose/compose-file/
services:
  # Linux 监控配置
  dc-node-exporter:
    container_name: dc-node-exporter
    image: prom/node-exporter
    volumes:
      - /proc:/host/proc:ro
	  - /sys:/host/sys:ro
	  - /:/rootfs:ro
    ports:
      - "9100:9100"
  # Docker 监控配置
  dc-cadvisor:
    container_name: dc-cadvisor 
    image: google/cadvisor
    volumes:
      - /:/rootfs:ro
	  - /var/run:/var/run:rw
	  - /sys:/sys:ro
	  - /var/lib/docker/:/var/lib/docker:ro
	  - /dev/disk/:/dev/disk:ro
    ports:
      - "8080:8080"
  # MySQL 监控配置
  dc-mysqld-exporter:
    container_name: dc-mysqld-exporter
    image: prom/mysqld-exporter
    environment:
      DATA_SOURCE_NAME: "exporter:123456@(101.200.127.67:3306)/"
    ports:
      - "9104:9104"

因为我上面已经使用docker搭建过一次了,所以这里我关闭了所有的容器
docker stop $(docker ps -aq)
保留MySQL,因为我们还要监控MySQL,保留Prometheus,保留Grafana

Docker-Compose 操作命令

作用命令
启动容器docker-compose -f docker-compose-prometheus.yml up -d
查看容器docker-compose -f docker-compose-prometheus.yml ps
关闭容器docker-compose -f docker-compose-prometheus.yml stop
删除容器docker-compose -f docker-compose-prometheus.yml rm

(3)统一修改 Prometheus 配置

修改 Prometheus 配置文件 prometheus.yml

global:
  scrape_interval:     60s
  evaluation_interval: 60s
 
scrape_configs:
  # Docker 监控配置
  - job_name: 'docker'
    static_configs:                                                                                                                     
      - targets: ['101.200.127.67:8080']
        labels:
          instance: 101.200.127.67
  # Prometheus 监控配置
  - job_name: prometheus
    static_configs:
      - targets: ['101.200.127.67:9090']
        labels:
          instance: 101.200.127.67
  # Linux 监控配置
  - job_name: linux
    static_configs:
      - targets: ['101.200.127.67:9100']
        labels:
          instance: 101.200.127.67
  # MySQL 监控配置
  - job_name: mysql
    # 抓取间隔
    scrape_interval: 5s
    static_configs:
      - targets: ['101.200.127.67:9104']
        labels:
          instance: 101.200.127.67

然后重启 prometheus,根据第一步写的准备工作的IP地址,逐一访问数据信息是否可以正确获取到

  • 数据源
监控组件数据源访问地址
Linuxprom/node-exporterhttp://101.200.127.67:9100/metrics
Dockergoogle/cadvisorhttp://101.200.127.67:8080/metrics
MySQLprom/mysqld-exporterhttp://101.200.127.67:9104/metrics
  • 监控界面
组件访问地址
Prometheushttp://101.200.127.67:9090/targets
Grafanahttp://101.200.127.67:3000/

剩下的界面配置和文章开头的每个配置一样,这里就不复制粘贴了

在这里插入图片描述

上图说明

  • 红色区域是使用Docker-Compose一键生成的容器
  • 黄色区域是上一篇文章使用docker逐个生成的容器
  • 蓝色区域是Prometheus操作界面和Grafana操作界面

Docker-Compose一键部署的配置编写完成!

微信公众号

### 使用 Docker Compose 部署 Prometheus 实现多服务器监控 为了实现通过 Docker Compose 部署 Prometheus监控多个服务器,可以按照如下方法设置: #### 创建必要的文件结构 首先,在本地机器上创建用于存储配置和服务定义的目录结构。这一步骤确保所有必需的服务和持久化数据有合适的路径。 ```bash mkdir -p /docker/prometheus/{data,config} ``` 此命令会建立 `/docker/prometheus` 下的数据与配置子目录[^2]。 #### 编写 `docker-compose.yml` 接着编写 `docker-compose.yml` 文件来描述服务组合。下面是一个适用于多节点监控的基础模板: ```yaml version: '3' services: prometheus: image: prom/prometheus:v2.38.0 container_name: prometheus restart: unless-stopped ports: - "9090:9090" volumes: - ./prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml - ./prometheus/data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' node-exporter-server1: image: prom/node-exporter:v1.5.0 container_name: node-exporter-server1 restart: unless-stopped ports: - "9101:9100" node-exporter-server2: image: prom/node-exporter:v1.5.0 container_name: node-exporter-server2 restart: unless-stopped ports: - "9102:9100" ``` 上述 YAML 片段展示了如何为两个远程服务器分别运行 Node Exporter 实例,并暴露不同端口以便 Prometheus 抓取指标数据[^4]。 #### 修改 `prometheus.yml` 配置文件 编辑位于 `./prometheus/config/` 路径下的 `prometheus.yml` 文件,加入目标服务器的信息。这里假设已经知道了各台被监控设备的具体 IP 地址或域名以及对应的抓取端口号。 ```yaml scrape_configs: - job_name: 'server1' static_configs: - targets: ['<Server1_IP>:9101'] - job_name: 'server2' static_configs: - targets: ['<Server2_IP>:9102'] ``` 请注意替换 `<ServerX_IP>` 占位符为实际的目标服务器地址[^5]。 完成以上步骤之后,可以通过执行 `docker-compose up -d` 命令启动全部容器并开始收集来自各个节点的性能统计数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tellsea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值