前面介绍了2篇munin使用的相关文章:

 
这次介绍一下munin-node的插件的安装配置和插件的编写。
 

插件配置

munin-node本身就集成了很多的插件,只需要直接建个软链就可以了。像Nginx、Apach、mysql都是有现成的插件可以使用的。
munin的插件默认保存在/etc/munin/plugins里面。进去查看会发现很多软链,软链到/usr/share/munin/plugins 这个目录下的文件。没错,munin的插件都是放置在/usr/share/munin/plugins 下的。使用相当简单,只需要参考原有的例子,直接建软链过去就可以了。
 
下面以mysql的插件为例:
ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads
ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes
ln -s /usr/share/munin/plugins/mysql_innodb /etc/munin/plugins/mysql_innodb
 
然后重启一下munin-node 就可以生效了。
service munin-node restart
 
 

插件编写

如果需要监控的应用没有相关的插件支持怎办?也很简单。随意打开一个现有的插件,会发现具体的代码内容,观察发现编写一个插件也不是很难。而且munin-node的插件支持shell、python、perl。也可以根据自己熟悉的语言来编写插件。
 

munin-node 提供的插件实例

以threads (/usr/share/munin/plugins/threads)插件为例,我们可以查看内部代码:
#!/bin/sh
# -*- sh -*-
# vim: ft=sh if [ "$1" = "autoconf" ]; then
grep -q '^Threads' /proc/$$/status && echo "yes" || echo "no"
exit
fi if [ "$1" = "config" ]; then
echo 'graph_title Number of threads'
#echo 'graph_args --base 1000 -l 0 '
echo 'graph_vlabel number of threads'
echo 'graph_category processes'
echo 'graph_info This graph shows the number of threads.'
echo 'threads.label threads'
echo 'threads.info The current number of threads.'
exit
fi grep -s '^Threads' /proc/[-]*/status | awk '{ sum += $2; } END { print "threads.value", sum; }'
 
可以直接执行插件的文件查看输出数据的结构。可以发现所有的输出的格式都是一样的,而且都有1个参数。
分别使用参数autoconf、config和不使用参数,查看输出内容:
# sh threads autoconf
yes
 
# sh threads config
graph_title Number of threads
graph_vlabel number of threads
graph_category processes
graph_info This graph shows the number of threads.
threads.label threads
threads.info The current number of threads.
 
# sh threads
threads.value 174
 

参数说明

autoconf
用于检测是否有进程的存在。非必要。
 
config
使用config参数的时候,输出的内容是绘图的配置信息,查看字段意思也可以知道字段的意思。
 
不使用参数
不使用参数的时候,输出的是具体的进程数量。这个跟具体的命令输出有关系。
grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print "threads.value", sum; }'
 

自定义插件

既然知道每个参数需要输出的具体内容,那么我们就可以依葫芦画瓢,我们就可以写出我们自己的插件。下面给出一个具体的例子,该例子用于监控一个游戏服务器的内存和CPU。
#!/bin/sh

keyword=munin-node

case $ in
(config)
cat <<'EOM'
graph_title MY_TITLE
graph_vlabel (%)
graph_args --base -l
graph_scale no
graph_category MY_CATEGORY
EOM
ps aux | grep $keyword | grep -v grep | awk '{print $3,$4}' | while read cpu mem
do
echo "CPU.label %CPU"
echo "CPU.warning 200"
echo "CPU.critical 400"
echo "CPU.value $cpu" echo "MEM.label %MEM"
echo "MEM.warning 20"
echo "MEM.critical 50"
echo "MEM.value $mem" done
exit ;;
esac
ps aux | grep $keyword | grep -v grep | awk '{print $3,$4}' | while read cpu mem
do
echo "CPU.value $cpu"
echo "MEM.value $mem"
done
 
这里没有使用autoconf参数,其实应该使用的,万一该进程不存在怎么办,是吧。其实没有统计到数值的时候,图表是空的,所有才说autoconf参数不是必须的。
这个例子与threads不一样的是,这里收集到的是多条数据。
插件写好了之后,需要在/etc/munin/plugin-conf 配置一下。加入上面例子以munin-node_cpu 文件名保存。
在/etc/munin/plugin-conf 下新增一个文件,名字可以任意,如munin_info:
# cat munin_info
[munin-node_cpu]
user root
 
然后重启munin-node就可以了。
 
是吧,插件编写其实很简单吧。只要输出的格式符合要求,随便你使用perl、python还是shell。具体的监控完全可以自定义。譬如我假设有访问游戏服在线人数的接口,我也可以拿出来监控,当在线人数超过多少的时候给予相关提示。

开始使用独立博客了,原文地址在这里:

