马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
Munin的介绍和原理Munin 是一个服务器监控工具,基于perl写的,能通过网络,定期收集所有节点服务器的信息,将服务器的数据信息保存为 RRD 文件格式,并通过 RRDTool (也是perl写的) 绘制成图形和曲线,在web页面显示出来。可以监控计算机,服务,网络,SANS ,应用等。Munin(代表记忆,是奥丁神的一只乌鸦的名字) 工作方式:Munin分为master和node master只需安装在一台服务器上即可,它每5分钟去各个node采集信息,并使用RRD格式记录数据,绘制成图表$ P, s; G& i. n4 Y
node安装在各个被监控的服务器上,node上可以配置许多plugin,每个plugin有不同的职责,负责获取服务器各种不同的信息。 Munin服务端,在节点超过20台左右的时候,资源占用会非常大,所以,如果服务器较多的话还是用Nagios之类的比较好(这个倒是没试过件监控那么多服务器)。 如何在CentOs ,RHEL ,Fedora上安装 munin我最近刚从centos6.4 升级到centos 6.5版本。在CentOS,RHEL,Scientific Linux 6.5/6.4/6.3/6.X ,其中x代表小版本更新。只要属于 6.x的都可以使用epel源进行在线安装。 前提一:我这安装munin的前提是已经安装了 lnmp环境。所以,你可以先安装军哥lnmp,然后再按照我的教程安装mumin。 前提二:因为我手头只有一台vps,所以既是作为监控服务器(master),又作为被监控的客户端(node节点)。当然,我也会在教程里插入监控多个服务器节点的方法。 前提三:确认你的nginx加载了http_stub_status_module模块。
' z) r' F: {# ~4 j#/usr/local/nginx/sbin/nginx -v //查看nginx版本 #/usr/local/nginx/sbin/nginx -V //这里-V是大写。查看nginx的编译参数,看看里面有哪些模块。如果输出的结果中有 --with-http_stub_status_module 文字,则说明含http_stub_status_module模块。满足前提三了。如果没有http_stub_status_module,则重新编 译安装下nginx即可。(军哥的lnmp是已经默认安装了),也可以组合grep命令来查看。
第一步: 为CentOs,RHEL,Fedora安装/ |, X' h% }- [0 W# T% D
执行下面的命令: 还有64位的系统等,见《centos安装EPEL第三方源的方法》
" s2 ^. w* \' _7 X- n5 t因为epel源中的epel-release-6-8.noarch.rpm只保留最新的版本。所以,很可能你看到这篇文章的时候,epel- release-6-8.noarch.rpm 已经不存在了。这时候,你就要自己的系统版本及系统是否32位来自己去http://dl.fedoraproject.org/pub/epel/目录 下找到最新的epel-release-x-x.noarch.rpm 。只要你的系统是6.x的就可以安装 epel-release-6-x.noarch.rpm 。同理,对于 centos5.x也可以安装 的epel-release-5-x.noarch.rpm 。 对于Fedora用户来说,就不需要手动安装epel源了,因为 munin 已经包括在fedora的软件库中,可以直接yum安装。 第二步:安装mumin% q; z7 d0 D2 w0 C9 U
munin的安装分为三个部分分别是: master 服务器
- p" N& T7 q. d2 Q. y& Wnode 被监控节点
# \7 U; q; _4 K' [; H4 Hplugins 插件(nginx的插件貌似munin的安装包中就有,不需要再下载了,反正我是没下载,直接安装好munin就可以得到监控图像了。)
而我这唯一一台vps既是作为监控服务器(master),又作为被监控的客户端(node节点)。$ v; {# T% H, s% i
执行下面的命令:" \$ d5 Z7 P; I n0 N+ p8 n
在服务器端(master)安装: # yum --enablerepo=epel -y install munin munin-node) l& k8 d. \ ^7 y, L
注:如果只是作为服务端,可以不安装munin-node
安装完成后,默认会创建以下文件: /etc/munin/munin.conf : Munin master(服务器端) 配置文件.: q! k# w' A! p9 p
/etc/cron.d/munin : Munin 设置crontab计划任务文件., i/ b! y% j! z- C0 ^: t
/etc/httpd/conf.d/munin.conf : Munin Apache 配置文件.3 h5 D5 \7 x+ n' l( W
/var/log/munin : Munin log日志目录.
8 S" R0 b7 T! i @0 k/var/www/munin : Munin 网站目录.% [% W/ d* t7 p0 Q
/etc/munin/munin-node.conf : Munin Node节点配置文件(指定监控哪些节点).
8 w4 P( q: g( c! D$ z% S, P/etc/munin/plugins.conf : Munin plugins插件配置文件.- @7 V/ `+ P$ i4 w
/etc/rc.d/init.d/munin-node : Munin启动脚本
8 C: x* k0 Z$ f# p l5 N/etc/munin/plugin-conf.d/munin-node
服务端master不会添加任何service,但是会自动添加一个cron任务,每5分钟采集一次node的信息,如果没有添加可以手动加入: # crontab -e: n4 J+ t( w9 @: G K4 I$ [
*/5 * * * * /usr/bin/munin-cron
注意:这个默认安装就已经设置了定时任务。可以在配置好后,通过munin的绘图统计曲线来判断是否在不间断的采集信息。 在客户端(node)安装: # yum --enablerepo=epel -y install munin-node
注意:如果要监控N台服务器,那么这N台服务器都只要装munin-node 第四步:配置munin和nginx
/ b- w2 w3 ^, \$ f我给munin设置个vhost,直接用个指定的二级域名访问munin的监控页面,比如我的munin网站: http://test.dabu.info/munin 服务器端(master)配置web:Nginx:8 J9 V; K; C/ M' s
这里使用 test.dabu.info 访问 munin网站, d3 q9 ]1 {2 _4 ?) {; o
新建个nginx的虚拟主机(Virtual Host ) ,将它的vhost配置文件中server{}段改成 server {
$ ]3 S1 j+ I* E' ?0 vlisten 80 ;
. v! A* G( `2 G, V! h/ s8 F5 zaccess_log logs/server-access_log; #设置访问munin的二级域名,当然也可以使用vps外网ip访问
/ h4 E G% c% m: u#但是我vps上设置了禁止ip访问网站
0 N! i) ^; z& a8 |server_name test.dabu.info; server_name_in_redirect off;- O" I2 T& d* ~% C( v5 y
root /var/www/html; # 设置密码来限制对munin网站的访问
5 D3 ?' \1 a! K. v6 _location /munin { auth_basic "Administrator Login";4 Z2 c# Q6 f7 c5 p' z
auth_basic_user_file /var/www/.htpasswd;
9 t4 V( A0 X3 {# y: p} #下面是给vhost开启了http_stub_status_module模块
- S9 m$ q& K$ ^& S#这段location其实放哪个server{}都可以,有的直接放到munin的虚拟机server{}一起 中 location /nginx_status { stub_status on; 1 z# h) F2 n; `. K! X
access_log off;
) Z/ |0 W7 H( o- R/ _& n#只准本机访问/nginx_status中的request统计信息 - p4 @$ K* J' G6 T5 J
#如果没有下面两行,那么,别人就可以使用 0 |: s8 J# K4 o+ e, t' A1 x* e B4 `( _
# http://test.dabu.info/nginx_status 看到nginx的request的信息了 3 N' g0 d9 i: p" B
#175.0.137.58是你的vps外网ip ' S$ Y2 J1 |( q
allow 175.0.137.58; 7 ?7 o' A8 A, X2 F4 n6 F
deny all; } }
注 意:如果你将 location /nginx_status{}段与munin虚拟主机配置文件分开,放入单独的server{}段中时,那么就要先新建一个虚拟主机来开启了 http_stub_status_module模块,将其server{} 改成下面的样子: server: U& S# v2 X9 \/ `! S9 ^
{
( q+ r3 r/ R# P. Y" k; O$ J/ V8 K. plisten 127.0.0.1;
5 z' j( a( j! M' T2 P9 C1 Zserver_name localhost; location /nginx_status { stub_status on;
1 A' F8 e; s0 H2 s( \2 M c/ F$ c0 Uaccess_log off;& r( W$ `8 {1 E/ m# n8 e
allow 127.0.0.1;" S/ L# H: l3 ]4 c( | B+ D
deny all;2 t# L3 J* l4 S4 i
} }
同时将munin虚拟机的server段改成: server {) S3 R. K1 n7 Y" d9 E
listen 80 ;
7 w* ]1 `* M R& z q" aaccess_log logs/server-access_log; server_name test.dabu.info; server_name_in_redirect off;
/ q W e3 N8 @/ \9 z9 I3 }& Proot /var/www/html; location /munin {$ {& x8 P+ ?6 d$ ?$ @8 A
auth_basic "Administrator Login"; W( F% L8 n9 C, d3 p
auth_basic_user_file /var/www/.htpasswd;
' F; @- ~+ B8 |6 d$ A! k' M# N} }
此时,就只能本机访问 http://localhost/nginx_status 来得到nginx的request信息。 修改好后保存。接着重启nginx #service nginx restart
Apache: # vi /etc/httpd/conf.d/munin.conf
在文件末尾添加下面的内容: <Directory /var/www/html/munin/># @* H7 @' U) h- ]5 T5 q& Q
Order Deny,Allow5 r' Q, f3 J( y$ o& A2 V
Deny from all0 H2 w8 ^+ T$ l3 k F
Allow from 127.0.0.1 192.168.1.0/24
! J% Q" j& e! D& R7 C</Directory>
同样要重启apache: #service httpd restart
现在,你可以使用 http://test.dabu.info/munin 访问 munin的网页了。但是因为使用账号密码限制访问,所以,我们还要去设置访问密码。 设置访问网站的账户和密码:yum安装munin默认的munin网站文件目录是在/var/www/html/munin中。为munin目录创建一个用户密码,执行命令: #htpasswd -c /var/www/.htpasswd dabu //新建一个叫dabu的用户
然后就会显示下面的,让你设置密码,输入两次密码(密码不会显示的): New password:
& w6 I3 q3 i v0 o% Q; {, G$ _Re-type new password:1 _! C& X7 v& H7 Y7 Y* p
Adding password for user dabu
添加密码完成后,接着去设置munin的配置文件。http://test.dabu.info/munin是我安装的munin,账号:dabu ,密码:dabu1 为munin设置环境参数:
) Y' ~- P& [' f7 w编辑 /etc/munin/plugin-conf.d/munin-node 文件,这个配置文件的作用:" q& H, P& S f7 w4 W2 A) A
1.告诉munin去哪里获得参数
0 F: {5 {5 f& b. P如监控nginx的时候,则需要将下面的内容添加到 /etc/munin/plugin-conf.d/munin-node 文件的后面。以此让munin从http_stub_status_module模块获取request等信息 b. location /nginx_status{}段单独放在一个server{}中时,则增加下面的内容
9 C5 N* C$ i3 P) ? a) L[nginx*]
' i+ V& f4 R6 e( F4 T- Z' l( wenv.url http://localhost/nginx_status
2.munin登陆软件的账号密码参数
& E- n3 o& Q- [3 R如监控mysql等,就是需要告诉munin登陆mysql的账号密码,甚至mysql路径等 将munin的两个插件:nginx_request 和 nginx_status 软链到 /etc/munin中。当然官方给了快速配置插件的脚本,运行命令: #munin-node-configure --shell --families=contrib,auto | sh -x
如果软连接没创建成功,自己手动执行下面两个命令: #ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/ -v; a0 @# F3 P& d! A
#ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/ -v
远程监控多台服务器客户端(node):0 [7 f4 y" j: u5 W# q2 O
假设我要采集192.168.1.10 、192.168.1.11 、192.168.1.12三台服务器的运行状况,则; #vi /etc/munin/munin.conf
#增加需采集的node: [luxiang2f;mysqlsrv]
+ a( }5 O& n3 G Taddress 192.168.1.10
# W3 v6 {/ M: y* q% _$ `use_node_name yes [luxiang3f;websrv]3 d* Q; V2 x1 M: P/ ~/ w
address 192.168.1.11
0 k& p# N5 U8 @7 J2 zuse_node_name yes [nanyuan2f;websrv]
6 X1 a& x) {3 I$ b0 s7 P& xaddress 192.168.1.1/ [5 B: e: |! Y8 r& b) ?3 y
use_node_name yes # 分号前是分组组名,分号后是节点名 ! X$ a* G: r4 g
# use_node_name yes表示使用上面定义的组名和节点名,否则会执行一次DNS查询,反查节点的DNS名称 - T1 w# \3 H& h; t& I. }% \( l
# address表示节点的ip地址
/ }& ~4 I M3 D' S7 c! m# 在1.4.5版本,分组或产生错误,部分图表生成不了,懒得琢磨了,直接改为[websrvxxx]就可以成功了
+ |0 V) S0 e4 y/ S: c#貌似,现在改成了 “. ” 来分隔组,而不是分号了。具体我也懒得试了。 . W+ g3 ~! ?, g3 j- {7 `. l& T
见官方文档: http://munin-monitoring.org/wiki/munin-node.conf 客户端(node)配置操作:允许服务端采集,假设服务端IP为192.168.1.10。同时,客户端node上要开放4949的tcp端口,这个端口可以在/etc/munin/munin-node.conf里指定。 a. 当一台vps既作为服务端,又作为客户端。则改操作还是要在服务端操作,执行下面的命令:: z( ]* z% }0 C. \9 X7 \/ r
#vi /etc/munin/munin-node.conf2 z8 H) {+ x, @9 F; ^2 z& |. R
可以看到默认有了 allow ^127\.0\.0\.1$ 这一行。说明当vps即作为服务端,又作为客户端。允许本机自己采集自己。所以,如果仅仅是自己监控自己,则不需要修改该配置文件了。 b. 当这台vps仅作为服务端,那么,就需要在客户端执行下面的命令:
3 `* C k1 @( A2 I! m2 G9 V+ O#vi /etc/munin/munin-node.conf
& S7 q! ^9 V4 ~3 t% B在最下面的一行添加服务端ip,允许服务端来采集;. e6 O: K5 O$ V* C; N. \: T' }
allow ^192\.168\.1\.10$0 k _6 [) i4 f1 p6 [( l* Y# A
记住都要以这个形式来写,更多写法介绍, /etc/munin/munin-node.conf 中都有介绍
然后再服务端和客户端都重启服务: #service munin-node restart
0 X; M7 h+ H! H. X0 ^# L3 W( o* q或
+ k$ z0 o1 ^( U: _8 M#/etc/init.d/munin-node restart
加入服务并开机自启动: #chkconfig --levels 235 munin-node onn
测试munin配置是否好了的方法: [root@ksharpdabu ~]# munin-run nginx_request
显示:request.value 3 注意:& u1 k9 y9 ?/ Y* F" W
a. 3表示我nginx瞬时收到的请求数。所以,你那可能不是3,是其他的数字。这个数字还可能时刻在变,毕竟不同时刻访问你 网站的人肯定不同。4 p( Z- i( ^ C0 \5 X
b. 如果你得到的结果是 request.value U 。那么表示munin并没有采集到nginx的信息。你的munin的配置有问题。
7 G7 [% h* }, @c. 还有可能报其他错误,自己根据报错信息去google吧。
测试成功后,就可以直接访问 http://test.dabu.info/munin,查看服务器状况了。默认情况下,cpu,内存,硬盘,网络等都不需要再单独配置了,直接可以查看。 % e; y( u3 B3 m1 V, z
|