现在想要监控服务的流量和并发数,可是又没那么多时间来写系统,其他的运维系统又不熟悉,于是就用现有的rrdtool shell做了个简单的监控界面,临时用下,也算是个小实验把。 rrdtool也是刚接触,算是一个小练习

流程

大致的流程是这样的(centos6操作系统)

  • 初始化rrd数据库
  • shell脚本定时更新rrd中的数据
  • shell脚本定时画图(这里就画了一个24小时的)生成图片
  • html,把图片包含里面。 界面可以直接访问

开发

初始化

主要就是2个功能,24小时流量图,24小时并发图(5分钟抽样,不是全部的实时监控)

  1. rrdtool create eth1.rrd --step 300 \
  2. DS:eth1_in:COUNTER:600:0:U \
  3. DS:eth1_out:COUNTER:600:0:U \
  4. RRA:AVERAGE:0.5:1:600 \
  5. RRA:AVERAGE:0.5:4:600 \
  6. RRA:AVERAGE:0.5:24:600 \
  7. RRA:AVERAGE:0.5:288:730 \
  8. RRA:MAX:0.5:1:600 \
  9. RRA:MAX:0.5:4:600 \
  10. RRA:MAX:0.5:24:600 \
  11. RRA:MAX:0.5:288:730
  12. rrdtool create curnum.rrd --step 300 \
  13. DS:num:GAUGE:600:0:U \
  14. RRA:AVERAGE:0.5:1:600 \
  15. RRA:AVERAGE:0.5:4:600 \
  16. RRA:AVERAGE:0.5:24:600 \
  17. RRA:AVERAGE:0.5:288:730 \
  18. RRA:MAX:0.5:1:600 \
  19. RRA:MAX:0.5:4:600 \
  20. RRA:MAX:0.5:24:600 \
  21. RRA:MAX:0.5:288:730

更新数据

更新脚本,并画图,假如cron,5分钟一次

*/5 * * * * /bin/sh /home/erya/run/monitor/rrd_update.sh >/dev/null 2>&1

  1. [root@localhost moniter]# cat rrd_update.sh
  2. #!/bin/bash
  3. #orangleliu
  4. #centos 获取某个网卡某个时间 收发包的大小
  5. eth_name="eth1"
  6. in=$(cat /proc/net/dev|grep eth1|cut -d ':' -f 2|awk '{print $1}')
  7. out=$(cat /proc/net/dev|grep eth1|cut -d ':' -f 2|awk '{print $9}')
  8. curnum=$(netstat -nat|grep ESTABLISHED|wc -l)
  9. echo "$eth_name int is ${in}"
  10. echo "$eth_name out is ${out}"
  11. echo "curnum is ${curnum}"
  12. #udpate rrd
  13. rrd_dir=/home/erya/run/monitor
  14. /usr/bin/rrdtool updatev ${rrd_dir}/eth1.rrd N:${in}:${out}
  15. /usr/bin/rrdtool updatev ${rrd_dir}/curnum.rrd N:${curnum}

定时画图

画图脚本,每5分钟一次(cron, 或者追加在更新脚本的最后部分

*/5 * * * * /bin/sh /home/erya/run/monitor/rrd_graph.sh >/dev/null 2>&1

  1. #!/bin/bash
  2. #5分钟画图一次,给页面访问
  3. cd /home/erya/run/monitor
  4. /usr/bin/rrdtool graph net.png \
  5. --start -86400 --end now \
  6. --title "100 server net flow 1 day" \
  7. DEF:value1=eth1.rrd:eth1_in:AVERAGE \
  8. DEF:value2=eth1.rrd:eth2_out:AVERAGE \
  9. AREA:value1#00ff00:in \
  10. LINE2:value2#ff0000:out:STACK
  11. /usr/bin/rrdtool graph curnum.png \
  12. --start -86400 --end now \
  13. --title "100 server concurrency number 24 hours" \
  14. DEF:value1=curnum.rrd:num:AVERAGE \
  15. AREA:value1#00ff00:num

然后我写了一个html,把两个图片包含进去,配置到nginx 中(就是几个location),就可以直接从浏览器访问了。

也算是,超级简陋的监控方式把。

界面

  1. root@localhost moniter]# cat monitor.html
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <tilte> 100服务器流量 并发监控图</title>
  6. </head>
  7. <body>
  8. <h3>24小时内流量趋势</h3>
  9. <img src="http://xxx/rrd/net.png" />
  10. <h3>24小时内并发趋势</h3>
  11. <img src="http://xxx/rrd/curnum.png" />
  12. </body>
  13. </html>

nginx配置片段

  1. location ^~/rrd/net.png {
  2. alias /home/erya/run/monitor/net.png;
  3. }
  4. location ^~/rrd/curnum.png {
  5. alias /home/erya/run/monitor/curnum.png;
  6. }
  7. location ^~/rrd/monitor.html {
  8. alias /home/erya/run/monitor/monitor.html;
  9. }

效果图

声明:

本文出自 “orangleliu笔记本” 博客,转载请务必保留此出处http://blog.csdn.net/orangleliu/article/details/46739853作者orangleliu 采用署名-非商业性使用-相同方式共享协议

