易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 3860|回复: 0
收起左侧

Linux 6.5/6.4/6.3安装Munin服务器监控工具

[复制链接]
发表于 2016-8-25 09:16:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
Munin的介绍和原理

Munin 是一个服务器监控工具,基于perl写的,能通过网络,定期收集所有节点服务器的信息,将服务器的数据信息保存为 RRD 文件格式,并通过 RRDTool (也是perl写的) 绘制成图形和曲线,在web页面显示出来。可以监控计算机,服务,网络,SANS ,应用等。Munin(代表记忆,是奥丁神的一只乌鸦的名字)

工作方式:

Munin分为master和node

master只需安装在一台服务器上即可,它每5分钟去各个node采集信息,并使用RRD格式记录数据,绘制成图表" N$ a3 j: j: a# h0 E* t
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模块。4 v, N1 F2 b9 S" z2 D
#/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安装
# ?' b/ |; M2 I: g9 G. x2 n执行下面的命令:

RHEL/CentOS 6.x 的32位系统% m$ C2 g$ r: L$ u/ W
# rpm -ivh http://dl.fedoraproject.org/pub/ ... ease-6-8.noarch.rpm
RHEL/CentOS 5.x 的32位系统
0 J) d3 M' M$ `1 ~4 n8 ^# rpm -ivh http://dl.fedoraproject.org/pub/ ... ease-5-4.noarch.rpm

还有64位的系统等,见《centos安装EPEL第三方源的方法, [, L* k) C3 w, Z8 }5 N
因为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% X) D% W9 o( V) }# ^- I" N
munin的安装分为三个部分分别是:

