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 常用监控指标

CAdvisor典型监控指标

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的数据

http://192.168.10.14:3000/
https://grafana.com/grafana/dashboards/11600-docker-container/

7.prometheus监控--监控docker的更多相关文章

  1. cAdvisor+Prometheus+Grafana监控docker

    cAdvisor+Prometheus+Grafana监控docker 一.cAdvisor(需要监控的主机都要安装) 官方地址:https://github.com/google/cadvisor ...

  2. 基于Docker+Prometheus+Grafana监控SpringBoot健康信息

    在微服务体系当中,监控是必不可少的.当系统环境超过指定的阀值以后,需要提醒指定的运维人员或开发人员进行有效的防范,从而降低系统宕机的风险.在CNCF云计算平台中,Prometheus+Grafana是 ...

  3. 【集群监控】Docker上部署Prometheus+Alertmanager+Grafana实现集群监控

    Docker部署 下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.re ...

  4. Prometheus+Grafana 监控 Docker

    cAdvisor (Container Advisor) :用于收集正在运行的容器资源使用和性能信息. https://github.com/google/cadvisor Prometheus(普罗 ...

  5. Docker搭建Prometheus+grafana监控系统

    一.Prometheus简介 1.简介 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB). Prometheus使用Go语言开发,是Google BorgM ...

  6. 远见而明察近观若明火|Centos7.6环境基于Prometheus和Grafana结合钉钉机器人打造全时监控(预警)Docker容器服务系统

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_181 我们知道,奉行长期主义的网络公司,势必应在软件开发流程管理体系上具备规范意识,即代码提交有CR(CodeReview),功能 ...

  7. Prometheus 系统监控方案 一

    最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错.而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下. Prometheus 是什 ...

  8. 从零开始搭建Prometheus自动监控报警系统

    从零搭建Prometheus监控报警系统 什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB).Prometheus使用Go语言开 ...

  9. 使用Prometheus+Grafana监控MySQL实践

    一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采 ...

  10. [转帖]Prometheus+Grafana监控Kubernetes

    原博客的位置: https://blog.csdn.net/shenhonglei1234/article/details/80503353 感谢原作者 这里记录一下自己试验过程中遇到的问题: . 自 ...

随机推荐

  1. 记录-一个栗子让你彻底弄懂CSS3补间动画和逐帧动画

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 CSS3提供了Animation关键帧动画,我们在工作中比较常用.但在写CSS动画的时候,其实Animation能实现两种动画模式: 补间 ...

  2. 记录--Vue 3 中的极致防抖/节流(含常见方式防抖/节流)

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 今天给大家带来的是Vue 3 中的极致防抖/节流(含常见方式防抖/节流)这篇文章,文章中不仅会讲述原来使用的防抖或节流方式,还会带来新的一 ...

  3. FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码

    ​学习FFmpeg的时候,经常要到GitHub下载各种开源代码,比如FFmpeg的源码页面位于https://github.com/FFmpeg/FFmpeg.然而国内访问GitHub很不稳定,经常打 ...

  4. 创建远程仓库&克隆项目(Github)

    创建远程仓库 在GitHub上注册一个账号,之后creat a new repository 创建的远程仓库把它看作一个百度网盘就可以了 克隆项目 1.远程仓库可以下载\克隆到本地 code :git ...

  5. flume采集nginx日志文件数据到Kafka

    flume官网地址http://flume.apache.org/ #下载 wget https://mirrors.bfsu.edu.cn/apache/flume/1.9.0/apache-flu ...

  6. C# 强大的网页处理类NSoup

    地址: https://github.com/GeReV/NSoup using System; using System.Collections.Generic; using System.Comp ...

  7. 自定义AXI总线IP之补全寄存器的输入输出配置

    自定义AXI总线IP之补全寄存器配置输入和输出 1.实验目的 在使用默认的AXI4的配置时,不会有寄存器的配置,无法配置端口的输入还是输出.根据前面的AXI总线的理解,这里通过仲裁器判断,将AXI4的 ...

  8. Impala 高性能、低延迟的大数据查询引擎

    Impala是什么? Impala提供对大数据更快速,交互式 SQL查询. Impala支持对存储在HDFS.HBase及S3等数据查询. Impala使用和Hive相同的元数据.SQL定义.ODBC ...

  9. 【WCH以太网接口系列芯片】CH9121\20的使用和测试

    本篇文章将介绍沁恒微电子的以太网转接芯片CH9121(CH9120和CH9121使用上没有区别,注意配置工具不一样,可以在沁恒微电子官网自行下载测试),该芯片支持网口和串口相互透传,可以通过串口AT指 ...

  10. 你真的了解java class name吗?

    在面向对象的世界,Class是java的基础.java.lang.Class实际上是继承自java.lang.Object. class有一个方法叫做getName,该方法会返回(class, int ...