设为首页 收藏本站
查看: 7388|回复: 0

icinga实战安装部署及短信报警脚本

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-9 09:59:30 | 显示全部楼层 |阅读模式
icinga安装配置
一、icinga介绍:
    ICINGA项目是 由Michael Luebben、HendrikBacker和JoergLinge等人发起的,他们都是现有的Nagios项目社区委员会的成员,他们承诺,新的开源项目将完全兼容以前的Nagios应用程序及扩展功能。在新项目的网站上,他们是如此定义ICINGA的,这将是一个介于Nagios社区版和企业版间的产品。特别将致力于解决Nagios项目现在的问题,比如不能及时处理Nagios项目的bug、新功能不能及时添加等。还有在新的ICINGA项目中,将更好的实现数据库集成方面的功能,标准化第三发应用程序的接口等。
环境:操作系统是Centos 6.4 64位版本
二.软件下载
    Icinga在http://sourceforge.net/projects/icinga-cn/files/?source=navbar下载,我下载的是集成pnp4的版本,可以用Icinga收集到的数据用rrd作图并显示.另外,还需要下载对应的Plugins的包,这个是Icinga监控/检查必须用到的.没有Plugins,Icinga就是空架子

三.软件安装
3.1 系统必要组件
a.编译需要用到的工具,类库     
yum install gcc glibc glibc-common gdgd-devel
yum install libjpeg libjpeg-devel libpnglibpng-devel
yum install rrdtool rrdtool-develperl-rrdtool perl perl-devel
b.LAMP套件

yum install httpd mysql mysql-server libdbilibdbi-devel libdbi-drivers libdbi-dbd-mysql php php-gd php-mysql
php组件可以根据需要自行添加需要的扩展

3.2 开始安装Icinga
a.创建Icinga用户以及用户组.
/usr/sbin/groupadd icinga
/usr/sbin/useradd -m icinga
passwd icinga
/usr/sbin/usermod -a -G icinga apache
b.解压下载的icinga-pnp4-cn-1.8.4.tar.bz2,然后进入解压的目录,执行:

./configure --prefix=/usr/local/icinga--with-icinga-user=icinga --with-icinga-group=icinga --with-command-user=icinga--with-command-group=icinga --enable-idoutils--with-httpd-conf=/etc/httpd/conf.d --enable-nanosleep --enable-event-broker
configure程序会自动检测系统的环境,以及所依赖的包是否都安装上了.没有报错,执行以下操作:

make all
make install
make install-init
make install-config
make install-eventhandlers
make install-commandmode
make install-idoutils
make install-processperfdata
make install-plugins
make install-webconf
chkconfig --add icinga
chkconfig --add ido2db
chkconfig icinga on
chkconfig ido2db on
让icinga服务在下次服务器启动的时候,自动运行.以后需要启动/关闭Icinga服务的时候,可以通过service icinga [start|stop|restart]来进行,很方便.
idoutils支持mysql,PGsql,Oracle等数据库,默认支持mysql.
启动mysql服务,运行以下命令来创建icinga数据库,并给icinga数据库用户授权.
mysql -u root -p
CREATE DATABASE icinga;
GRANT USAGE ON icinga.* TO'icinga'@'localhost'
IDENTIFIED BY 'icinga'
WITH MAX_QUERIES_PER_HOUR 0
MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0;
GRANT SELECT, INSERT, UPDATE, DELETE, DROP,CREATE VIEW, INDEX, EXECUTE
ON icinga.* TO 'icinga'@'localhost';
FLUSH PRIVILEGES;
quit
mysql -u root -p icinga < mysql.sql
来导入数据库.
d.安装插件.
没有插件,Icinga只是一个空架子,现在我们来编译安装插件.用tar解压下载得到的icinga(nagios)-cn-plugins-1.4.16.tar.bz2,然后执行以下命令.注意,文件名中的()需要用\(和\)来转义.我是直接先将文件名mv更名之后,用tar解压缩的.  
./configure --prefix=/usr/local/icinga --with-cgiurl=/icinga/cgi-bin --with-icinga-user=icinga --with-icinga-group=icinga

make
make install
    另外,在icinga中文项目的plugins里面,新增加了一个addplugins-20130428.tar.gz包,里面有很多新的check组件,然后解压,进入解压直接makeinstall就可以了.
    安装完成Icinga插件之后,就可以启动apache,ido2db,icinga服务了.
    在用浏览器访问icinga之前,用命令 添加用户web认证用户,命令会提示输入密码,并要求再次输入一次确认.
htpasswd -c /usr/local/icinga/etc/htpasswd.users icingaadmi   
用浏览器访问了.浏览器输入http://192.168.2.18/icinga   输入htpasswd命令创建的icingaadmin用户名:icingaadmin和密码:%TGB^YHN,可以看到Icinga的界面.

三、配置实例
配置实例:icinga服务端172.31.2.18 客户端172.31.2.14 ,其他客户端与2.14一样
服务端:/usr/local/icinga/icinga.cfg添加客户端配置文件
添加内容:cfg_file=/usr/local/icinga/etc/files/2.14.cfg
#mkdir /usr/local/icinga/etc/files/
客户端内容如下:
#vi  cfg_file=/usr/local/icinga/etc/files/2.14.cfg
define host{
       use                 linux-server           
       host_name               2.14
       alias                   mobile
       icon_image              redhat.gif
       statusmap_image         redhat.gd2
       address                172.31.2.14
       }
define service{
       host_name                         2.14
       use                            generic-service
       service_description            Root Partition
        check_command                  check_nrpe!check_/
       }
define service{
       host_name                          2.14
       use                            generic-service
       service_description            Current Load
       check_command                  check_nrpe!check_load
       }

添加邮件报警通知联系人:/usr/local/icinga/etc/objects/contacts.cfg
1.安装sendmail
yuminstall  -y sendmail*    mailx
service sendmail restart
然后发送测试邮件,验证sendmail的可用性:
# echo "Hello World" | mailabc@abc.com
2、配置nagios中报警邮箱
vi/usr/local/nagios/etc/objects/contacts.cfg
define contact{
       contact_name                   icingaadmin           
       use                            generic-contact        
       alias                          Icinga Admin         
       email                          icinga@localhost   
       email                           long.wang@51auto.com
       }
3、设置报警方式:
vi/usr/local/nagios/etc/objects/templates.cfg define contact{
name                           generic-contact      
service_notification_period     24×7                  
host_notification_period        24×7                  
service_notification_options    w,u,c,r,f,s           
host_notification_options       d,u,r,f,s              
service_notification_commands   notify-service-by-email
host_notification_commands      notify-host-by-email   
register                        0                     
}
客户端设置
#yum install nagios-plugins-all.x86_64
#yum install  nrpe -y
nrpe默认安装位置:
#/etc/nagios/nrpe.cfg
添加如下内容:
log_facility=daemon
pid_file=/var/run/nrpe/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=127.0.0.1,172.0.0.0/8
dont_blame_nrpe=0
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nrpe.d/
command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib64/nagios/plugins/check_load -w 10,15,20 -c30,25,20
command[check_/]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /
command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_procs -w 5 -c 10 -sZ
command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 150 -c 200
重启:
#/etc/init.d/nrpe restart
这样设置在web页面应该可以访问:其他客户端可结合puppet进行统一安装
Icinga结合sms短信平台报警
1.企业短信平台:
/usr/bin/wget 'http://sms.c8686.com/Api/BayouSmsApiEx.aspx?func=sendsms&username=xxxxxx&password=xxxxxxxxxxxxxxxxxxxxxxx&mobiles=xxxxxxxxxxx&message={$subject}'
2.脚本/bin/nagios_sms.py
#cat/bin/nagios_sms.py
#!/usr/bin/envpython
# coding: utf-8
import sys
import urllib
import urllib2
"""
使用八优短信平台进行短信报警
接收参数输入
参数一:短信内容
参数二:接收人手机
使用方法
1.
单一手机
python nagios_sms.py "
报警" xxxxxxxxxx
2.
多手机支持
python nagios_sms.py "
报警"xxxxxxxxxxx,xxxxxxxxxxx
"""
def _process_keyword_coding(keyword):
    """
   
返回中文,将内容转成gbk编码
    """
    try:
        keyword = unicode(keyword,"gbk")
    except:
        keyword = keyword.decode("utf-8").encode("gbk")
    return keyword
