【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一键部署的配置编写完成!

微信公众号

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一个快速部署 Prometheus 监控 docker 容器、宿主机和 Ceph 集群的 docker-compose.yaml 文件: ```yaml version: '3' services: prometheus: image: prom/prometheus ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' depends_on: - node-exporter - cadvisor - ceph-exporter node-exporter: image: prom/node-exporter volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' cadvisor: image: google/cadvisor ports: - 8080:8080 volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro ceph-exporter: image: galexrt/ceph-exporter:latest environment: CLUSTER_NAME: mycluster CEPH_USERNAME: admin CEPH_KEYRING_BASE64: <base64-encoded ceph.client.admin.keyring> ports: - 9128:9128 ``` 其中,Prometheus 监控的配置文件 prometheus.yml 可以参考下面的示例: ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'docker' metrics_path: '/metrics' static_configs: - targets: ['node-exporter:9100'] labels: group: 'docker' - job_name: 'node' metrics_path: '/metrics' static_configs: - targets: ['node-exporter:9100'] labels: group: 'node' - job_name: 'cadvisor' metrics_path: '/metrics' static_configs: - targets: ['cadvisor:8080'] labels: group: 'docker' - job_name: 'ceph' metrics_path: '/metrics' static_configs: - targets: ['ceph-exporter:9128'] labels: group: 'ceph' ``` 在这个配置文件中,我们定义了四个 job: - prometheus监控 Prometheus 本身的指标。 - docker监控 Docker 容器运行时的指标。 - node:监控宿主机的指标。 - ceph:监控 Ceph 集群的指标。 对于 docker 和 node,它们都使用了 node-exporter 来收集指标。而对于 ceph,我们使用了 ceph-exporter 来收集指标。 在部署前,需要将 ceph.client.admin.keyring 文件的内容进行 base64 编码,并将编码后的内容填入 docker-compose.yaml 文件中的 CEHP_KEYRING_BASE64 环境变量中。 部署完成后,可以通过访问 http://localhost:9090 来访问 Prometheus 的 Web 界面。在这里,你可以查看所有收集到的指标,并且可以创建自己的监控规则和仪表盘。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tellsea

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

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

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

打赏作者

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

抵扣说明:

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

余额充值