老生常谈–监控 很远很久以前,看到过运维的同事在搞监控系统,自己这个苦逼的开发也在有空闲的时间里面,玩玩而已。
服务器是用了腾讯云的,裸机~~,系统是ubuntu的。 参考了idevit
INSTALL NAGIOS 这次的安装是源码安装,现在ubuntu的apt-get安装了nagios还是3版本的,所以还是多折腾,去下载源码咯。 先安装一些依赖的软件:
1 apt-get install libperl-dev libpng12-dev libgd2-xpm-dev build-essential php5-gd wget nginx spwan-fcgi fcgiwrap php5-fpm
本次的安装时4.1.1版本的。
1 2 wget https:// assets.nagios.com/downloads/ nagioscore/releases/ nagios-4.1 .1 .tar.gz wget http:// www.nagios-plugins.org/download/ nagios-plugins-2.1 .1 .tar.gz
下载解压到服务器之中~
创建用户nagios和用户组nagcmd
1 2 3 4 - - - - - - - - - - - - - - -
配置nagios源码安装:
1 2 3 4 5 6 7 8 9 cd nagios-4.1.1./configure --prefix /usr/local/nagios --sysconfdir=/etc/nagios --with-command-user=nagios --with-command-group=nagcmd make all make install make install-init make install-config make install-commandmode
安装完毕之后,这时候你可以把安装包里面的插件cp过来
1 2 cp -rvf contrib/eventhandlers/ /usr/ local/nagios/ libexec/ chown -R nagios: nagios /usr/ local/nagios/ libexec/eventhandlers
nagios需要验证用户的权限,由于本次安装不想使用apache,选用了nginx,所以这次是通过以下的命令来生产用户验证的文件的。
1 2 3 wget http: chmod +x htpasswd.py htpasswd.py -c -b /etc/nagios/htpasswd.users nagiosadmin password
这里的nagiosadmin是用户名,而password是密码,如果想要重新修改用户名的话,需要在/etc/nagios/cfg.cfg文件中加入权限。 比如用户名是catlittlechen的话,可以修改成下面这样子
1 authorized_for_system_information =nagiosadmin,catlittlechen
安装下nagios官方提供的插件
1 2 3 4 cd nagios-plugins-2.1.1./configure --with-nagios-user=nagios --with-nagios-group=nagios make make install
之后可以通过执行下面的指令来验证下是否成功的配置了nagios
1 /usr/ local/nagios/ bin/nagios -v / etc/nagios/ nagios.cfg
启动的时候,这边的找了下,发现在/etc/rc.d/下,有一个nagios的脚本,就链接过来了/etc/init.d/nagios,然后就可以执行下面的命令启动来。
弱弱的说,nginx配置在最下面~
INSTALL GANGLIA 安装ganglia只是为了便捷的弥补下nagios只有定时检测的特性,当然,你可以尝试安装pnp4nagios来完成这个功能,但是ganglia更加的强大一些,而且真得简单啊。 命令:
1 apt-get install -y ganglia-monitor rrdtool gmetad ganglia-webfrontend
这时候需要修改两个地方的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 vim /etc/ganglia/gmetad.conf data_source "cat chen" localhost vim /etc/ganglia/gmond.conf cluster { #name = "unspecified" name = "cat chen" owner = "unspecified" latlong = "unspecified" url = "unspecified" } udp_send_channel { #mcast_join = 239.2.11.71 host = localhost port = 8649 ttl = 1 } udp_recv_channel { #mcast_join = 239.2.11.71 port = 8649 #bind = 239.2.11.71 }
然后执行下面的语句重启下服务
1 service ganglia-monitor restart && service gmetad restart
杠杠的,ganglia就这么搞定了~ 这里为了习惯问题,我还执行了以下的命令
1 2 cp -r /usr/ share/ganglia-webfrontend/ /var/ www/ mv /var/ www/ganglia-webfrontend / var/www/ ganglia
Nagios && Ganglia 最后,当然是配合ganglia和nagios了。
1 2 3 4 git clone https: //github.com /ganglia/monitor-core/ cp monitor-core/contrib/check_ganglia.py /usr/local/nagios/libexecchown nagios:nagios check_ganglia.py chmod +x check_ganglia.py
为了让nagios可以使用这个插件,需要在command配置中加入以下的配置
1 2 3 4 5 vim /etc/nagios/objects/commands.cfg define command { command_name check_ganglia command_line $USER1 $/ check_ganglia.py -h $HOSTNAME $ -m $ARG1 $ -w $ARG2 $ -c $ARG3 $ }
然后就可以在配置项目里面配置相应的监控目标,比如我简答的配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 vim /etc/nagios/objects/localhost.cfg define service { use local-service host_name localhost service_description Ganglia Bytes Out check_command check_ganglia!bytes_out!80000!100000 } define service { use local-service host_name localhost service_description Ganglia Disk Free check_command check_ganglia!disk_free!20!10 }
更加详细的配置,好书推荐,可以参考下nagios_cn
nginx配置: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 server { listen 10086 server_name nagios.catlittlechen.com; access_log /var/log/nginx/nagios.access.log; error_log /var/log/nginx/nagios.error .log; auth_basic "Restricted Nagios Area!" ; auth_basic_user_file /etc/nagios/htpasswd.users; root /var/www; index index.php index.html; location /nagios { index index.php; alias /usr/local/nagios/share/; } location /ganglia { index index.php index.html index.htm; } location ~ ^/nagios/(.*\.php)$ { alias /usr/local/nagios/share/$1 ; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; } location ~ \.cgi$ { root /usr/local/nagios/sbin/; rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1 .cgi break ; fastcgi_param AUTH_USER $remote_user ; fastcgi_param REMOTE_USER $remote_user ; include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location ~ \.php$ { include /etc/nginx/fastcgi.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; } location ~ /\.ht { deny all; } }
晒图,别吐槽我的垃圾服务器