工作方式:

Munin分为master和node

master只需安装在一台服务器上即可,它每5分钟去各个node采集信息,并使用RRD格式记录数据,绘制成图表
node安装在各个被监控的服务器上,node上可以配置许多plugin,每个plugin有不同的职责,负责获取服务器各种不同的信息。

Munin服务端,在节点超过20台左右的时候,资源占用会非常大,所以,如果服务器较多的话还是用Nagios之类的比较好

安装Munin:
建议使用Yum安装,省事方便,使用rpmforge源

服务器端(master):

yum -y install munin munin-node

客户端(node):

yum -y install munin-node

服务端不会添加任何service,但是会自动添加一个cron任务,每5分钟采集一次node的信息,如果没有添加可以手动加入:

shell>> crontab -e 
*/5 * * * * /usr/bin/munin-cron

配置Munin:
服务端:

vi /etc/munin/munin.conf

#增加需采集的node:

[luxiang2f;mysqlsrv]
address 192.168.8.11
use_node_name yes

[luxiang3f;websrv]
address 192.168.8.12
use_node_name yes

[nanyuan2f;websrv]
address 192.168.8.12
use_node_name yes

# 分号前是分组组名,分号后是节点名
# use_node_name yes表示使用上面定义的组名和节点名,否则会执行一次DNS查询,反查节点的DNS名称
# address表示节点的ip地址
# 在1.4.5版本,分组或产生错误,部分图表生成不了,懒得琢磨了,直接改为[websrvxxx]就可以成功了
.....

客户端:

vi /etc/munin/munin-node.conf

#最下面增加一行,允许服务端采集,假设服务端IP为192.168.8.10

allow ^192\.168\.8\.10$

然后再客户端和服务端都启动服务:

/etc/init.d/munin-node start

加入服务并开机自启动:

chkconfig --add munin-node
chkconfig munin-node on

最后,在服务端上配置web,按默认的安装路径来的话:

在web配置文件里增加一个alias,以apache为例:

alias /munin /var/www/munin

再加上一个验证:

<Directory /var/www/munin/>
   AuthType Basic
   AuthName "Munin View Need PassWord"
   AuthUserFile /etc/htpasswd.file
   Require user xxx
</Directory>

ok,至此完工,可以通过:http://servername/munin查看状态了

安装插件:

安装mysql_querys

ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries

添加mysql用户

mysql> GRANT USAGE ON *.* TO '{username}'@'%'  IDENTIFIED BY '{password}';

修改配置文件

vi /etc/munin/plugin-conf.d/munin-node.conf

env.mysqlopts -u {username} -p{password}
# 如果将Mysql 添加到PATH,不需要下面这行指定
# env.mysqladmin /usr/local/mysql/bin/mysqladmin

执行munin-run mysql_queries,如果返回数据则正常,提示缺少Cache:cache的话,则安装:

yum install perl-Cache-Cache perl-IPC-ShareLite

安装Nginx插件

前提是nginx安装了ngx_httpd_stub_status模块,如果没有的话,重新编译安装
另外需要安装perl-libwww

yum -y install perl-libwww-perl

然后在nginx里新建一个虚拟主机:

server {
       listen 127.0.0.1;
       server_name localhost;
       location /nginx_status {
               stub_status on;
               access_log   off;
               allow 127.0.0.1;
               deny all;
       }
 }

ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status

执行munin-run nginx_status查看是否成功

如果想要在web端实时看到图标,需手动执行munin-cron,如果提示不允许用root执行的话,可以:

su munin --shell=/bin/bash

然后再次

munin-cron

即可

补充:
节点上要开放4949的tcp端口,这个端口可以在/etc/munin/munin-node.conf里指定