def sendsms(message,mobiles):
    """
   
发送短信
   #http://sms.c8686.com/Api/BayouSm ... mobiles=xxxxxxxxxxx,xxxxxxxxxxx,xxxxxxxxxxx&message={$subject}
    """
    func = 'sendsms'
    username = 'xxxxxx'
    password = 'xxxxxxxxxxxxxxxxxxxxxxxxx'
    #mobiles = 'xxxxxxxxxxx,xxxxxxxxxxx,xxxxxxxxxxx,xxxxxxxxxxx'  
    values = {'func':func,
             'username':username,
             'password':password,
             'mobiles':mobiles,
             'message':message}   
    data = urllib.urlencode(values)
    post_url = 'http://sms.c8686.com/Api/BayouSmsApiEx.aspx'
    try:
        conn = urllib2.urlopen(post_url,data)
        print conn.read()
    except Exception , e:
        print e      
if __name__ == '__main__':
    message = sys.argv[1]
    mobiles = sys.argv[2]   
    #print "message===>",message
    #print "mobiles===>",mobiles
    #sendsms(message.encode('gbk'),mobiles)
    sendsms(_process_keyword_coding(message),mobiles)

3.添加命令/usr/local/icinga/etc/objects/commands.cfg
添加如下内容:
definecommand{
       command_name   notify-service-by-nagiossms
       command_line    /usr/bin/python /bin/nagios_sms.py "
通知类型:$NOTIFICATIONTYPE$     服务: $SERVICEDESC$      主机:$HOSTALIAS$                           地址: $HOSTADDRESS$    状态: $SERVICESTATE$     日期/时间: $LONGDATETIME$   额外信息: $SERVICEOUTPUT$" $CONTACTPAGER$
      }

4.添加联系人:/usr/local/icinga/etc/objects/contacts.cfg
内容如下:
define contact{
        contact_name              nagios1            
        use                            generic-contact        
        alias                           nagiosAdmin           
        email                          hanyun.fang@51auto.com  
        pager xxxxxxxxxxx
}

definecontactgroup{
       contactgroup_name       admins
       alias                  Icinga Administrators
       members                nagios1
        }

5.修改模板文件:/usr/local/icinga/etc/objects/templates.cfg
内容如下:
define contact{
       name                           generic-contact        
       service_notification_period     24x7               
       host_notification_period        24x7                  
       service_notification_options    w,u,c,r,f,s         
       host_notification_options       d,u,r,f,s            
      
service_notification_commands  notify-service-by-email,notify-service-by-nagiossms           host_notification_commands     notify-host-by-email   
       register                       0                     
        }

参考文档:http://wenku.baidu.com/view/69f9a22e0066f5335a812127.html
/usr/local/icinga/bin/icinga -v   /usr/local/icinga/etc/icinga.cfg           #检查配置文件
优化icinganginx结合icinga安装
安装开始:
1、安装FCGI模块
#yum install -y perl-devel
#wgethttp://search.cpan.org/CPAN/auth ... RA/FCGI-0.73.tar.gz
#tar xvzf FCGI-0.73.tar.gz
#cd FCGI-0.73
#perl Makefile.PL
#make
#make install
2、安装FCGI-ProcManager模块
#wgethttp://mirrors.ustc.edu.cn/CPAN/ ... Manager-0.24.tar.gz
#tar xvzf FCGI-ProcManager-0.19.tar.gz
#cd FCGI-ProcManager-0.19
#perl Makefile.PL
#make && make install
3、安装IO和IO::ALL模块
#wgethttp://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gz
#tar zxvf IO-1.25.tar.gz
#cd IO-1.25
#perl Makefile.PL
#make
#make install
#wgethttp://cpan.metacpan.org/authors/id/I/IN/INGY/IO-All-0.44.tar.gz
#tar zxvf IO-All-0.41.tar.gz
#cd IO-All-0.41
#perl Makefile.PL
#make
#make install
4、下载Perl脚本
这个脚本的目的就是产生一个PERL的FastCGI接口,让Nginx可以以CGI方式处理Perl。
#wget http://www.chlinux.net/perl-fcgi.zip
#unzip perl-fcgi.zip
#cp perl-fcgi.pl /usr/local/nginx/       注:建议把这个脚本放在Nginx安装目录。
修改脚本权限
#chmod 755 /usr/local/nginx/perl-fcgi.pl
5、建立一个CGI启动/停止脚本
这个SHELL脚本只是为了方便管理上面的Perl脚本。脚本中的nobody为nginx的运行用户,请据自己的实际情况调整。
注意事项:不能用root用户执行(会提示). 要用与Nginx相同身份的用户执行。否则可能会在Nginx Log中提示 Permision Denied。
#vi /usr/local/nginx/start_perl_cgi.sh
#!/bin/bash
#set -x
dir=/usr/local/nginx/
stop ()
{
#pkill -f $dir/perl-fcgi.pl
kill $(cat $dir/logs/perl-fcgi.pid)
rm $dir/logs/perl-fcgi.pid 2>/dev/null
rm $dir/logs/perl-fcgi.sock 2>/dev/null
echo “stop perl-fcgi done”
}
start ()
{
rm $dir/now_start_perl_fcgi.sh2>/dev/null
chown www.www $dir/logs
echo “$dir/perl-fcgi.pl -l $dir/logs/perl-fcgi.log-pid $dir/logs/perl-fcgi.pid -S $dir/logs/perl-fcgi.sock”>>$dir/now_start_perl_fcgi.sh
chown www.www $dir/now_start_perl_fcgi.sh
chmod u+x $dir/now_start_perl_fcgi.sh
sudo -u nobody $dir/now_start_perl_fcgi.sh
echo “start perl-fcgi done”
}
case $1 in
stop)
stop
;;
start)
start
;;
restart)
stop
start
;;
esac
保存退出
修改SHELL脚本权限
#chmod 755/usr/local/nginx/start_perl_cgi.sh
启动脚本
#/usr/local/nginx/start_perl_cgi.sh start
正常情况下在/usr/local/nginx/logs下生成perl-fcgi.sock这个文件,如果没有生成,请检查下上面的步聚。
6.Nginx配置文件修改:
server
  {
      listen 80;
      server_name monitor.51auto.com;
      index index.html index.htm index.php;
      root /usr/local/icinga/share;
      error_log  /tmp/error.log  info;
      auth_basic  "icingaAccess";
      auth_basic_user_file /usr/local/icinga/etc/htpasswd.users;
       large_client_header_buffers 4 16k;
       client_max_body_size 300m;
       client_body_buffer_size 128k;
       proxy_connect_timeout 600;
       proxy_read_timeout 600;
       proxy_send_timeout 600;
       proxy_buffer_size 64k;
       proxy_buffers   32 32k;
       proxy_busy_buffers_size 128k;
       proxy_temp_file_write_size 128k;
     location ~ .*\.(php|php5)?$
    {
   #fastcgi_pass unix:/tmp/php-cgi.sock;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include        fastcgi_params;
    include fastcgi.conf;
    }
    location ~ .*\.(cgi|pl)?$
    {gzip off;
root /usr/local/icinga/sbin;
rewrite ^/icinga/cgi-bin/(.*)\.cgi /$1.cgibreak;
fastcgi_passunix:/usr/local/nginx/logs/perl-fcgi.sock;
fastcgi_param SCRIPT_FILENAME/usr/local/icinga/sbin$fastcgi_script_name;
fastcgi_index index.cgi;
fastcgi_read_timeout 60;
fastcgi_buffers 32 8k;
fastcgi_param REMOTE_USER $remote_user;
include fastcgi.conf;
auth_basic "icinga Access";
auth_basic_user_file/usr/local/icinga/etc/htpasswd.users;
}
location /icinga
{
alias /usr/local/icinga/share;
auth_basic "icinga access";
auth_basic_user_file/usr/local/icinga/etc/htpasswd.users;
}
}
重新载入nginx配置文件:
#/etc/init.d/nginx reload
重启icinga
#/etc/init.d/icinga restart
访问icinga
http://monitor.51auto.com/icinga


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-40452-1-1.html 上篇帖子: centos6.5下nagios配置工具nagiosql320的安装及中文界面的问题 下篇帖子: nagios自写插件监控某个程序使用物理内存情况 短信
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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