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

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" | [email protected]

2、配置nagios中报警邮箱

vi/usr/local/nagios/etc/objects/contacts.cfg

define contact{

contact_name                   icingaadmin

use                            generic-contact

alias                          Icinga Admin

email                          [email protected]

email                           [email protected]

}
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                          [email protected]  
        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

时间: 2024-10-07 07:00:37

icinga实战安装部署及短信报警脚本的相关文章

zabbix安装+邮件(短信)报警

zabbix安装+邮件(短信)报警 一.zabbix的安装 安装开发软件包 1.yum  -ygroupinstall  "DevelopmentTools" 2.安装所需的依赖包 yum -y install httpd mysqlmysql-server mysql-devel php php-mysql php-common php-mbstring php-gd php-odbcphp-pear php-bcmath.x86_64 curl curl-devel net-snm

zabbix 实战短信报警之调用短信接口

这2天实现zabbix短信报警,费了很大功夫,先总结下部署过程,做个记录,希望能帮到一些朋友. 1.新建Media types 2.填上发短信脚本的名称 3.注意zabbix_server.conf里面的配置,指定脚本放的位置及赋予脚本执行和属主zabbix权限.附件有脚本. 4.关联zabbix系统用户,我做的是新建用户test01,并定义告警的发送方式,通知的手机号码,定义通知的时间及事件类型等. 4.1新建用户 4.2设置用户信息 4.3设置告警通知方式,通知手机号,通知时间 4.4 定义

CactiEZ 中文版V10.1安装使用以及139邮箱短信报警设置

说明:CactiEZ中文版V10.1是基于CentOS 6.0系统,整合Cacti等相关软件,重新编译而成的一个操作系统! 说明:CactiEZ中文版V10.1是基于CentOS 6.0系统,整合Cacti等相关软件,重新编译而成的一个操作系统! 优点:省去了复杂烦琐的Cacti配置过程,安装之后即可使用,全部中文化,界面更友好 缺点:CactiEZ是一个完整的操作系统,需要专门一台电脑才能安装使用 系统运维 温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接 具体案例: 1.

Zabbix实现短信报警设置(实战)

配置环境: zabbix 2.2.15 1.配置示警媒介类型 此文件所在位置:/usr/lib/zabbix/alertscripts/ 必须拥有执行权限,并且改变所属用户和组 要修改此脚本的路径,需修改zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts 脚本内容: #!/bin/bash## Filename: sendSMS.sh# Revision: 1.0# Date: 2016/12/13# Author:

server宕机监控、检測、报警程序(139绑定手机短信报警)monitor_down.sh

宕机监控报警程序 一.   需求来源 宕机对运维人员来说,最痛苦了.怎样检測一台server是否还在正常执行,假设该server宕机,怎样在第一时间监測到并通知一线运维人员进行维护,最大化降低损失. 二.   程序功能 对指定server进行宕机监測,假设确实宕机,则发送email到139邮箱(绑定手机,实现短信报警) 三.源程序 #!/bin/bash #author longxibendi #blog http://blog.csdn.net/longxibendi #function pi

zabbix配置及邮件短信报警

Zabbix邮件报警的大致流程如下: 监控主机---->监控项---->触发器---->告警动作---->告警方式---->告警用户 首先添加监控项 1.添加受监控项的主机 组态---主机---右上角"创建主机" 弹出主机创建页面 上图填完后先不要点存档,而是点击左上角的模板,选择要使用的模板(可选择多个模板,一个模板中包含一个或多个监控项目),也可以在"模板"选项中创建一个新的模板,选择完模板后点添加,再点 存档 在主机列表中点击被监

zabbix自定义脚本实现短信报警提醒

一 简介 通常,在zabbix的web界面配置好之后为了能够及时收到zabbix的报警信息,我们需要配置"报警媒介"来通知我们.其中常用的两种报警媒介分别是:Email和SMS,即:发邮件通知和发短信通知 关于邮件通知的配置很简单,只需要设置SMTP即可,因此这里不多说.但是zabbix默认的短信通知可就有点坑了,"SMS"这种报警媒介要想发送短信是需要硬件支持的.与此同时,现在开发中为了方便一般都是将短信发送的操作封装成接口的形式的,当需要发短信时只需要调用该接口

zabbix3配置短信报警

需求:在zabbix服务器配置短信报警,当服务出现故障达到预警级别是通过发送短信的形式告诉运维人员,以便及时处理. 一.zabbix服务器端配置短信脚本 我的短信脚本放置位置为 /etc/zabbix/alertscripts,这个必须在/etc/zabbix/zabbix_server.conf配置文件中放开 AlertScriptsPath=/etc/zabbix/alertscripts 进入/etc/zabbix/alertscripts目录,创建短信告警脚本sendSMS.sh,内容入

tomcat健康状态监控并自动重启短信报警

#!/bin/sh PATH=/usr/local/jdk1.5.0_19/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin JAVA_HOME=/usr/local/jdk1.5.0_19 CLASSPATH=.:/usr/local/jdk1.5.0_19/lib:/usr/local/jdk1.5.0_19/lib/t