[rrdtool]监控和自动画图,简单的监控.md
现在想要监控服务的流量和并发数,可是又没那么多时间来写系统,其他的运维系统又不熟悉,于是就用现有的rrdtool shell做了个简单的监控界面,临时用下,也算是个小实验把。 rrdtool也是刚接触,算是一个小练习
流程
大致的流程是这样的(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 采用署名-非商业性使用-相同方式共享协议
[rrdtool]监控和自动画图,简单的监控.md的更多相关文章
- ReadDirectoryChangesW 监控文件夹 (一个简单的监控示例程序)(文件被修改了,也可以探测到)
// .h文件 #pragma once typedef void (*PFN_NotifyAction)(DWORD dwAction, LPWSTR szFile, DWORD dwLength) ...
- [rrdtool]监控和自己主动绘图,简单的监控.md
如今想要监控服务的流量和并发数,但是又没那么多时间来写系统.其它的运维系统又不熟悉,于是就用现有的rrdtool shell做了个简单的监控界面,暂时用下,也算是个小实验把. rrdtool也是刚接触 ...
- zabbix通过简单命令监控elasticsearch集群状态
简单命令监控elasticsearch集群状态 原理: 使用curl命令模拟访问任意一个es节点可以反馈的集群状态,集群的状态需要为green curl -sXGET http://serverip: ...
- Linux监控二之cacti简单安装部署
目录 cacti简单部署 1 环境依赖包部署 1 1. cacti中文版0.8e搭建 2 2. cacti安装向导 url:http://192.168.200.243/ ...
- zabbix模板的自动发现规则(ldd)实现被监控项自动发现
zabbix模板的自动发现规则(ldd)实现被监控项自动发现 自动发现规则(ldd)用途说明 在zabbix自带的linux模板的自动发现规则中,有一个Mounted filesystem disco ...
- 探索Windows Azure 监控和自动伸缩系列1 - 连接中国区Azure
最近准备基于Microsoft Azure Management Libraries 实现虚拟机的监控.主要的需求就是获取虚拟机内置的性能计数器数据,基于性能计数器实现后续的监控和自动伸缩. 作为这一 ...
- python简单的监控脚本-利用socket、psutil阻止远程主机运行特定程序
python简单的监控脚本-利用socket.psutil阻止远程主机运行特定程序 psutil是一个跨平台的库(http://code.google.com/p/psutil/),能够轻松的实现获取 ...
- zabbix 添加自动发现端口并监控
最近在部署zabbix监控 有些服务器上开启的服务端口非常多 如果一个个添加监控会很繁琐,于是想到了自动发现规则 自动发现服务器上的服务端口并进行监控. 在zabbix客户端服务器上进行操作 1 ...
- 运维监控篇(2)_Zabbix简单的性能调优
Zabbix是一款高性能的分布式监控报警系统.比如现在常见的家用台式机配置处理器I5-3470.内存4GB1600MHz.硬盘7200rpm就能够监控1000台左右的HOST,是的没错Zabbix就是 ...
随机推荐
- 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
概述 这个工作尝试重现这个论文的结果 A Neural Conversational Model (aka the Google chatbot). 它使用了循环神经网络(seq2seq 模型)来进行 ...
- PTA 邻接表存储图的广度优先遍历(20 分)
6-2 邻接表存储图的广度优先遍历(20 分) 试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(V ...
- Luogu P2756 [网络流24题]飞行员配对方案问题_二分图匹配
二分图模板题 我用的是匈牙利 其实最大流也可以做 #include<iostream> #include<cstdio> #include<cstdlib> #in ...
- 解释session
我理解的session就是,多个页面都要使用某一个或一些数据,这时就可以用session,将数据暂时保存起来,这样其他的页面开启session,就能将那些数据拿出来使用.
- CentOS 7安装Python3.5,并与Python2.7兼容并存
CentOS7默认安装了python2.7.5,当需要使用python3的时候,可以手动下载Python源码后编译安装.1.安装python3.5可能使用的依赖1 yum install openss ...
- Go 语言范围(Range)
Go 语言中 range 关键字用于for循环中迭代数组(array).切片(slice).链表(channel)或集合(map)的元素.在数组和切片中它返回元素的索引值,在集合中返回 key-val ...
- 到底什么是集群&分布式
对于楼主这样工作一年的菜鸟,偶尔会看到一些文章标题带有"分布式""集群"关键字,然后就懵逼了.最近对这些概念进行了一定的了解,整理了一下思路,在这里分享给各位猿 ...
- Dubbo框架应用之(二)--服务治理
Dubbo服务治理全貌图 当我们现有ITOO平台系统的业务随着用户的逐渐增大,设计的业务越来越广,系统会异常的复杂,在大规模服务之前,我们可以采用的是RMI或Hessian等工具,暴露和引用远程服务, ...
- Appium移动自动化框架初探
作者:cryanimal QQ:164166060 本文简要介绍了appnium自动化框架的架构.加载流程.支持语言.相关配置,以及元素定位工具等. 官方网站: http://appium.io Ap ...
- iter 函数另类用法
它可以很简单地构造一个无限迭代器: ): print(i) #将无限打印出0 原来,如果iter有第二个参数,那么第一个参数必须是一个参数可以省略的可调用对象.int函数符合这种要求. 迭代什么时候停 ...