文章目录
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地址,逐一访问数据信息是否可以正确获取到
- 数据源
监控组件 | 数据源 | 访问地址 |
---|---|---|
Linux | prom/node-exporter | http://101.200.127.67:9100/metrics |
Docker | google/cadvisor | http://101.200.127.67:8080/metrics |
MySQL | prom/mysqld-exporter | http://101.200.127.67:9104/metrics |
- 监控界面
组件 | 访问地址 |
---|---|
Prometheus | http://101.200.127.67:9090/targets |
Grafana | http://101.200.127.67:3000/ |
剩下的界面配置和文章开头的每个配置一样,这里就不复制粘贴了
上图说明
- 红色区域是使用Docker-Compose一键生成的容器
- 黄色区域是上一篇文章使用docker逐个生成的容器
- 蓝色区域是Prometheus操作界面和Grafana操作界面
Docker-Compose一键部署的配置编写完成!