快捷搜索:  汽车  科技

如何用docker监控(Docker容器监控cAdvisorInfluxDB)

如何用docker监控(Docker容器监控cAdvisorInfluxDB)cAdvisor 功能主要有两点:cAdivisor 默认存储2分钟的数据,而且只是针对单物理机。不过,cAdivisor提供了很多数据集成接口,支持InfluxDB、Redis、Kafka、Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。如何解决,那就要用到接下来所要讲的方案:cAdvisor InfluxDB Grafana容器监控三剑客:cAdvisor监控收集 InfluxDB存储数据 Grafana展示图表cAdvisor 是一个容器资源监控工具,包括容器的内存、CPU、网络IO、磁盘IO等监控,同时提供了一个Web页面用于查看容器的实时运行状态。

简介

容器监控三剑客:cAdvisor监控收集 InfluxDB存储数据 Grafana展示图表

我们在主机上部署了很多个容器,要想监控它们该怎么办,通常我们使用原生命令 docker ps 或 docker stats 就可以查看到容器的状态。

如下:

[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2a10d91cae48 portainer/portainer-ce:2.11.1 "/portainer" 17 minutes ago Up 17 minutes 0.0.0.0:8000->8000/tcp :::8000->8000/tcp 0.0.0.0:9443->9443/tcp :::9443->9443/tcp 9000/tcp portainer 554e72db6ef0 billygoo/tomcat8-jdk8 "catalina.sh run" 29 hours ago Up 59 seconds 0.0.0.0:8082->8080/tcp :::8082->8080/tcp tomcat82 9e7e05d78b86 billygoo/tomcat8-jdk8 "catalina.sh run" 29 hours ago Up 57 seconds 0.0.0.0:8081->8080/tcp :::8081->8080/tcp tomcat81

[root@localhost ~]# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 2a10d91cae48 portainer 0.00% 17.2MiB / 1.777GiB 0.95% 2.52MB / 6.98MB 0B / 2.02MB 5 554e72db6ef0 tomcat82 0.17% 92.44MiB / 1.777GiB 5.08% 1.1kB / 0B 165MB / 0B 42 9e7e05d78b86 tomcat81 0.15% 88.45MiB / 1.777GiB 4.86% 836B / 0B 11.6MB / 0B 42

通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU 内存以及网络流量等数据,一般小公司够用了。。。。但是,docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能。

如何解决,那就要用到接下来所要讲的方案:cAdvisor InfluxDB Grafana

是什么

容器监控三剑客:cAdvisor监控收集 InfluxDB存储数据 Grafana展示图表

如何用docker监控(Docker容器监控cAdvisorInfluxDB)(1)

cAdvisor

cAdvisor 是一个容器资源监控工具,包括容器的内存、CPU、网络IO、磁盘IO等监控,同时提供了一个Web页面用于查看容器的实时运行状态。

cAdivisor 默认存储2分钟的数据,而且只是针对单物理机。不过,cAdivisor提供了很多数据集成接口,支持InfluxDB、Redis、Kafka、Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。

cAdvisor 功能主要有两点:

  • 展示Host和容器两个层次的监控数据。
  • 展示历史变化数据。
InfluxDB

InfluxDB 使用Go语言编写的一个开源分布式时许、时间和指标数据库,无需外部依赖。

cAdvisor 默认旨在本机保存最近2分钟的数据,为了持久化存储数据和统一收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是一个时许数据库,专门用于存储时许相关数据,很适合存储CADvisor的数据,而且,CAdvisor本身已经提供了InfluxDB的集成方法,启动容器时指定配置即可。

InfluxDB主要功能:

  • 基于时间序列,支持与时间有关的相关函数(如最大、最小、求和等);
  • 可度量性:你可以实时对大量数据进行计算;
  • 基于事件:它支持任意的事件数据。
Grafana

Grafana 是一个开源的数据监控分析可视化平台,支持多种数据源配置(支持的数据源包括InfluxDB、Mysql、Elasticsearch、OpenTSDB、Graphite等)和丰富的插件及模块功能,支持图表权限控制和报警。

Grafana主要特性:

  • 灵活丰富的图形化选项;
  • 可以混合多种风格;
  • 支持白天和夜间模式;
  • 多个数据源。
环境搭建方式一:分别安装

通常在进行监控的时候是需要一台单独机器作为监控主机的,这里我们创建一台新的监控主机(192.168.92.148),在监控主机上部署InfluxDB Grafana,然后在被监控主机(192.168.92.149)上部署cAdvisor

部署InfluxDB(监控主机)

这里预先定义了创建一个初始数据库:

INFLUXDB_DB=cadvisor # 初始数据库名称
INFLUXDB_USER=root # 初始数据库用户名
INFLUXDB_USER_PASSWORD=root123456 # 初始数据库密码

docker run -d -p 8086:8086 --restart=always --name influxdb \ -e INFLUXDB_DB=cadvisor \ -e INFLUXDB_USER=root \ -e INFLUXDB_USER_PASSWORD=root123456 \ -v influxdb_data:/var/lib/influxdb \ influxdb:1.8部署Grafana(监控主机)

docker run -d -p 3000:3000 --restart=always --name grafana \ -v grafana_data:/var/lib/grafana \ grafana/grafana部署cAdvisor(被监控主机)

这里注意填入在部署influxdb时设置的数据库、用户名、密码

-storage_driver_db=cadvisor # influxdb的数据库名称
-storage_driver_host=192.168.92.148:8086 # influxdb的主机地址
-storage_driver_user=root # influxdb的用户名
-storage_driver_password=root123456 # influxdb的密码

docker run -d -p 8080:8080 --restart=always --name cadvisor \ -v /:/rootfs:ro \ -v /var/run:/var/run:rw \ -v /sys:/sys:ro \ -v /var/lib/docker/:/var/lib/docker:ro \ google/cadvisor \ -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=192.168.92.148:8086 -storage_driver_user=root -storage_driver_password=root123456方式二:Compose容器编排一套带走

如果你想将cAdvisor InfluxDB Grafana以及其他的容器都安装到同一台主机上,那使用这个compose一套带走方案就可以了。

新建目录

mkdir -p /data/cig新建3件套组合的 docker-compose.yml 文件

cd /data/cig/

vim docker-compose.yml

文件内容如下:

version: '3.1' services: influxdb: image: influxdb:1.8 restart: always environment: - INFLUXDB_DB=cadvisor - INFLUXDB_USER=root - INFLUXDB_USER_PASSWORD=root123456 ports: - "8086:8086" volumes: - influxdb_data:/var/lib/influxdb cadvisor: image: google/cadvisor depends_on: - influxdb command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086 -storage_driver_user=root -storage_driver_password=root123456 restart: always ports: - "8080:8080" volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro grafana: user: "104" image: grafana/grafana restart: always depends_on: - influxdb ports: - "3000:3000" volumes: - grafana_data:/var/lib/grafana volumes: influxdb_data: {} grafana_data: {}

检查语法:

没有输出则正常。

docker-compose config -q

启动:

docker-compose up -d

查看是否都启动:

[root@localhost cig]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06dffc78e480 grafana/grafana "/run.sh" 3 seconds ago Up 2 seconds 0.0.0.0:3000->3000/tcp :::3000->3000/tcp cig_grafana_1 bdee27fbd3c8 google/cadvisor "/usr/bin/cadvisor -…" 3 seconds ago Up 2 seconds 0.0.0.0:8080->8080/tcp :::8080->8080/tcp cig_cadvisor_1 a328796c8d2a tutum/influxdb:0.9 "/run.sh" 4 seconds ago Up 3 seconds 0.0.0.0:8083->8083/tcp :::8083->8083/tcp 0.0.0.0:8086->8086/tcp :::8086->8086/tcp cig_influxdb_1访问测试

1. 浏览CAdvisor收集服务:http://被监控主机的IP:8080/

2. 浏览Grafana展现服务:http://部署Grafana的主机IP:3000/

配置Grafana添加数据源:

如果是使用 docker-compose 部署的,这里URL直接写 http://influxdb:8086 即可;

如果是单独安装的,这里URL要写 http://influxdb的主机IP:8086

如何用docker监控(Docker容器监控cAdvisorInfluxDB)(2)

滚动到下面,填写部署influxdb时初始化的数据库cadvisor、用户名root、密码root123456,点击Save &Test.

如何用docker监控(Docker容器监控cAdvisorInfluxDB)(3)

添加 dashboard:

如何用docker监控(Docker容器监控cAdvisorInfluxDB)(4)

如何用docker监控(Docker容器监控cAdvisorInfluxDB)(5)

点击右上角 Save 保存。

还可以点击右上角添加新的图表,监控其他项目,如:CPU、网络、磁盘等,需要具体去看看查询语法获取正确的值制作图表。

如何用docker监控(Docker容器监控cAdvisorInfluxDB)(6)

猜您喜欢: