cAdvisor+Prometheus+Grafana 监控容器服务
简单介绍
cAdvisor:用于收集正在运行的容器资源使用和性能信息,每个 Docker
宿主机都需要部署。
Prometheus:容器监控系统,收集与存储。
Grafana:开源可视化系统。
机器划分
主机名 | IP | 作用 |
---|---|---|
K8-200 |
10.10.1.200 |
cAdvisor |
K8-210 |
10.10.1.210 |
Prometheus、Grafana、cAdvisor |
机器初始化
# 以下操作所有机器都需要
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && systemctl stop firewalld && systemctl disable firewalld && init 6
开始部署
K8-200
部署 cAdvisor
# 安装 Docker
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo && yum install -y docker-ce.x86_64 && systemctl start docker && systemctl enable docker
# 启动 cAdvisor
docker run -itd --restart=always --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor.200 google/cadvisor:latest
K8-210
设置 Prometheus
配置文件
# 创建 Prometheus 配置文件
mkdir -p /data/prometheus && vim /data/prometheus/prometheus.yml
global:
# 采集周期及告警周期
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
# job_name 指定组名,用来在 Grafana 上更直观查看信息
# targets 可理解为被监控端的具体信息,例如 Web 服务器主机的放到 Web 分组之类
- job_name: Prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: Prometheus
# 新建一个 Docker 分组
- job_name: Docker
# 自定义该分组的时间周期信息
scrape_interval: 10s
scrape_timeout: 5s
static_configs:
# 把部署了 cAdvisor 的主机信息填写进去
- targets:
- 10.10.1.200:8080
- 10.10.1.210:8080
# 创建 Prometheus 数据目录
mkdir /data/prometheus/data
# 赋权,新版本 Prometheus 使用 nobody 为 user,需先确认该用户的 UID
docker run --rm quay.io/prometheus/busybox cat /etc/passwd
nobody:x:65534:65534:nobody:/home:/bin/false
chown -R 65534:65534 /data/prometheus/
K8-210
部署 Prometheus
# 安装 Docker
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo && yum install -y docker-ce.x86_64 && systemctl start docker && systemctl enable docker
# 启动 cAdvisor
docker run -itd --restart=always --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor.210 google/cadvisor:latest
# 启动 Prometheus
docker run -itd -p 9090:9090 --restart=always --mount type=bind,source=/data/prometheus/prometheus.yml,target=/etc/prometheus/prometheus.yml --mount type=bind,source=/data/prometheus/data,target=/prometheus --name prometheus prom/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus --storage.tsdb.retention=15d --query.max-concurrency=50 --web.enable-lifecycle
# 参数解释
--config.file,指定配置文件
--storage.tsdb.path,指定数据存储目录
--storage.tsdb.retention,指定数据过期时间,默认 15 天
--query.max-concurrency,最大支持的并发查询量
--web.enable-lifecycle,启用热加载
浏览器访问 Prometheus
页面检查是否正常
K8-210
部署 Grafana
# 将当前用户 ID 保存到 ID 变量中,创建 Grafana 数据目录
ID=$(id -u)
mkdir -p /data/grafana
# 启动 Grafana
docker run -itd --user $ID -p 3000:3000 --name grafana --restart=always --mount type=bind,source=/data/grafana,target=/etc/grafana/provisioning grafana/grafana
配置 Grafana
登录 Grafana
页面 http://10.10.1.210:3000/login
默认账号密码为 admin
添加数据源
自定义目标参数
在 Prometheus
上测试语句是否正确
测试效果图
使用模板展示
模板地址如下:
https://grafana.com/grafana/dashboards/
导入模板(此处使用 193
模板)
效果图
基于模板 193
添加多台 Docker
主机
最终效果图
本文链接:
/archives/Docker_monitor
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Linux 小白鼠!
觉得文章不错,打赏一点吧,1分也是爱~
打赏
微信
支付宝