master 服务器; E" p- r  `9 `4 K$ J9 E
node 被监控节点
6 F( E4 a; T! N4 Iplugins 插件(nginx的插件貌似munin的安装包中就有,不需要再下载了,反正我是没下载,直接安装好munin就可以得到监控图像了。)

而我这唯一一台vps既是作为监控服务器(master),又作为被监控的客户端(node节点)。
$ \. t2 D# p1 O* o% u, [! b% ?执行下面的命令:" D& a  b  X8 J# C' J& G
服务器端(master)安装:

# yum --enablerepo=epel -y install munin munin-node* u  `( q7 m6 C& a. ^
注:如果只是作为服务端,可以不安装munin-node

安装完成后,默认会创建以下文件:

/etc/munin/munin.conf : Munin master(服务器端) 配置文件.' X3 y8 ?2 ]% o! d
/etc/cron.d/munin : Munin 设置crontab计划任务文件.
3 O$ Y. L1 ^" d/etc/httpd/conf.d/munin.conf : Munin Apache 配置文件.# [  l3 W& k- Y
/var/log/munin : Munin log日志目录.
: N( H. U& m3 {% c! O9 a# Y, g/var/www/munin : Munin 网站目录.) K5 p/ V: ?+ [: h# @
/etc/munin/munin-node.conf : Munin Node节点配置文件(指定监控哪些节点).- Q- c/ D% H' \6 p$ c% u2 H
/etc/munin/plugins.conf : Munin plugins插件配置文件.
3 I9 ~  m* ]/ r/etc/rc.d/init.d/munin-node : Munin启动脚本  q' k& _; L4 G+ e2 l
/etc/munin/plugin-conf.d/munin-node

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

# crontab -e4 ?3 i( I' d, g: M
*/5 * * * * /usr/bin/munin-cron

注意:这个默认安装就已经设置了定时任务。可以在配置好后,通过munin的绘图统计曲线来判断是否在不间断的采集信息。

客户端(node)安装:

# yum --enablerepo=epel -y install munin-node

注意:如果要监控N台服务器,那么这N台服务器都只要装munin-node

第四步:配置munin和nginx
; E% i. r3 K, J: W; X/ b6 q5 P) W我给munin设置个vhost,直接用个指定的二级域名访问munin的监控页面,比如我的munin网站: http://test.dabu.info/munin

服务器端(master)配置web:

Nginx:: Q2 Q9 ?( }/ _9 M  w
这里使用 test.dabu.info 访问 munin网站$ V4 q- L6 S8 K+ B. t
新建个nginx的虚拟主机(Virtual Host ) ,将它的vhost配置文件中server{}段改成

server {0 m6 I' L& ]9 {& `; p# J! i- N
listen 80 ;
/ q' F$ B0 q: p2 N. t6 }8 Z& `access_log logs/server-access_log;
#设置访问munin的二级域名,当然也可以使用vps外网ip访问4 v; q. a$ ~+ @+ t% c) O  P* g0 ]
#但是我vps上设置了禁止ip访问网站
% v! P$ p5 T3 v0 \% W1 _: tserver_name test.dabu.info;
server_name_in_redirect off;% u3 q7 I. b/ e* b! q4 \
root /var/www/html;
# 设置密码来限制对munin网站的访问& d* d1 o* ?# ^# m, P  J, L+ A6 r
location /munin {
auth_basic "Administrator Login";/ i- U& Y% H$ N( [
auth_basic_user_file /var/www/.htpasswd;
6 j/ O/ B- p) `6 X/ R}
#下面是给vhost开启了http_stub_status_module模块
8 g) h/ }' g; C5 e#这段location其实放哪个server{}都可以,有的直接放到munin的虚拟机server{}一起 中
location /nginx_status {
stub_status on;
" [# t2 x1 ~" x7 g& ?/ {& S: W* Paccess_log off;  \1 N' V! X- O% I
#只准本机访问/nginx_status中的request统计信息1 s/ n3 V8 ]  P$ H% e
#如果没有下面两行,那么,别人就可以使用% a) F( T9 A, `! r" T1 U4 I
#http://test.dabu.info/nginx_status 看到nginx的request的信息了
  g/ G4 S( r# h: N#175.0.137.58是你的vps外网ip
9 Y; g0 x+ j; f7 a. u% |allow 175.0.137.58;
% t0 g1 l3 Q: D1 t$ D& M: P7 S# fdeny all;
}
}

注 意:如果你将 location /nginx_status{}段与munin虚拟主机配置文件分开,放入单独的server{}段中时,那么就要先新建一个虚拟主机来开启了 http_stub_status_module模块,将其server{} 改成下面的样子:

server9 u" L7 R- c2 m5 s  O
{7 Q3 B# l2 y- g% a, B! Q/ U% z
listen 127.0.0.1;
5 {) T5 P& F( v- s  u; v0 m& kserver_name localhost;
location /nginx_status {
stub_status on;3 z% l# }! ~6 a2 i( o; l
access_log off;7 W& ~. O% Y$ i' R
allow 127.0.0.1;8 o/ s9 e3 \. Y' w8 J# {
deny all;+ K+ @4 I+ [1 e$ B$ Z* n3 T( ]5 \
}
}

同时将munin虚拟机的server段改成:

server {) ?9 h: H! P" \* l
listen 80 ;/ h" N3 J  a( O5 Q! |. Z: j$ w
access_log logs/server-access_log;
server_name test.dabu.info;
server_name_in_redirect off;
) ^0 Q/ C5 F: h9 c' a5 C5 `* Uroot /var/www/html;
location /munin {6 D/ U) ?% G8 b4 e: r
auth_basic "Administrator Login";' D9 A- ?3 p6 c! C, s% j
auth_basic_user_file /var/www/.htpasswd;5 C0 E; D( ]6 @
}
}

此时,就只能本机访问 http://localhost/nginx_status 来得到nginx的request信息。

修改好后保存。接着重启nginx

#service nginx restart

Apache:

# vi /etc/httpd/conf.d/munin.conf

在文件末尾添加下面的内容:

<Directory /var/www/html/munin/>: k7 j6 Q6 Q. n1 H1 D& e9 `
Order Deny,Allow
! H2 f) I* x) U4 M( \( IDeny from all
/ o7 Z7 U- V. c& I& N  W9 {+ xAllow from 127.0.0.1 192.168.1.0/24# z. t# m& X* ~6 G0 m7 y
</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:" y' J* H2 Z6 L" m* ^; D- {9 P  ]
Re-type new password:3 p- S$ P7 x; o$ q- B
Adding password for user dabu

添加密码完成后,接着去设置munin的配置文件。http://test.dabu.info/munin是我安装的munin,账号:dabu ,密码:dabu1

为munin设置环境参数:8 }/ `# R. w2 O# `
编辑 /etc/munin/plugin-conf.d/munin-node 文件,这个配置文件的作用:+ t& C8 Q, C+ q8 p) N' a$ v
1.告诉munin去哪里获得参数& _7 X% F& v3 T3 U; ?5 E0 a
如监控nginx的时候,则需要将下面的内容添加到 /etc/munin/plugin-conf.d/munin-node 文件的后面。以此让munin从http_stub_status_module模块获取request等信息

a. location /nginx_status{}段在munin虚拟机的server{}中时,则增加下面的内容* g  G7 ?4 |+ d- x& z8 I0 e
[nginx*]2 c/ i1 y  l2 l3 G' j2 U
env.url http://test.dabu.info/nginx_status
b. location /nginx_status{}段单独放在一个server{}中时,则增加下面的内容5 `5 {# t0 J' T7 I+ V* a
[nginx*]. @, j* V$ j2 x2 k" d3 ^+ `% S
env.url http://localhost/nginx_status
或者直接执行下面的命令:
$ w6 \- k) g* }% M' a' v& u  {. n  ?#if [[ $(cat /etc/munin/plugin-conf.d/munin-node | grep "nginx") = "" ]]; then echo -e "\n[nginx*]\nenv.url http://test.dabu.info/nginx_status" >> /etc/munin/plugin-conf.d/munin-node; fi
3 R" a# a  j; a" [注:将 http://test.dabu.info/nginx_status 替换为你设定的访问request的网址

2.munin登陆软件的账号密码参数
) }( K* X( X! i如监控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
9 c- n+ d$ ]- @6 l& m* h  c#ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/ -v

远程监控多台服务器客户端(node):
0 l7 U: b9 O7 _; u假设我要采集192.168.1.10 、192.168.1.11 、192.168.1.12三台服务器的运行状况,则;

#vi /etc/munin/munin.conf

#增加需采集的node:

[luxiang2f;mysqlsrv]5 v, K8 G. `/ P2 L& `
address 192.168.1.10+ q0 n" |7 q# V; K  z
use_node_name yes
[luxiang3f;websrv]% }  [  H" g/ Y0 L  q
address 192.168.1.11
2 e$ g7 }" Y2 W& H) W' ^# Ause_node_name yes
[nanyuan2f;websrv]- J  E4 o6 D' h) d- `$ _
address 192.168.1.1
' U& D  s& n9 f8 Xuse_node_name yes
# 分号前是分组组名,分号后是节点名
' u4 f( k$ O; Z5 @# use_node_name yes表示使用上面定义的组名和节点名,否则会执行一次DNS查询,反查节点的DNS名称6 V0 s* U9 o& E+ o8 R
# address表示节点的ip地址
- U. ?3 Y. M, H( X( K# 在1.4.5版本,分组或产生错误,部分图表生成不了,懒得琢磨了,直接改为[websrvxxx]就可以成功了
2 g3 V" m. i, g- u0 |, {$ t#貌似,现在改成了 “. ” 来分隔组,而不是分号了。具体我也懒得试了。, b, k! x' a$ `
见官方文档:http://munin-monitoring.org/wiki/munin-node.conf
客户端(node)配置操作

允许服务端采集,假设服务端IP为192.168.1.10。同时,客户端node上要开放4949的tcp端口,这个端口可以在/etc/munin/munin-node.conf里指定。

a. 当一台vps既作为服务端,又作为客户端。则改操作还是要在服务端操作,执行下面的命令:
2 X7 o: }. b, R#vi /etc/munin/munin-node.conf
, ^+ i% A1 \. I& W( q可以看到默认有了 allow ^127\.0\.0\.1$ 这一行。说明当vps即作为服务端,又作为客户端。允许本机自己采集自己。所以,如果仅仅是自己监控自己,则不需要修改该配置文件了。
b. 当这台vps仅作为服务端,那么,就需要在客户端执行下面的命令:
! i) |$ C% _) N( h! y; Y/ |  @#vi /etc/munin/munin-node.conf) W& \+ @9 A# X+ v& L$ D4 G" n
在最下面的一行添加服务端ip,允许服务端来采集;/ E9 i+ \$ D6 ~' X4 H
allow ^192\.168\.1\.10$
% l9 M6 \" G' |- J; v记住都要以这个形式来写,更多写法介绍, /etc/munin/munin-node.conf 中都有介绍

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

#service munin-node restart  d9 |/ x2 d+ i9 \0 w& V) P( w7 _

) q4 b* q5 E* I4 b, B$ i#/etc/init.d/munin-node restart

加入服务并开机自启动:

#chkconfig --levels 235 munin-node onn

测试munin配置是否好了的方法:

[root@ksharpdabu ~]# munin-run nginx_request

显示:request.value 3

注意:; m! U, {9 a2 ]- W9 G1 t
a. 3表示我nginx瞬时收到的请求数。所以,你那可能不是3,是其他的数字。这个数字还可能时刻在变,毕竟不同时刻访问你 网站的人肯定不同。& U" q4 }% R, s, J, r( X$ j
b. 如果你得到的结果是 request.value U 。那么表示munin并没有采集到nginx的信息。你的munin的配置有问题。9 C: o4 J% W/ _9 k( U) `
c. 还有可能报其他错误,自己根据报错信息去google吧。

测试成功后,就可以直接访问 http://test.dabu.info/munin,查看服务器状况了。默认情况下,cpu,内存,硬盘,网络等都不需要再单独配置了,直接可以查看。


  Y, _7 ?2 |  _0 F( v
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 23:52 , Processed in 0.064128 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表