7.prometheus监控--监控docker
4.监控docker
为了能够获取到Docker容器的运行状态,用户可以通过Docker的stats命令获取到当前主机上运行容器的统计信息,可以查看容器的CPU利用率、内存使用量、网络IO总量以及磁盘IO总量等信息。
docker stats # 除了使用命令以外,用户还可以通过Docker提供的HTTP API查看容器详细的监控统计信息
4.1 使用CAdvisor
CAdvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行CAdvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。
docker run -d \
--restart=always \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--name=cadvisor \
google/cadvisor:latest
4.1.1 Docker-compose安装
mkdir /data/cadvisor cd /data/cadvisor #通过cat新建docker-compose.yaml文件
cat > docker-compose.yaml <<"EOF"
version: '3.3'
services:
cadvisor:
image: google/cadvisor:latest
#image: lagoudocker/cadvisor:v0.37.0 #支持ubuntu22.04
container_name: cadvisor
restart: always
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- 8080:8080
EOF
启动:docker-compose up -d
查看访问:http://192.168.10.100:8080/containers/
访问http://192.168.10.100:8080/metrics即可获取到标准的Prometheus监控样本输出
4.2 Prometheus配置
配置prometheus去采集(拉取)cAdvisor的监控样本数据
cd /data/docker-prometheus #在scrape_configs(搜刮配置):下面增加如下配置: cat >> prometheus/prometheus.yml << "EOF"
- job_name: 'cadvisor'
static_configs:
- targets: ['192.168.10.100:8080']
labels:
instance: test服务器
EOF # 由于之前prometheus上已经安装添加了cadvisor,所以现在用添加的方式 - job_name: 'cadvisor'
scrape_interval: 15s
static_configs:
- targets: ['cadvisor:8080']
labels:
instance: Prometheus服务器
- targets: ['192.168.10.100:8080']
labels:
instance: test服务器
重新加载配置
curl -X POST http://localhost:9090/-/reload
检查:
http://192.168.10.14:9090/targets?search=#pool-cadvisor