[Linux实用工具]munin-node插件配置和插件编写的更多相关文章

  1. [Linux实用工具]Linux监控工具munin的展示(Nginx)

    Munin的安装和配置可以参考第一篇文章: [Linux实用工具]Linux监控工具munin的安装和配置 http://www.cnblogs.com/rond/p/3757804.html Mun ...

  2. Linux系统中ElasticSearch搜索引擎安装配置Head插件

    近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...

  3. [Linux实用工具]Linux监控工具munin的安装和配置

    〇.摘要 munin是用于Linux系统(也可以监控windows系统)的监控软件.munin除了可以监控系统的各项数值之外,最大的好处是可以自己编写插件自定义监控需要的数值.整个系统的架构简单明了, ...

  4. [Linux实用工具]Windows下同步Linux文件(Linux安装Samba和配置)

    场景需求: 安装了Ubuntu在虚拟机上,但是代码编辑或者其它更多的操作的时候,还是习惯在windows下进行.如果windows下编辑完再上传到服务器,再编译执行,就太繁琐了.一次两次还好说,这编译 ...

  5. Linux学习总结(3)——Linux实用工具

    1. Windows下同步Linux文件(Linux安装Samba和配置) 场景需求: 安装了Ubuntu在虚拟机上,但是代码编辑或者其它更多的操作的时候,还是习惯在windows下进行.如果wind ...

  6. linux下ELK搭建好之后配置sentinl插件,进行邮件告警

    ELK的环境搭建好之后,如何利用收集到的数据进行数据告警呢?在破解ELK之后,它本身提供一个监视器功能,配置偏向编写脚本.有一个更加方便的插件sentiel. 一.下载并安装sentinl插件 htt ...

  7. [Linux实用工具]Ubuntu环境下SSH的安装及使用

    SSH分为客户端和服务端. 服务端是一个守护进程,一般是sshd进程,在后台运行并响应来自客户端的请求.提供了对远程请求的处理,一般包括公共密钥认证.密钥交换.对称密钥加密和非安全连接. 客户端一般是 ...

  8. Linux 实用工具vi

    vi有输入和命令两种工作模式.命令模式是用来运行一些编排文件.存档以及离开vi等操作命令. 当执行vi后,首先进入命令模式,此时输入的人数字符都被视为命令. 在命令模式下,可以使用如下两个键进入文本输 ...

  9. logstash插件配置-codec插件说明json和multiline

    编码插件(Codec) Codec 是 logstash 从 1.3.0 版开始新引入的概念(Codec 来自 Coder/decoder 两个单词的首字母缩写). 在此之前,logstash 只支持 ...

随机推荐

  1. table中background背景图片自动拉伸

    <table  background="login/image/jiaozhouwan.jpg" style="background-size: 100% 100% ...

  2. xcode修改项目名后反复出现 clang error

    xcode修改项目名后反复出现 clang error,  提示 ld: file not found . 并且该错误并不是出现在项目编译阶段,而是项目的Tests 的link阶段, 同时提示 xct ...

  3. [转]Spring Boot应用的后台运行配置

    转自:http://blog.didispace.com/spring-boot-run-backend/ 酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前, ...

  4. stm8时钟

    为使系统快速启动,复位后时钟控制器自动使用HSI的8分频(HSI/8)做为主时钟(2M).其原因为HSI的稳定时间短,而8分频可保证系统在较差的VDD条件下安全启动.一旦主时钟源稳定,用户程序可将主时 ...

  5. sessionId与cookie 的关系(百度文库)

    这篇文档讲的很清楚,推荐阅读 http://wenku.baidu.com/view/2ecf0b350b4c2e3f572763d1.html

  6. MySql 按周/月/日统计数据的方法

    知识关键词:DATE_FORMAT  select DATE_FORMAT(create_time,'%Y%u') weeks,count(caseid) count from tc_case gro ...

  7. kafka 集群的部署安装

    这里我们罗列一下我们的环境 10.19.18.88 zk1 10.19.16.84 zk2 10.19.11.44 zk3 这里公司需要接入kafka用于zipkin来定位调用链 kafka 的地址是 ...

  8. php分享三十一:编程中的一些特殊写法

    1:for for ( ; $i < $accept_l ; $i++ ) for($i = 0, $num = count($array); $i < $num; $i++) for ( ...

  9. log4j的正确使用姿势

    最近清明节,朋友公司的日志爆了,说控制台打得太满了,出了问题,早上4点多被喊去公司修改代码,他们把所有的日志全部在控制台打印了,结果就...我说日志这么做不可取啊,你们打印出来的内容太多啦,控制台没必 ...

  10. 不应直接存储或返回可变成员 Mutable members should not be stored or returned directly

    Mutable objects are those whose state can be changed. For instance, an array is mutable, but a Strin ...