热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用influxdb+cadvisor+grafana的docker镜像搭建一个实时监控系统的环境

1.简述监控一个主机系统实时信息,比如cpu,内存等信息看起来是一件比较难的时,其实即使用传统的方法安装influxdb和cadvisor还有granfana就可以了,再说现在使用docke
1.简述

监控一个主机系统实时信息,比如cpu,内存等信息看起来是一件比较难的时,其实即使用传统的方法安装influxdb和cadvisor还有granfana就可以了,再说现在使用docker来部署环境简直就是so easy!

Docker的火爆程度就不说了,随着docker的生态圈的发展,将原来部署起来很复杂的环境变得非常简单,下面的教程我们通过上述的三个组件(cadvisor influxdb grafana)来搭建一个监控主机系统的实时信息。

首先介绍下几个组件的功能,cadvisor谷歌公司自己用来监控他们基础设施的一款工具,这个工具厉害之处不仅能监控docker容器的实时信息,而且还能将你的cadvisor这容器所在的主机的系统的实时信息!(谷歌就这么牛逼,掌握核心技术!),但是由于cadvisor只是能监控到实时的信息而不能保存,所以我们要使用influxdb将这些实时监控到的信息存放起来,以备以后需要。而grafana这个就是将influxdb存放的信息以图表的形式,非常清晰,完美地展现出来!下面,我们简述部署的过程。

2.环境部署

2.1 平台信息

假设你的虚拟机已经安装并配置好了docker(能直接pull镜像,要是不行可以先在外面下载好再导进去),并且你的虚拟机能和浏览器进行连接,以我的环境为例子,我的环境的信息如下:

          IP                            主机名                 备注

     10.63.39.38               lijiaze          系统CentOS7.1

2.2 安装influxdb

1.在本地创建一个存放influxdb数据的目录

[root@lijiaze:~] # mkdir -p /data/influxdb

2. 启动influxdb容器,必须注意的是这里的influxdb镜像要使用v0.8.8的

# 为了方便后面其他的容器和它连接,启动一个名叫influxsrv容器,并将容器的信息保存在本地目录/data/infludb
# docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 --volume=/data/influxdb:/data --name influxsrv tutum/influxdb:0.8.8
3. 创建cadvisor数据表

   (1).登陆http://10.63.39.38:8083 使用username为root,password为root登陆influxdb。如下图

   (2).登陆influxdb后,点击页面的上方Databases连接,输入数据库的名称cadvisor并点击Create Database按钮。如下图

2.3 安装cadvisor

1. 启动cadvisor容器

# 启动cadvisor容器,并和前面创建的influxdb的容器连接起来
# docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --link influxsrv:influxsrv --name=cadvisor google/cadvisor:latest -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
2. 一旦容器创建成功,就可以通过URL为http://10.63.39.38:8080 登陆到cadvisor的UI界面,如下图

2.4 安装grafana

1.启动grafana容器

# 启动grafana容器,并和influxdb容器连接
# docker run -d -p 3000:3000 -e INFLUXDB_HOST=influxsrv -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=cadvisor -e INFLUXDB_USER=root -e INFLUXDB_PASS=root --link influxsrv:influxsrv --name grafana grafana/grafana
2. 配置grafana

  (1) 通过URL 为http://10.63.39.38:3000 登陆grafana的UI界面,以username为admin,password为admin登陆。

  (2) 连接influxdb的配置,首先点击界面左边的Data Sources,然后点击Add New Data Source这样就会弹出一个编辑框。

我们在编辑框的Edit data source下面填入如下信息

Name:influxdb

Type   :influxDB 0.8.x

将Default旁边的框框选上


在Http settings下面填入如下信息

Url:http://influxsrv:8086

Access:proxy

Basic Auth: Enabled

User: admin

Password: admin


在InfluxDB Details下面填入如下信息

Database:cadvisor

User:root

Password:root

    上述操作完成后,我们将看到如下的图

           (3) 定义要监控的信息,首先点击grafana的UI界面的左边的Dashboards按钮,然后点击New按钮,此时将会在Dashboards的旁边出现一个绿色图标,移动鼠标到该图标上,将会有一系列表展现出来,这时选择Add Panel然后在选择Graph。如下图

这时将会弹出一个表格类型图,点击表的标题(no title (click here)),选择edit 按钮,进行编辑。如下图

这样就会弹出一个编辑的表格,我们首先在已有的Query1 里面填写如下的信息

series:stats

alias::Limit

select:mean(fs_limit)

然后点击右下方的Add Query 按钮再创建一个Query2,并在Query2里面填写如下的信息

series:stats

alias::Usage

select:mean(fs_usage)


点击General按钮,修改你的表格的标题

点击Axis & Grid 按钮,改变显示的坐标的单位,Left Y Unit:Bytes

这样上述操作完成后的图如下

这样上述操作完成后,点击界面上方的Save按钮进行保存。这样整个部署流程就走完了!是不是很帅气呢?!

3 后记

其实,很早就想写记录下自己工作或者学习所弄过的一些东西,没时间去弄,今天熬夜也得把第一篇博客写好,哈哈终于写完了!当然这里主机里面有很多参数可以将其展现出来,不过作为一个教程只是举其中一个简单的例子,后续如果有时间在贴上吧!











推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 启动监控MonitorTables主要存储一些监控信息(当前运行的SQL,IO统计信息,当前进程情况)比如monDevic ... [详细]
  • 1、dispatch_barrier_asyncdispatch_barrier_async用于等待前面的任务执行完毕后自己才执行,而它后面的任务需等待它完成之后才执 ... [详细]
  • oracle text db2,从Oracle 到DB2(一)
    在实际的软件项目的开发过程中,特别是在企业的应用系统集成(EAI)项目中广大开发人员经常遇到不同关系型数据库之间的数据移植问题。笔者根据自己在工作中的不同数据库数据移 ... [详细]
  • 接上文http:blog.itpub.net29254281viewspace-1318239领导让开发同学鼓捣一个可配置化的后台.又回到了原来的问题如果要灵活,很多参数要 ... [详细]
  • 为什么需要有应用层缓冲区?muduo网络库使用IO复用,并且文件描述符使用非阻塞模式,如果使用阻塞模式那么read、write就会阻塞在 ... [详细]
  • 数据库用久了难免会出现没有回收的空间,如果空间太大可使用以下方法进行回收。查询用个表所占用的空间:SELECTtablespace_name,100*(sum_max-sum_alloc+nvl(su ... [详细]
  • DBA的日常运维–Part11.活动状态检查 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 2017年的时候,我刚去上海,朋友内推我去美团面试,之前我也写过一个一篇文章,也是在美团面试中遇到的:关于慢SQL,我和面试官扯了很久,面试官也是很谦虚的,总是点头,自己以为回答的 ... [详细]
  • 1.Python1.数据类型1.数字整形:int浮点型:float复数型:complex布尔型:bool2.字符串字符串:String3.与 ... [详细]
  • MFC控件——ListCtrl控件[翻译]
    元旦发帖,首先祝大家元旦快乐!声明:1、本文为翻译文章,水平有限,错误之处,烦请指正(china ... [详细]
  • POJ1942   DPaths on a Grid
    Imagineyouareattendingyourmathlessonatschool.Onceagain,youareboredbecauseyourteachertellst ... [详细]
  • 介绍项目开发过程中,一个不可避免的问题就是密码安全问题。实际上,我们经常能看到很多新闻的密码泄露事件,很多传统的企业密码采用明文存储&#x ... [详细]
author-avatar
手机用户2502934901
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有