docker:十分钟构建容器监控系统cAdvisor+InfluxDB+Grafana

1.概念

cAdvisor:用于数据采集
InfluxDB:用于数据存储
Grafana:用于数据展示

1.1 cAdvisor

它是Google用来监测单节点的资源信息的监控工具。Cadvisor提供了一目了然的单节点多容器的资源监控功能。Google的Kubernetes中也缺省地将其作为单节点的资源监控工具,各个节点缺省会被安装上Cadvisor。总结起来主要两点:

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

?由于 cAdvisor 提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 host,这不免会让人质疑它的实用性。但 cAdvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。

?我们可以把 cAdvisor 定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。

1.2 InfluxDB

InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。类似的数据库有Elasticsearch、Graphite等。

InfluxDB主要特色功能

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

InfluxDB主要特点

  • 无结构(无模式):可以是任意数量的列;
  • 可拓展的;
  • 支持min, max, sum, count, mean, median 等一系列函数,方便统计;
  • 原生的HTTP支持,内置HTTP API;
  • 强大的类SQL语法;
  • 自带管理界面,方便使用;

1.3 Grafana

Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源。

2.部署过程

  • 创建自定义网络monitor(自定义网络名称),用于后期容器加入此网络中,当然你也可以忽略此步;
  • 创建Influxdb容器,创建数据用户、数据库;
  • 创建cAdvisor容器;
  • 创建Grafana容器,配置grafana;

3.开始部署

3.1 创建自定义网络

[[email protected] ~]# docker network create monitor
cc193568263604e3bc3e7a5d78f18d07af99810e1d5c19bac99fccfa045f48f5

查看创建的网络:

