zoukankan      html  css  js  c++  java
  • [置顶] cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台

    通过cadvisor+influxdb+grafana三者有机结合,打造跨主机容器监控。

    优点

    1、跨主机监控,可扩展
    2、容器自发现
    3、历史数据长期保存
    4、自定义配置程度高
    

    缺点

    1、不能自动隐藏已停止的容器
    2、无法实现故障告警
    

    组件

    数据采集–cAdvisor

    cAdvisor为Docker容器用户提供了了解运行时容器资源使用和性能特征的工具。

    cAdvisor是单机版容器监控系统,通过收集宿主机的cgroup统计信息,经过加工处理后通过图展示在页面上。

    这些信息包括宿主机、容器的CPU、内存、网络流量、磁盘空间等资源隔离和运行数据。
    cadvisor资源隔离

    工作流程大致:

    1)、收集、聚集、处理宿主机的cgroup统计数据
    2)、写入后端基于事件序列的数据库(本文使用InfluxDB)
    3)、展示时读取基于事件序列的数据库
    

    优势:

    部署、维护简单:通过容器形式部署,“开箱即用”,无需配置即可使用
    监控容器和宿主机
    通过图展示,比较美观
    支持多种基于事件序列的数据库,写入和读取快
    

    不足之处:

    只能看到2分钟的监控数据
    消耗的内存较高,通常几百M
    页面加载较慢
    

    cadvisor监控图

    数据存储–InfluxDB

    InfluxDB是一个开源分布式时序、事件和指标数据库。

    influxdb使用Go语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。

    其主要特色功能

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

    InfluxDB的主要特点

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

    在使用过程中发现influxdb缺点:

    在select查询时,字段必须是time或者value,不能为其他字段
        例如:select container_name from "cpu_usage_user" limit 100无结果
    

    监控配置和展示–Grafana

    Grafana是一款开源的监控绘图工具。

    可以实时收集、存储、显示时间序列类型的数据(time series data)。

    特性:

    用于可视化大型测量数据的开源程序,提供了强大和优雅的方式去创建、共享、浏览数据。
    dashboard中展示不同metric数据源中的数据。
    常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。
    有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、Cloudwatch、Prometheus、InfluxDB、Elasticsearch。
    自定义配置灵活,支持模板、展示数据内容配置等等。
    支持告警
    

    部署

    运行环境

    宿主机:CentOS7 7.3.1611

    docker版本为1.12.6

    通过docker容器方式部署。部署情况
    cadvisor influxdb grafana
    docker1 192.168.20.128 部署 部署 部署
    docker2 192.168.20.129 部署 / /
    docker3 192.168.20.130 部署 / /

    influxdb

    创建容器

    docker create -p 8083:8083 -p 8086:8086 -v /opt/influxdb:/var/lib/influxdb --name=influxdb --hostname=influxdb tutum/influxdb 
    docker start influxdb
    8086用于Influxdb数据读写,8083用于数据库管理界面
    

    InfluxDB容器创建成功后,可以通过http://192.168.20.128:8083/打开管理界面。

    创建用户

    点击页面右上角的设置图标,数据账号和密码,点击save
    influxdb设置密码

    创建数据库

    创建cadvisor数据库,用于收集存储Docker的性能数据,在输入框输入CREATE DATABASE “cadvisor”然后按回车,执行命令。

    在输入框输入SHOW DATABASES,可以看到刚才创建的数据库
    influxdb建立数据库

    cadvisor

    创建cAdvisor容器

    docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --hostname=cadvisor --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_host=192.168.20.128:8086 -storage_driver_db=cadvisor -storage_driver_user=root -storage_driver_password=1qaz2wsx
    

    -storage_driver=influxdb 指定存储驱动,使cadvisor将数据存储到数据库中,更多存储插件

    -storage_driver_host=influxdb:8086 InfluxDB数据库的地址

    -storage_driver_db=cadvisor 数据库名称

    如果要指定用户名可以用-storage_driver_user参数,默认是root

    如果要指定密码可以用-storage_driver_password参数,默认是root

    cAdvisor运行以后,可以通过http://宿主机IP:8080/查看到Docker运行的机器和容器情况。

    验证cAdvisor是否已经向InfluxDB存入数据

    打开http://192.168.20.128:8083/的InfluxDB管理界面

    点击右上角Database切换到cadvisor数据库

    然后在输入框输入SHOW MEASUREMENTS可以看到已经创建了很多个表

    这里写图片描述

    grafana

    部署容器

    docker create -p 3000:3000 --hostname grafana --name grafana grafana/grafana
    

    默认admin的用户名和密码是admin/admin

    配置

    访问http://192.168.20.128:3000

    添加数据库

    grafana数据库配置
    这里写图片描述

    配置模板

    这里写图片描述
    这里写图片描述

  • 相关阅读:
    SSDT
    SSDT
    Rootkit之SSDT hook(通过CR0)
    直接用编译器按ctrl+F5运行和双击运行结果不一样
    HDU 1754 I Hate It
    HDU 1166 敌兵布阵
    网易2017内推笔试题 合唱团
    CodeForces 1151F Sonya and Informatics
    CodeForces 1151E Number of Components
    洛谷 P1962 斐波那契数列
  • 原文地址:https://www.cnblogs.com/lykops/p/7348024.html
Copyright © 2011-2022 走看看