4.3 常用监控指标
container_
|
指标名称 |
类型 |
含义 |
|
container_cpu_load_average_10s |
gauge |
过去10秒容器CPU的平均负载 |
|
container_cpu_usage_seconds_total |
counter |
容器在每个CPU内核上的累积占用时间 (单位:秒) |
|
container_cpu_system_seconds_total |
counter |
System CPU累积占用时间(单位:秒) |
|
container_cpu_user_seconds_total |
counter |
User CPU累积占用时间(单位:秒) |
|
container_fs_usage_bytes |
gauge |
容器中文件系统的使用量(单位:字节) |
|
container_fs_limit_bytes |
gauge |
容器可以使用的文件系统总量(单位:字节) |
|
container_fs_reads_bytes_total |
counter |
容器累积读取数据的总量(单位:字节) |
|
container_fs_writes_bytes_total |
counter |
容器累积写入数据的总量(单位:字节) |
|
container_memory_max_usage_bytes |
gauge |
容器的最大内存使用量(单位:字节) |
|
container_memory_usage_bytes |
gauge |
容器当前的内存使用量(单位:字节 |
|
container_spec_memory_limit_bytes |
gauge |
容器的内存使用量限制 |
|
machine_memory_bytes |
gauge |
当前主机的内存总量 |
|
container_network_receive_bytes_total |
counter |
容器网络累积接收数据总量(单位:字节) |
|
container_network_transmit_bytes_total |
counter |
容器网络累积传输数据总量(单位:字节) |
4.4 docker触发器告警规则配置

cat >> prometheus/rules/docker.yml <<"EOF"
groups:
- name: DockerContainers
rules:
- alert: ContainerKilled
expr: time() - container_last_seen > 60
for: 0m
labels:
severity: warning
annotations:
isummary: "Docker容器被杀死 容器:{{ $labels.instance }}"
description: "{{ $value }}个容器消失了"
# This rule can be very noisy in dynamic infra with legitimate container start/stop/deployment.
- alert: ContainerAbsent
expr: absent(container_last_seen)
for: 5m
labels:
severity: warning
annotations:
summary: "无容器 容器: {{ $labels.instance }}"
description: "5分钟检查容器不存在,值为:{{ $value }}"
- alert: ContainerCpuUsage
expr: (sum(rate(container_cpu_usage_seconds_total{name!=""}[3m])) BY (instance, name) * 100) > 300
for: 2m
labels:
severity: warning
annotations:
summary: "容器cpu使用率告警 容器: {{ $labels.instance }}"
description: "容器cpu使用率超过300%,当前值为:{{ $value }}"
- alert: ContainerMemoryUsage
expr: (sum(container_memory_working_set_bytes{name!=""}) BY (instance, name) / sum(container_spec_memory_limit_bytes > 0) BY (instance, name) * 100) > 80
for: 2m
labels:
severity: warning
annotations:
summary: "容器内存使用率告警 容器: {{ $labels.instance }}"
description: "容器内存使用率超过80%,当前值为:{{ $value }}"
- alert: ContainerVolumeIoUsage
expr: (sum(container_fs_io_current{name!=""}) BY (instance, name) * 100) > 80
for: 2m
labels:
severity: warning
annotations:
summary: "容器存储io使用率告警 容器: {{ $labels.instance }}"
description: "容器存储io使用率超过 80%,当前值为:{{ $value }}"
- alert: ContainerHighThrottleRate
expr: rate(container_cpu_cfs_throttled_seconds_total[3m]) > 1
for: 2m
labels:
severity: warning
annotations:
summary: "容器限制告警 容器:{{ $labels.instance }}"
description: "容器被限制,当前值为:{{ $value }}"
EOF
docker告警规则
重新加载配置并检查:
curl -X POST http://localhost:9090/-/reload
http://192.168.10.14:9090/rules
http://192.168.10.14:9090/alerts?search=
4.5 dashboard显示
grafana展示prometheus收集到的cadvisor的数据

7.prometheus监控--监控docker的更多相关文章
- cAdvisor+Prometheus+Grafana监控docker
cAdvisor+Prometheus+Grafana监控docker 一.cAdvisor(需要监控的主机都要安装) 官方地址:https://github.com/google/cadvisor ...
- 基于Docker+Prometheus+Grafana监控SpringBoot健康信息
在微服务体系当中,监控是必不可少的.当系统环境超过指定的阀值以后,需要提醒指定的运维人员或开发人员进行有效的防范,从而降低系统宕机的风险.在CNCF云计算平台中,Prometheus+Grafana是 ...
- 【集群监控】Docker上部署Prometheus+Alertmanager+Grafana实现集群监控
Docker部署 下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.re ...
- Prometheus+Grafana 监控 Docker
cAdvisor (Container Advisor) :用于收集正在运行的容器资源使用和性能信息. https://github.com/google/cadvisor Prometheus(普罗 ...
- Docker搭建Prometheus+grafana监控系统
一.Prometheus简介 1.简介 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB). Prometheus使用Go语言开发,是Google BorgM ...
- 远见而明察近观若明火|Centos7.6环境基于Prometheus和Grafana结合钉钉机器人打造全时监控(预警)Docker容器服务系统
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_181 我们知道,奉行长期主义的网络公司,势必应在软件开发流程管理体系上具备规范意识,即代码提交有CR(CodeReview),功能 ...
- Prometheus 系统监控方案 一
最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错.而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下. Prometheus 是什 ...
- 从零开始搭建Prometheus自动监控报警系统
从零搭建Prometheus监控报警系统 什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB).Prometheus使用Go语言开 ...
- 使用Prometheus+Grafana监控MySQL实践
一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采 ...
- [转帖]Prometheus+Grafana监控Kubernetes
原博客的位置: https://blog.csdn.net/shenhonglei1234/article/details/80503353 感谢原作者 这里记录一下自己试验过程中遇到的问题: . 自 ...
随机推荐
- Ubuntu安装OpenOffice
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/quantum7/article/det ...
- C++正则表达式 <regex>
一 简介 概括而言,使用正则表达式处理字符串的流程包括: 用正则表达式定义要匹配的字符串的规则, 然后对目标字符串进行匹配, 最后对匹配到的结果进行操作. C++ 的 regex 库提供了用于表示正则 ...
- 《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南 - 第9章
本章勘误: 暂无,等待细心的你告诉我哦. 本章注解: 暂无 本章释疑: 暂无,等待你的提问 致谢: MVP 林德熙 MVP 吕毅 sPhinX 相关链接 试读记录
- [Java]小功能
[版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/130858061 出自[进步* ...
- TCL基本语法2
TCL基本语法2 1.format和scan 两个基本的函数,和C语言中的sprintf和scanf的作用基本相同.format将不同类型的数据压缩在字符串中,scan将字符串中的数据提取出来. se ...
- KingbaseES 表中隐藏字段说明
在KingbaseES中,当我们创建一个数据表时,数据库会隐式增加几个系统字段.这些字段由系统进行维护,用户一般不会感知它们的存在. 例如,以下语句创建了一个简单的表: create table te ...
- KingbaseES V8R6 等待事件之DataFileRead
等待事件含义 IO:DataFileRead等待事件发生在会话连接等待后端进程从存储中读取所需页面,原因是该页面在共享内存中不可用或无法找到. 所有查询和数据操作(DML)操作都访问缓冲池中的页面,语 ...
- KingbaseES V8R3 集群运维系列 -- 修改数据库服务端口
案例说明: KingbaseES V8R3集群数据库服务端口(默认:54321)的配置在数据库及集群多个配置文件中都存在,修改端口需要更改所有的配置文件,本案例详细描述了数据库服务端口修改操作步骤 ...
- 新零售SaaS架构:客户管理系统架构设计(万字图文总结)
什么是客户管理系统? 客户管理系统,也称为CRM(Customer Relationship Management),主要目标是建立.发展和维护好客户关系. CRM系统围绕客户全生命周期的管理,吸引和 ...
- OpenHarmony 官网文档有哪些上新?下篇:设备开发文档上新
为了方便社区开发者更易获取 OpenAtom OpenHarmony(以下简称"OpenHarmony")相关文档,暨上篇应用开发文档上新内容,SIG Docs 小组同步准备了设 ...