zoukankan      html  css  js  c++  java
  • [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 採用署名-非商业性使用-同样方式共享协议

  • 相关阅读:
    页面显示时间
    如何用JavaScript实现获取验证码的效果
    CSS中style用法详解
    html 样式之style属性的使用
    使用JavaScript实现弹出层效果的简单实例
    [转]创建一个JavaScript弹出DIV窗口层的效果
    eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上
    关于eclipse部署项目后,在tomcat中的webapps文件夹下没有项目
    jsp页面提示“Multiple annotations found at this line:
    Maven3路程(三)用Maven创建第一个web项目(1)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5409422.html
Copyright © 2011-2022 走看看