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

  • [Linux实用工具]Linux监控工具munin的安装和配置
  • [Linux实用工具]Linux监控工具munin的展示(Nginx)
这次介绍一下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=shif [ "$1" = "autoconf" ]; thengrep -q '^Threads' /proc/$$/status && echo "yes" || echo "no"exit 0
fiif [ "$1" = "config" ]; thenecho '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 0
figrep -s '^Threads' /proc/[0-9]*/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/shkeyword=munin-nodecase $1 in(config)cat <<'EOM'
graph_title MY_TITLE
graph_vlabel (%)
graph_args --base 1000 -l 0
graph_scale no
graph_category MY_CATEGORY
EOM
ps aux | grep $keyword | grep -v grep | awk '{print $3,$4}' | while read cpu mem
doecho "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"doneexit 0;;
esac
ps aux | grep $keyword | grep -v grep | awk '{print $3,$4}' | while read cpu mem
doecho "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。具体的监控完全可以自定义。譬如我假设有访问游戏服在线人数的接口,我也可以拿出来监控,当在线人数超过多少的时候给予相关提示。

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

  • munin的安装和配置
  • munin的展示(Nginx)
  • munin插件配置和插件编写
  • 本文转自 Ron Ngai 博客园博客,原文链接: http://www.cnblogs.com/rond/p/3804345.html ,如需转载请自行联系原作者

[Linux实用工具]munin-node插件配置和插件编写相关推荐

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

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

  2. 【Flutter】Flutter 拍照示例 ( Flutter 插件配置 | Flutter 插件源码示例 | iOS 应用配置 | Android 应用配置 )

    文章目录 一.Flutter 插件配置 二.Flutter 插件源码示例 三.iOS 应用配置 四.Android 应用配置 五.相关资源 一.Flutter 插件配置 Flutter 拍照示例中 , ...

  3. 【工具】13 款 Linux 实用工具推荐,个个是神器!(附下载链接)

    本文介绍几款Linux比较实用的工具,希望有所帮助. 1.查看进程占用带宽情况-Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽. 下载:http://s ...

  4. 13 款 Linux 实用工具推荐,个个是神器!

    点击上方"民工哥技术之路",选择"设为星标" 回复"1024"获取独家整理的学习资料! 本文介绍几款Linux比较实用的工具,希望有所帮助. ...

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

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

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

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

  7. linux 主机上的串口工具,Linux实用工具-kermit使用总结

    kermit 功能 一个串口传工具.可以传送文件. 用于pc串口通信. 描述 C-kermit是一款集成了网络通信.串口通信的工具,它有如下多种功能: 支持kermit文件传输协议 自定义了一种脚本语 ...

  8. linux内核 quota,Linux实用工具-quota磁盘配额管理

    Linux可以使用quota进行配额管理. 磁盘配额功能需内核支持,挂载之时需指定特定的选项. 配额按分区分配,不同用户在不同分区,对应不同配额. 如果没有为对应用户设置相应配额,则该用户没有限制. ...

  9. 【Linux工具】13款Linux实用工具

    文章目录 前言 1.查看进程占用带宽情况-Nethogs 2.硬盘读取性能测试-IOZone 3.实时监控磁盘IO-IOTop 4.网络流量监控-IPtrafIPtraf是一个运行在Linux下的简单 ...

最新文章

  1. 深度学习中的线代基础
  2. 搭建selenium + Python环境的总结:
  3. 055_Descriptions描述列表
  4. 【新星计划】汽车纵向动力学模型
  5. 【转】上篇:陈皓谈程序员升级:职业规划就像软件工程
  6. python里面返回上一步_Python中的这3个骚操作你会吗?
  7. VTK:高亮选择动画用法实战
  8. 指针08:指针配合数组和函数
  9. 社交网络影响力最大化基础知识总结
  10. poi合并单元格,没有样式
  11. 【PHP基础】实现PHP与SQL数据库的连接
  12. Excel冻结多行多列
  13. 【AMAD】django-filer -- 一个管理文件和图片的django app
  14. 如何进行Sublime Text插件的升级和卸载?
  15. SAS常用基础代码例子-数据描述性分析
  16. studio one 3 机架声道设置_PotPlayer:最强电脑影音视频播放器 | 附基础设置和精美皮肤推荐...
  17. 过拟合现象,原因,以及降低过拟合的方法
  18. 汇编jmp指令的理解与用法
  19. MobCtrl万能遥控-手机控制电脑软件简介[官方]
  20. Java反射 Class类常用方法详解

热门文章

  1. LaTeX 科技排版 课程
  2. 美团酒店Node全栈开发实践
  3. 统计之都统计分析和R语言方面的图书
  4. GMM-HMM语音识别模型 原理篇
  5. 将vim打造成IDE编程环境
  6. k-d tree算法
  7. 查看电脑主板的最大支持内存
  8. 【OpenCV3】模板匹配——cv::matchTemplate()详解
  9. 设置 Nuget 本地源、在线私有源、自动构建打包
  10. 用户案例 - 3Cs