[rrdtool]监控和自动画图,简单的监控.md
2015-07-03 11:43
471 查看
现在想要监控服务的流量和并发数,可是又没那么多时间来写系统,其他的运维系统又不熟悉,于是就用现有的rrdtool shell做了个简单的监控界面,临时用下,也算是个小实验把。 rrdtool也是刚接触,算是一个小练习
初始化rrd数据库
shell脚本定时更新rrd中的数据
shell脚本定时画图(这里就画了一个24小时的)生成图片
html,把图片包含里面。 界面可以直接访问
然后我写了一个html,把两个图片包含进去,配置到nginx 中(就是几个location),就可以直接从浏览器访问了。
也算是,超级简陋的监控方式把。
nginx配置片段
声明:
本文出自 “orangleliu笔记本” 博客,转载请务必保留此出处http://blog.csdn.net/orangleliu/article/details/46739853作者orangleliu 采用署名-非商业性使用-相同方式共享协议
流程
大致的流程是这样的(centos6操作系统)初始化rrd数据库
shell脚本定时更新rrd中的数据
shell脚本定时画图(这里就画了一个24小时的)生成图片
html,把图片包含里面。 界面可以直接访问
开发
初始化
主要就是2个功能,24小时流量图,24小时并发图(5分钟抽样,不是全部的实时监控)rrdtool create eth1.rrd --step 300 \ DS:eth1_in:COUNTER:600:0:U \ DS:eth1_out:COUNTER:600:0:U \ RRA:AVERAGE:0.5:1:600 \ RRA:AVERAGE:0.5:4:600 \ RRA:AVERAGE:0.5:24:600 \ RRA:AVERAGE:0.5:288:730 \ RRA:MAX:0.5:1:600 \ RRA:MAX:0.5:4:600 \ RRA:MAX:0.5:24:600 \ RRA:MAX:0.5:288:730 rrdtool create curnum.rrd --step 300 \ DS:num:GAUGE:600:0:U \ RRA:AVERAGE:0.5:1:600 \ RRA:AVERAGE:0.5:4:600 \ RRA:AVERAGE:0.5:24:600 \ RRA:AVERAGE:0.5:288:730 \ RRA:MAX:0.5:1:600 \ RRA:MAX:0.5:4:600 \ RRA:MAX:0.5:24:600 \ RRA:MAX:0.5:288:730
更新数据
更新脚本,并画图,假如cron,5分钟一次*/5 * * * * /bin/sh /home/erya/run/monitor/rrd_update.sh >/dev/null 2>&1
[root@localhost moniter]# cat rrd_update.sh #!/bin/bash #orangleliu #centos 获取某个网卡某个时间 收发包的大小 eth_name="eth1" in=$(cat /proc/net/dev|grep eth1|cut -d ':' -f 2|awk '{print $1}') out=$(cat /proc/net/dev|grep eth1|cut -d ':' -f 2|awk '{print $9}') curnum=$(netstat -nat|grep ESTABLISHED|wc -l) echo "$eth_name int is ${in}" echo "$eth_name out is ${out}" echo "curnum is ${curnum}" #udpate rrd rrd_dir=/home/erya/run/monitor /usr/bin/rrdtool updatev ${rrd_dir}/eth1.rrd N:${in}:${out} /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
#!/bin/bash #5分钟画图一次,给页面访问 cd /home/erya/run/monitor /usr/bin/rrdtool graph net.png \ --start -86400 --end now \ --title "100 server net flow 1 day" \ DEF:value1=eth1.rrd:eth1_in:AVERAGE \ DEF:value2=eth1.rrd:eth2_out:AVERAGE \ AREA:value1#00ff00:in \ LINE2:value2#ff0000:out:STACK /usr/bin/rrdtool graph curnum.png \ --start -86400 --end now \ --title "100 server concurrency number 24 hours" \ DEF:value1=curnum.rrd:num:AVERAGE \ AREA:value1#00ff00:num
然后我写了一个html,把两个图片包含进去,配置到nginx 中(就是几个location),就可以直接从浏览器访问了。
也算是,超级简陋的监控方式把。
界面
root@localhost moniter]# cat monitor.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <tilte> 100服务器流量 并发监控图</title> </head> <body> <h3>24小时内流量趋势</h3> <img src="http://xxx/rrd/net.png" /> <h3>24小时内并发趋势</h3> <img src="http://xxx/rrd/curnum.png" /> </body> </html>
nginx配置片段
location ^~/rrd/net.png { alias /home/erya/run/monitor/net.png; } location ^~/rrd/curnum.png { alias /home/erya/run/monitor/curnum.png; } location ^~/rrd/monitor.html { alias /home/erya/run/monitor/monitor.html; }
效果图
声明:
本文出自 “orangleliu笔记本” 博客,转载请务必保留此出处http://blog.csdn.net/orangleliu/article/details/46739853作者orangleliu 采用署名-非商业性使用-相同方式共享协议
相关文章推荐
- android wifi 无线调试
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Linux Shell常用技巧
- 使用zabbix监控Nginx活动状态--Part1
- IE:“自动完成”功能
- shell字符串操作详解
- C#实现简单屏幕监控的方法
- Shell中删除某些文件外所有文件的3个方法
- C#进程监控方法实例分析
- Ruby中执行Linux shell命令的六种方法详解
- Windows下使用性能监视器监控SqlServer的常见指标
- VB使用shell函数打开外部exe程序的实现方法
- Shell编程的一些知识集合
- Shell中的for和while循环详细总结
- 什么是Shell?Shell脚本基础知识详细介绍
- Shell脚本中引用、调用另一个脚本文件的2种方法
- Shell脚本解压rpm软件包
- Shell脚本实现复制文件到多台服务器的代码分享