• docker监控方案实践(cadvisor+influxdb+grafana)


    一、概要

    1.1 背景

           虚拟化技术如今已经非常热门,如果你不知道什么是虚拟化,那你应该了解虚拟机。虚拟化技术如同虚拟机一样,用于将某些硬件通过软件方式实现"复制",虚拟出"硬件系统" 并且能够对该虚拟的硬件系统实现一系列骚操作。
           docker作为出色的虚拟化技术,其技术发展壮大的同时,使用docker部署主机和服务的情况越来越多。可虚拟化终究是虚拟化,它需要依托与真实的主机之上,所以面对日益庞大的docker服务群应用,需要做好有效的监控。
            本文对docker不做详细介绍,主要讲解使用cadvisor+influxdb+grafana三大开源框架组成的docker服务群监控方案

    1.2 主流监控方案

    1、使用docker自带的命令docker stats(有局限性)
    2、cadvisor(开源)
    3、Data Dog(它是这几个中最好的,但是收费)
    4、Sensu Monitoring Framework(Sensu集群复杂,不易于部署)
    5、Scout(收费)

    1.3 软件简介

    cadvisor:

         Google开源的用于监控基础设施应用的工具,可以零配置运行在docker主机上来监控Docker主机以及Docker容器。其为但节点监控,只能监控一个主机。多节点监控可参考Google的Kubernetes。作为docker服务的监控数据收集器,提供给influxdb。

    influxdb:

         InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖、提供管理界面。提供基于时间序列,基于事件的可度量的实时计算功能。作为数据存储器以及分析函数支持,与elk中elasticsearch作用类似,但此数据库偏向存储实时数据。

    grafana:

         Grafana可视化大型测量数据的开源程序,有灵活丰富的图形化选项,可以混合多种风格,多个数据源例如Graphite、zabbix、InfluxDB、Prometheus、mysql和OpenTSDB 详见配置页面。作为数据分析的可视化展示,与influxdb配合实现监控目的。与elk中kibana类似,但此可视化偏向实时监控数据展示。

    1.4 架构原理图

     

    数据流向: docker主机+docker容器-->cadvisor-->influxdb-->granfana-->web页面

    二、准备

    2.1 环境准备

    安装docker环境 :centos7下安装docker及配置docker

    2.2 拉取镜像

    docker pull tutum/influxdb:latest

    docker pull grafana/grafana:latest

    docker pull google/cadvisor:latest

    2.3 创建虚拟网卡(网络环境隔离)

    docker network create docker-monitor

    备注:docker 要使用该网卡,需要docker --net  docker-monitor指定。

    三、部署服务

    3.1 部署influxdb

    docker run --name influxdb -d --net docker-monitor -p 8083:8083 -p 8086:8086 tutum/influxdb:latest
    备注:8083为infuxdb后台控制端口,8086是infuxdb的数据端口
    通过web访问:http://10.0.0.110:8083

    添加管理员角色,创建数据库(作为后续存储)

    CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES ##创建管理员角色 root 密码 root 供使用
    CREATE DATABASE "cadvisor"                                  ##创建数据库 cadvisor 用于接收cadvisor的监控数据

     3.2 部署cadvisor

    docker run -d --name=cadvisor --net docker-monitor 
    -p 8080:8080 -v/:/rootfs,ro -v /var/run:/var/run 
    -v /sys:/sys,ro -v /var/lib/docker:/var/lib/docker,ro 
    google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor 
    -storage_driver_host=influxdb:8086 

    备注:

    --privileged=true :设置挂载目录权限为最大 否则挂载出错
    --volume=/sys:/sys:ro :rw表示读写 ro表示只读
    --name=cadvisor google/cadvisor :pull会从docker默认仓库下载google/cadvisor镜像
    -storage_driver=influxdb :绑定存储驱动 为 influxdb
    -storage_driver_db=cadvisor :数据库为 cadvisor
    -storage_driver_host=influxdb:8086 :绑定数据库管理地址 容器名:容器端口

    通过web访问: http://10.0.0.110:8080

    
    
    

     3.3 部署grafana

    docker run --name grafana -d -p 3000:3000 --net docker-monitor grafana/grafana

    通过web访问: http://10.0.0.110:3000      默认帐号admin admin

     四、简单使用

    以记录本教程三大框架的内存实时监控数据展示为例

    4.1 登录grafana

    4.2 设置数据源

    home主页
    左到右分别是
    安装grafana 添加数据源 添加面板 设置用户权限 安装插件

     

    备注:数据源有多种,influxdbd对实时时序数据有良好的存储方案。可以根据业务场景切换

    4.3 设置添加面板

    回到主页进行添加

    备注:grafana新建面板类似与一个图表的展示页面 其图表需要进行添加和编辑

     

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

    五、 总结

    1、使用docker进行部署服务,省去了大量操作,且docker还有dockerfile等技术可以对环境部署进行批量化操作

    2、对应docker监考,本架构可以满足基本的监控。因为influxdb为设计用于时序以及注重实时,其存储持久性有所取舍。

    3、cadvisor监控与docker融合好,但是其为单节点监控,占据一定的docker主机空间。

  • 相关阅读:
    教你在mac上配置adb环境变量
    Android Mediaplayer 调用release()的时候ANR
    Android ANR
    安卓android WebView Memory Leak WebView内存泄漏
    android 小结
    struts提供文件上传功能
    struts自定义拦截器
    struts拦截器的配置和使用
    Struts框架属性驱动
    struts配置文件
  • 原文地址:https://www.cnblogs.com/wzxmt/p/10263946.html
Copyright © 2020-2023  润新知