zoukankan      html  css  js  c++  java
  • munin因为plugin而亮

    Munin is a networked resource monitoring tool that can help analyze resource trends and "what just happened to kill our performance?" problems. It is designed to be very plug and play. A default installation provides a lot of graphs with almost no work.

    munin是一个网络监控软件。

    munin是一个server-nodes的结构,一个server对应多台node,每台node就是被监控的节点,server是统计node的数据并进行绘图生成html的节点。server的配置文件是:/etc/munin/munin.conf ,每个node都有各自的配置文件:/etc/munin/munin-node.conf

    先看一下最后的统计效果:

    image

    image

    如何安装:

    http://munin-monitoring.org/wiki/LinuxInstallation

    谈及为什么使用munin,一定会提到的一点:munin能让使用者非常快捷方便的编写和使用插件。当需要定制某些特制的功能的时候,写一个插件的代价非常小。插件就是一个脚本,可以使用php,bash,perl等语言进行编写。下面以一个插件,使用php语言,完成统计redis的使用内存为例:

    1 在有redis的机子上(192.168.0.19)安装munin-node

    2 进入/usr/share/munin/plugins/ (其实在任意一个目录都是可以的)

    3 创建文件redis_memory_

    这里的redis_memory_最后一个下划线后面的内容我默认是希望填写端口号,因为我在192.168.0.19上有2个redis,分别放在7000和7001两个端口上

    所以最后的redis插件应该是redis_memory_7000 和 redis_memory_7001

    4 编辑redis_memory_

    #!/usr/local/bin/php
    <?php
    if (isset($argv[1]) && $argv[1] == 'config') {
        
        echo 'graph_title redis_memory_' . sGetPort($argv[0]) . PHP_EOL;
        echo 'graph_category open_message' . PHP_EOL;
        echo 'graph_vlabel memory' . PHP_EOL;
        echo 'memory.label memory' . PHP_EOL;
        exit;
    }
    
    echo 'memory.value ' . iGetMemory(sGetPort($argv[0])) . PHP_EOL;
    
    if (isset($argv[1]) && $argv[1] == 'suggest') {
        echo '7000' . PHP_EOL;
        echo '7001' . PHP_EOL;
    }
    
    function iGetMemory($port)
    {
        $cmd = sprintf("/usr/local/bin/redis-cli -p %s info | grep '^used_memory:'|awk -F : '{print $2}'", $port);
        return exec($cmd);
    }

    a) 脚本成功的标志是

    ./redis_memory_ 能出现:memory.value 653653653

    ./redis_memroy_ config 能出现:

    graph_title redis_memory_7000

    graph_category open_message

    graph_vlabel memory

    memory.label memory

    munin在生成图片的时候会调用这两个命令来生成统计图片的,graph_title是图片标题,graph_category是分类,memory.label 是memory的标签,graph_vlabel memory是纵坐标的内容,memory.value 是具体的值。

    还有更多的属性:

    http://munin-monitoring.org/wiki/protocol-config

    b)这个脚本运行成功的条件有:

    安装了php,并且php 命令安装在/usr/local/bin/php

    安装了redis,redis-cli 安装在/usr/local/bin/redis-cli

    c)我这边是使用redis-cli命令来取memory信息,当然也可以使用redis的客户端phpredis等来取

    5 chmod +x redis_memory_

    6 做链接(必须使用绝对路径)

    ln –s /usr/share/munin/plugins/redis_memory_ /etc/munin/plugins/redis_memory_7000

    ln –s /usr/share/munin/plugins/redis_memory_ /etc/munin/plugins/redis_memory_7001

    7 设置有哪些server能进入munin取数据,/etc/munin/munin-node.conf

    allow ^127\.0\.0\.1$
    allow ^192\.168\.0\.19$

    8 /etc/init.d/munin-node restart

    server(192.168.0.19):

    1 安装munin

    2 修改/etc/munin/munin.conf

    要修改的部分:

    htmldir /home/yejianfeng/www/munin

    要增加的部分:

    [zwt-01]
    address 192.168.0.17
    use_node_name yes

    好了,完成了。但是还有几个想说的:

    1 如果在过程中出现错误, /var/log/munin/munin_node.log是非常好的信息记录

    2 曾经被问过一个问题

    为什么不在server端使用http来获取node的信息(比如要获取ngnix status或者redis的),这样node就不用配置munin-node了,这样在server同样可以生成图片。

    我是这样说服自己的:

    a) munin是使用tcp在server和node之间进行通信的,如果使用http,这就像是大炮换鸟枪的做法

    b) 使用node模式有node的log,便于调试

    c) 如果不使用server-node,那就相当于纯粹把munin当做画图工具而已,还不如XXOO

    d) 如果不使用node的话category的排版会相当复杂

    3 munin  server会每5分钟到node中进行munin node中进行取数据操作,所以,如果刚修改后发现图片还没变,请稍安勿躁。

    一些有用的munin链接:

    http://munin-monitoring.org

    http://os.51cto.com/art/201012/238964.htm

    http://huacnlee.com/blog/munin-plugin-seo-check-for-gogle-baidu-collected-pages/

    http://munin-monitoring.org/wiki/protocol-config

    http://blog.jploh.com/2007/06/14/how-to-install-munin-on-centos/

      ----------------------

      作者:yjf512(轩脉刃)

      出处:http://www.cnblogs.com/yjf512/

      本文版权归yjf512和cnBlog共有,欢迎转载,但未经作者同意必须保留此段声明

    实时了解作者更多技术文章,技术心得,请关注微信公众号“轩脉刃的刀光剑影”

    本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名叶剑峰(包含链接http://www.cnblogs.com/yjf512/),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系

  • 相关阅读:
    Mysql主键索引、唯一索引、普通索引、全文索引、组合索引的区别
    centos7下安装phpmyadmin
    centos7下apache启动报错记录
    Centos7 升级php版本到php7
    centos7下安装composer和git
    git推送新项目到github
    git使用入门
    laravel5.5学习2-路由系统
    laravel5.5入门-安装和认证
    laravel的monolog使用
  • 原文地址:https://www.cnblogs.com/yjf512/p/2408122.html
Copyright © 2011-2022 走看看