munin-因为plugin而亮

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

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_

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/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 a l l o w 1 92 \. 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/

目录
相关文章
|
人工智能 Java
零基础五步骤,从零开始天猫精灵
零基础五步骤,从零开始天猫精灵
1429 1
零基础五步骤,从零开始天猫精灵
|
机器学习/深度学习 自然语言处理 监控
简述智能对话系统
对话系统(Dialogue System,简称DS),是使人与机器可以通过自然语言进行对话交互的系统。DS除了用准确、简洁的自然语言回答用户用自然语言提出的问题外,更注重与人的交互、对人意图的理解、对对话氛围的感知,以及回答的多样性和个性化。
|
开发工具 芯片
踩坑:M1芯片Mac Book使用IDEA旗舰版卡顿问题
新开封的Mac Book安装IDEA开发工具出现操作卡顿,UI拖动迟缓问题解决方案:
踩坑:M1芯片Mac Book使用IDEA旗舰版卡顿问题
|
SQL Oracle 算法
Mybatis: 兼容Oracle数据库批量插入语句
当前项目需要在不同环境下部署,不同环境下有不同的数据库,有pg、oracle、mysql等,项目中的所有sql均为pg数据库相关的sql,由于oracle数据库比较特殊所以需要兼容相关的sql。批量插入的语句,pg和oracle有着较大的差别,不能同一条语句兼顾两种数据库:,所以需要查找方案来解决。
1307 0
|
存储 缓存 监控
eureka技术分享
上一篇文章《微服务零基础入门教学》,详细的介绍了微服务的大背景以及微服务架构的演进,我们还对各种解决微服务的方案进行了分析,今天就让我们正式开始微服务的实战环节:注册中心。 我打算将迄今为止常见的八种注册中心逐一展开介绍,首先讲解第一个大家最为熟知的注册中心——Eureka。
407 1
eureka技术分享
|
JSON 数据处理 数据安全/隐私保护
百宝箱,这款小工具能够覆盖95%的文件处理功能!
在日常工作和学习过程中,经常要和大量的文件处理打交道。 PDF、Word、Excel、TxT、图片....需要频繁的对这些文件进行转换、编辑、批量处理等操作。
百宝箱,这款小工具能够覆盖95%的文件处理功能!
|
中间件 Shell Go
EngineGroup:让 Flutter 桌面端引擎“飘”起来
EngineGroup:让 Flutter 桌面端引擎“飘”起来
937 0
EngineGroup:让 Flutter 桌面端引擎“飘”起来
|
缓存 Ubuntu Linux
阿里云DSW实例matplotlib中文字符支持问题
DSW默认并未安装中文字符集,在使用matplotlib换图图标使用到中文的时候,往往无法正常显示中文字符。下面通过下载字符集及代码指定的方式提供一种DSW作图支持中文字符集的方法。
22219 0
阿里云DSW实例matplotlib中文字符支持问题
|
开发工具 Android开发
关于Android studio 无线adb连接设备的方法
在开发过程中,真机调试,往往需要依赖USB数据线,使用无线adb,我们可以抛开USB数据线,在USB数据线找不到的请况下,也可以保证测试机与电脑处于连接状态,照样可以调试测试。
1021 1
|
安全 5G 网络性能优化
5G NR系统架构
5G网络的频率要比4G网络高,覆盖半径相较4G更小,5G网络基站密度比4G高,使得5G网络建设成本更高。因此NSA非独立组网被纳入考虑,4G与5G联合组网,可以有效减少5G推广压力。
889 0
5G NR系统架构