[rrdtool]监控和自动画图,简单的监控.md的更多相关文章

  1. ReadDirectoryChangesW 监控文件夹 (一个简单的监控示例程序)(文件被修改了,也可以探测到)

    // .h文件 #pragma once typedef void (*PFN_NotifyAction)(DWORD dwAction, LPWSTR szFile, DWORD dwLength) ...

  2. [rrdtool]监控和自己主动绘图,简单的监控.md

    如今想要监控服务的流量和并发数,但是又没那么多时间来写系统.其它的运维系统又不熟悉,于是就用现有的rrdtool shell做了个简单的监控界面,暂时用下,也算是个小实验把. rrdtool也是刚接触 ...

  3. zabbix通过简单命令监控elasticsearch集群状态

    简单命令监控elasticsearch集群状态 原理: 使用curl命令模拟访问任意一个es节点可以反馈的集群状态,集群的状态需要为green curl -sXGET http://serverip: ...

  4. Linux监控二之cacti简单安装部署

    目录 cacti简单部署    1 环境依赖包部署    1 1.    cacti中文版0.8e搭建    2 2.    cacti安装向导 url:http://192.168.200.243/ ...

  5. zabbix模板的自动发现规则(ldd)实现被监控项自动发现

    zabbix模板的自动发现规则(ldd)实现被监控项自动发现 自动发现规则(ldd)用途说明 在zabbix自带的linux模板的自动发现规则中,有一个Mounted filesystem disco ...

  6. 探索Windows Azure 监控和自动伸缩系列1 - 连接中国区Azure

    最近准备基于Microsoft Azure Management Libraries 实现虚拟机的监控.主要的需求就是获取虚拟机内置的性能计数器数据,基于性能计数器实现后续的监控和自动伸缩. 作为这一 ...

  7. python简单的监控脚本-利用socket、psutil阻止远程主机运行特定程序

    python简单的监控脚本-利用socket.psutil阻止远程主机运行特定程序 psutil是一个跨平台的库(http://code.google.com/p/psutil/),能够轻松的实现获取 ...

  8. zabbix 添加自动发现端口并监控

    最近在部署zabbix监控  有些服务器上开启的服务端口非常多  如果一个个添加监控会很繁琐,于是想到了自动发现规则  自动发现服务器上的服务端口并进行监控. 在zabbix客户端服务器上进行操作 1 ...

  9. 运维监控篇(2)_Zabbix简单的性能调优

    Zabbix是一款高性能的分布式监控报警系统.比如现在常见的家用台式机配置处理器I5-3470.内存4GB1600MHz.硬盘7200rpm就能够监控1000台左右的HOST,是的没错Zabbix就是 ...

随机推荐

  1. input中v-model和value不能同时调用时解决方案

    <input type="text" v-model="keyWord" value="请输入地名地址" > 当使用如上代码时, ...

  2. 基于babylon3D模型研究3D骨骼动画(1)

    3D骨骼动画是实现较为复杂3D场景的重要技术,Babylon.js引擎内置了对骨骼动画的支持,但Babylon.js使用的骨骼动画的模型多是从3DsMax.Blender等3D建模工具转换而来,骨骼动 ...

  3. 文件上传,服务端压缩文件方法,重点是png与gif图片的压缩,保证了透明度与动画

    /// <summary> /// 上传文件帮助类 /// </summary> public class ImageUploadHelper { #region SaveVi ...

  4. Kinect 深度图像格式

    Kinect的深度图像有16bit,2byte,如图: 第15位:标志位,不用做深度计算 第14~3位:深度图像数据,即距离,以毫米为单位 第0~2位:深度图中人的ID(PlayerID) 深度图有两 ...

  5. python学习之路web框架

    WEB框架的本质 python的WEB框架分为两大类: 1.自己写socket,自己处理请求 2.基于wsgi(Web Server Gateway Interface WEB服务网关接口),自己处理 ...

  6. Python3 解释器

    Linux/Unix的系统上,Python解释器通常被安装在 /usr/local/bin/python3.4 这样的有效路径(目录)里. 我们可以将路径 /usr/local/bin 添加到您的Li ...

  7. 用js来实现那些数据结构13(树01-二叉搜索树的实现)

    前一篇文章我们学会了第一个非顺序数据结构hashMap,那么这一篇我们来学学树,包括树的概念和一些相关的术语以及二叉搜索树的实现.唉?为什么不是树的实现,不是二叉树的实现.偏偏是二叉搜索树的实现?嗯, ...

  8. Xcode 调试技巧 --常用命令和断点

    Xcode 中的调试技巧与我们的日常开发息息相关,而这些调试技巧在我们解决Bug时,常常有事半功倍的作用,经常会用到的有各种断点 和 命令.而这些调试技巧也经常会在面试中问到,所以不知道的就来看看吧. ...

  9. Gradle 1.12用户指南翻译——第五十一章. 发布构件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...

  10. Android布局中ScrollView与ListView的冲突的最简单方法

    看到网上流行的一种使用方法是: public class Utility { public static void setListViewHeightBasedOnChildren(ListView ...