3.2 创建influxdb容器

  • 启动容器:

    [[email protected] ~]# docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb
  • 查看是否启动:
    [[email protected] ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES
    30b9789e680d        tutum/influxdb      "/run.sh"           22 seconds ago      Up 21 seconds       0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp   influxdb
  • 访问influxdb控制台,ip+8083端口访问:
  • 创建cadvisor数据库、用户:

    CREATE USER "root" WITH PASSWORD ‘123456‘ WITH ALL PRIVILEGES

CREATE DATABASE "cadvisor"

3.3 创建cadvisor容器

  • 运行cadvisor容器:

    $docker run -d --name=cadvisor --net monitor -p 8080:8080 --mount type=bind,src=/,dst=/rootfs,ro --mount type=bind,src=/var/run,dst=/var/run --mount type=bind,src=/sys,dst=/sys,ro --mount type=bind,src=/var/lib/docker/,dst=/var/lib/docker,ro google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
  • 查看cadvisor容器:
    [[email protected] ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    90871ba5be7e        google/cadvisor     "/usr/bin/cadvisor -…"   51 seconds ago      Up 50 seconds       0.0.0.0:8080->8080/tcp   cadvisor
  • 通过ip+8080端口访问测试一下:

    从上图可以看到,其实cadvisor也有基础的图形展示功能,我们这里主要用它来做数据采集。

3.4 创建granafa容器

  • 运行granafa容器:

    [[email protected] ~]# docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
  • 查看运行结果:
    [[email protected] ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
    a90e03e2017a        grafana/grafana     "/run.sh"           17 seconds ago      Up 16 seconds       0.0.0.0:3000->3000/tcp   grafana
  • 访问granfa,通过ip+3000端口的方式访问,默认账户密码(admin/admin):
  • 添加数据源Add data source,如下图:

  • 新建New dashboard,如下图:

  • 新建了一个监控项之后,回来HOME,可以发现刚才创建的项目:

到这里cAdvisor+InfluxDB+Grafana容器监控系统就部署完成了,至于其它grafana的监控项配置不是本文的重点,大家如果感兴趣可以参考一些官方资料或者百度一些资料参阅,都是图形化的界面操作,多点、多玩、多测两个就搞明白了。

原文地址:http://blog.51cto.com/ganbing/2083389

时间: 2024-08-14 01:05:21

docker:十分钟构建容器监控系统cAdvisor+InfluxDB+Grafana的相关文章

快速构建容器监控系统

环境:Ubuntu16.04+Docker 参考链接: http://blog.51cto.com/ganbing/2083389 不过也做了修改发现有些地方有坑 全局主要围绕这三个方面: ?    CAdvisor:用于数据采集 ??InfluxDB:用于数据存储 ??Grafana:用于数据展示 一. cAdvisor介绍和安装 它是Google用来监测单节点的资源信息的监控工具.Cadvisor提供了一目了然的单节点多容器的资源监控功能.Google的Kubernetes中也缺省地将其作为

Docker容器监控系统初探

https://www.jianshu.com/p/abfa502e43a6 随着线上服务的全面docker化,对docker容器的监控就很重要了.SA的监控系统是物理机的监控,在一个物理机跑多个容器的情况下,我们是没法从一个监控图表里面区分各个容器的资源占用情况的.为了更好的监控容器运行情况,更重要的是为了后续的容器动态调度算法需要的大量运行时数据的搜集,经过调研后,基于CAdvisor + InfluxDB + Grafana搭建了这套容器监控系统. 1 容器监控方案选择 在调研容器监控系统

docker swarm cAdvisor+InfluxDB+Grafana 监控

docker swarm集群的监控方案很多,cAdvisor+InfluxDB+Grafana方案功能强大灵活.最重要的是这个方案开源.免费.易用,是不花钱版监控方案.参考文档:https://botleg.com/stories/monitoring-docker-swarm-with-cadvisor-influxdb-and-grafana/ 组件说明 cAdvisor:数据收集模块,需要部署在集群中的每一个节点上,当然前提条件是节点接受task.在本次实验中,共有三个节点,因为其中一个节

你必须知道的容器监控 (2) cAdvisor

本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章.上一篇我们了解了docker自带的监控子命令以及开源监控工具Weave Scope,这一篇我们来了解一下Google开发的容器监控工具cAdvisor.cAdvisor能够较好地展示Host和容器两个层次的监控数据,并且能够展示历史变化数据. # 实验环境:阿里云ECS主机(两台),CentOS 7.4 一.cAdvisor简介 为了解决容器的监控问题,Google开发了一款容器监控工具

(原)ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers

ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers(运行在主机上) 适用于类ubuntu系统.amd64. 1. influxdb: (以后考虑把influxdb换成prometheus) https://influxdb.com/docs/v0.8/introduction/installation.html#ubuntu-debian(只能先选择deb安装的方式了..没办法 代码编译方式是不行了 go发展尚未成

在Marathon 上部署 cAdvisor + InfluxDB + Grafana Docker监控

关于 Docker 容器的监控,google cAdvisor 是个很好的工具,但是它默认只显示实时数据,不储存历史数据.为了存储和显示历史数据.自定义展示图,可以把将cAdvisor与InfluxDB.Grafana 集成起来. 需要的镜像: tutum/influxdb google/cadvisor grafana/grafana 安装:有8台mesos-slave,都需要运行一个cAdvisor docker实例对docker进行监控,然后需要运行一个InfluxDB docker实例存

[经验交流] 在 Mesos Marathon 上部署 cAdvisor + InfluxDB + Grafana Docker监控

关于 Docker 容器的监控,google cAdvisor 是个很好的工具,但是它默认只显示实时数据,不储存历史数据.为了存储和显示历史数据.自定义展示图,可以把将cAdvisor与InfluxDB.Grafana 集成起来,国外的专家 Brian Christner 写了一篇文章”How to setup Docker Monitoring“,描述了部署方法. Brian 的方法是手动运行 docker run 命令进行部署,为了能在 Mesos Marathon 平台上自动部署,我对他的

kafka监控实战(jmxtrans+InfluxDb+Grafana)

一.前言 从上周一直在调研找一款好用的kafka监控,我测试使用过的KafkaOffsetMonitor.Burrow.kafka-monitor.Kafka-Manager,他们各有优缺点,具体情况我这里就不展开描述了,大家可以到它们的git上去查看, 并且它们基本上都是监控topic的写入和读取等等,没有提供对于整体集群的监控信息,比如集群的分片.延时.内存使用情况等等,无意中发现了jmxtrans,jmxtrans它是一个通过jmx采集java应用的数据采集器,他的输出可以是Graphit

教你十分钟构建好 SpringBoot + SSM 框架

目前最主流的 java web 框架应该是 SSM,而 SSM 框架由于更轻便与灵活目前受到了许多人的青睐.而 SpringBoot 的轻量化,简化项目配置, 没有 XML 配置要求等优点现在也得到了大众的青睐. 而本文,我将教大家如何在 intellij idea 中快速构建好一个 Maven + Spring + SpringMVC + MyBatis + SpringBoot 的框架,做到了足够精简,让你可以立刻开始你的 web 项目.一. 创建项目 选择 Spring Initialli