监控docker
## 一、概述
### 1.1 监控docker的意义
基于程序运行的性能、便性、隔离性等优点,docker程序事实上已经成为了企业云原生部罢的标准选择。那么docker环境是否稳定,docker上运行的各类容器程序cpu使用率、内存使用、网络、磁盘空间等性能参数,就非常有必要
### 1.2 docker stat命令
最简单的docker容器性能监控命令是
docker stats
![](https://img.kancloud.cn/d7/54/d754d10b69d7400b4cd49e1592c07f86_835x266.png)
### 1.3 基于cAdvisor组件的docker容器监控
之前centos1部罢时,已经安装了prometheus、node_exporter以及cAdvisor的组件。yaml的回顾
![](https://img.kancloud.cn/4b/3c/4b3c35a4bb19a9aff4b0ffde5b4fbf51_775x530.png)
<hr>
## 二、cAdvisor组件介绍
### 2.1 docker安装(略)
### 2.2 docker-compose安装(略)
### 2.3 安装rabbitmq
创建rabbitmq目录
mkdir /data/vadisor -p
cd /data/vadisor
创建docker-compose.yaml
vim docker-compose.yaml
配置如下:
services:
cadvisor:
image: registry.cn-hangzhou.aliyuncs.com/ldw520/cadvisor:latest
container_name: cadvisor
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- '8079:8080'
启动 docker-compose.yaml
docker-compose up -d
查看docker的信息
docker images
docker ps -a
宿主机上访问cadvisor的metrics
http://192.168.100.141:8079/metrics
<hr>
## 2.6 prometheus服务器添加cadvisor的地址
192.168.100.85的centos上,修改prometheus的配置文件
#进入docker-prometheus目录
cd /data/docker-prometheus
#修改prometheus.yml
vi prometheus/prometheus.yml
添加cadvisor配置如下图:
![](https://img.kancloud.cn/df/76/df760c63979fcfbf8df046969d73b197_759x352.png)
- targets: ["192.168.100.141:8079"]
labels:
instance: "Centos2服务器的cadvisor-server" # 修改为更具体的实例名称
保存后输入命令更新:
curl -XPOST http://localhost:9090/-/reload
成功监听
![](https://img.kancloud.cn/6d/9c/6d9cd53568fb1e9c3314879e721a9d06_1804x255.png)
<hr/>
## 三、常用的docker监控指标
| 指标名称 | 类型 | 含义
| 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 | gauge | 容器网络累计接收数据总量(单位:字节)
| container_network_transmit_bytes_total | counter | 容器网络累计传输数据总量(单位:字节)
### 3.1grafana中对cadvisor进行监控
copy id to clipboard->grafana的dashboards中lmport dashboard
https://grafana.com/grafana/dashboards/11600-docker-container/
![](https://img.kancloud.cn/f1/7c/f17c2f8b0aa4c9d46d1cd85fe0a5e31b_1642x892.png)
![](https://img.kancloud.cn/48/31/4831b44c3ed0916bb02dbac217d1f0cb_1654x891.png)
- Prometheus教程
- 一. dokcer 安装
- 二. 安装docker-compose
- 三. docker-compose安装Prometheus
- 四. 配置grafana的数据源
- 五. Prometheus的Exporter
- 六. Prometheus的基本术语
- 七. 监控Linux
- 八. 监控redis和mongodb
- 九. 监控mysql数据库
- 十. 监控go程序
- 十一. 监控nginx
- 十二. 监控消息队列
- 十三. 监控docker
- 十四. 监控进程
- 十五. 域名监控
- 十六. SNMP监控
- 十七. 黑盒监控
- 十八. 自定义监控
- 十九. go实现自定义监控
- 二十. 服务发现概述
- 二十一. 基于文件的服务发现
- 二十二. 基于Consul的服务发现
- 二十三. relabeling机制