组件介绍

组件部署规划

所有需要被监控的运行docker的主机都要安装cadvirso。prometheus和grafana根据生产的实际需要进行部署和调整。

组价安装与部署

cadvisor

在docker宿主机上启动cadvisor容器即可:

docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw \
  --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 \
  google/cadvisor:latest

这里需要注意的是,上面cadvisor容器的启动参数并不是针对CentOSLinux发行版的启动参数。按照cadvisor文档的指导,需要增加--privileged=true--volume=/cgroup:/cgroup:ro参数来启动,但加上这些参数后仍然报错。问题出在了--volume=/var/run:/var/run:ro这里,需要将ro只读改为rw,然后启动即可。关于其他Linux发行版的启动参数可参考文档https://github.com/google/cadvisor/blob/master/docs/running.md

prometheus

安装方法略过,可参考官网。这里说一下配置。可以采用两种组织配置文件的方式的一种:1.采用类似于nginx的include方式。当job较多的时候可采用这种方式,配置文件管理方便。2.将配置都写在同一个配置文件,即prometheus.yml。示例如下: 方法一:

vim /usr/local/prometheus/prometheus.yml 
  - job_name: cadvisor
    file_sd_configs:
    - files: ['/usr/local/prometheus/sd_config/docker-node.yml']
      refresh_interval: 3s

vim /usr/local/prometheus/sd_config/docker-node.yml
- targets:
  - 192.168.1.155:8080
  - 192.168.1.156:8080
  labels:
    type: docker

检查配置文件:

/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml

方法二:由于篇幅关系,这里只列出部分配置。一下是prometheus.yml的部分内容:

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
 
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
 
    static_configs:
    - targets: ['192.168.247.211:9090']
  - job_name: 'docker'
    static_configs:
    - targets:
      - "192.168.247.211:8090"
      - "192.168.247.212:8090"

加载配置文件

kill -HUP `ps -ef |grep prometheus|grep -v grep|awk '{print $2}'`

表达式相关

容器CPU使用率:
sum(irate(container_cpu_usage_seconds_total{image!=""}[1m])) without (cpu)

查询容器内存使用量(单位:字节):
container_memory_usage_bytes{image!=""}

查询容器网络接收量速率(单位:字节/秒):
sum(rate(container_network_receive_bytes_total{image!=""}[1m])) without (interface)

查询容器网络传输量速率(单位:字节/秒):
sum(rate(container_network_transmit_bytes_total{image!=""}[1m])) without (interface)

查询容器文件系统读取速率(单位:字节/秒):
sum(rate(container_fs_reads_bytes_total{image!=""}[1m])) without (device)

查询容器文件系统写入速率(单位:字节/秒):
sum(rate(container_fs_writes_bytes_total{image!=""}[1m])) without (device)

grafana

grafana的安装略过,可参考官网。这里说一下其配置。 可采用如下几个模板:

https://grafana.com/grafana/dashboards/893
https://grafana.com/grafana/dashboards/179
https://grafana.com/grafana/dashboards/193

其中893下载量较多,推荐使用。 导入模板: