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

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

[复制链接]

尚未签到

发表于 2019-1-26 10:34:48 | 显示全部楼层 |阅读模式
  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/BayouSmsApiEx.aspx?func=sendsms&username=xxxxxx&password=xxxxxxxxxxxxxxxxxxxxxx&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/authors/id/F/FL/FLORA/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/authors/id/B/BO/BOBTFISH/FCGI-ProcManager-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-667702-1-1.html 上篇帖子: icinga2监控Netapp存储 下篇帖子: 通过icinga2监控服务器的top(CPU)信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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