Nagios配合飞信发短信

简介:

nagios的安装在此页面 http://bbotte.blog.51cto.com/6205307/1403997 

提示:飞信接口已经不可用

nagios要添加飞信报警功能,尽管网上有很多教程,不过许多都需要瞎折腾才能正常用飞信,所以下面记录一下,供参考

系统centos6.4 64位

安装飞信

下载地址 http://pan.baidu.com/s/1sXpGj 找到linux安装包 > 飞信 >fetiontar.zip

1
2
3
4
5
6
7
# unzip fetiontar.zip
# cd fetiontar
# ls
fetion  lib
# mkdir /usr/local/fetion
# cp fetion /usr/local/fetion/
# chmod 755 /usr/local/fetion/fetion


1
2
3
4
5
6
7
8
9
10
11
12
13
# ls lib/   #lib文件夹下的so文件
ld-2.5.so            libcap.so.1          libcrypt.so.1          libpcre.so.0.0.1
ld-linux.so.2        libcap.so.1.10       libc.so.6              libproc-3.2.7.so
ld-lsb.so.3          libcidn-2.5.so       libeay32.dll           libpthread-2.5.so
ld.so.conf           libcidn.so.1         libnss_ldap-2.5.so     libpthread.so.0
libACE-5.6.5.so      libcom_err.so.2      libnss_ldap.so.2       libssl.so.0.9.7a
libACE-5.6.8.so      libcom_err.so.2.1    libpamc.so.0           libssl.so.0.9.8
libACE-5.7.2.so      libcrypt-2.5.so      libpamc.so.0.81.0      libssl.so.4
libACE_SSL-5.6.5.so  libcrypto.so.0.9.7a  libpam_misc.so.0       libstdc++.so.6
libACE_SSL-5.6.8.so  libcrypto.so.0.9.8   libpam_misc.so.0.81.2  libstdc++.so.6.0.8
libACE_SSL-5.7.2.so  libcrypto.so.0.9.8b  libpam.so.0            readme
libc-2.5.so          libcrypto.so.4       libpam.so.0.81.5
libcap.so            libcrypto.so.6       libpcre.so.0



设置fetion的库文件

1
2
3
# cp -r lib/ /lib64/fetion
# vim /etc/ld.so.conf.d/fetion.conf
/lib64/fetion


1
2
3
4
5
6
7
8
9
10
11
# ldconfig -v|grep fetion
ldconfig:  /etc/ld .so.conf.d /kernel-2 .6.32-431.11.2.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg
ldconfig:  /lib64/fetion/libstdc ++.so.6 is not a symbolic link
ldconfig:  /lib64/fetion/libpamc .so.0 is not a symbolic link
ldconfig:  /lib64/fetion/libpam_misc .so.0 is not a symbolic link
ldconfig:  /lib64/fetion/libpcre .so.0 is not a symbolic link
ldconfig:  /lib64/fetion/ld-linux .so.2 is not a symbolic link
ldconfig:  /lib64/fetion/libcom_err .so.2 is not a symbolic link
ldconfig:  /lib64/fetion/libcap .so.1 is not a symbolic link
ldconfig:  /lib64/fetion/libpam .so.0 is not a symbolic link
/lib64/fetion :


查看缺少哪些库,然后依次安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# ldd /usr/local/fetion/fetion 
linux-gate.so.1 =>  (0x00e41000)
libACE-5.7.2.so =>  /lib64/fetion/libACE-5 .7.2.so (0x007ec000)
libACE_SSL-5.7.2.so =>  /lib64/fetion/libACE_SSL-5 .7.2.so (0x002ad000)
libssl.so.4 =>  /lib64/fetion/libssl .so.4 (0x0069d000)
libstdc++.so.6 =>  /lib64/fetion/libstdc ++.so.6 (0x004f8000)
libm.so.6 =>  /lib/libm .so.6 (0x00c7d000)
libgcc_s.so.1 =>  /lib/libgcc_s .so.1 (0x00dfe000)
libc.so.6 =>  /lib/libc .so.6 (0x002c2000)
libcrypto.so.4 =>  /lib64/fetion/libcrypto .so.4 (0x03e4a000)
librt.so.1 =>  /lib/librt .so.1 (0x001d0000)
libdl.so.2 =>  /lib/libdl .so.2 (0x001d9000)
libgssapi_krb5.so.2 => not found
libkrb5.so.3 => not found
libcom_err.so.2 =>  /lib64/fetion/libcom_err .so.2 (0x001de000)
libk5crypto.so.3 => not found
libresolv.so.2 =>  /lib/libresolv .so.2 (0x001e1000)
/lib/ld-linux .so.2 (0x0070f000)
libz.so.1 => not found
libgssapi_krb5.so.2 => not found
libkrb5.so.3 => not found
libk5crypto.so.3 => not found
libz.so.1 => not found
libpthread.so.0 =>  /lib/libpthread .so.0 (0x0079e000)

如果缺少libgcc_s.so.1,出现下面情况,那么 yum install libgcc_s.so.1

1
2
# /usr/local/fetion/fetion 
/usr/local/fetion/fetion : error  while  loading shared libraries: libgcc_s.so.1: cannot  open  shared object  file : No such  file  or directory


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
# yum install krb5-libs libgssapi_krb5.so.2 libz.so.1 -y
# /usr/local/fetion/fetion 
  ************************ IMPORTANT STATEMENT ************************
  **                                                                 **
  **   PLEASE DON'T USE THIS SOFTWARE TO SEND JUNK SHORT MESSAGES.   **
  **   OTHERWISE PLEASE BEAR YOUR OWN CONSEQUENCES.                  **
  **                                                                 **
  **                                Version:[20101205002-linux]      **
  *********************************************************************
  This program is the console version of China Fetion!
  It's  free  for  personal user.
  This project website: http: //www .it-adv.net/
  AUTHOR:KelvinH MSN /EMAIL :shichangguo@msn.com
  Usage:
     --mobile=[mobile]
     --sid=[sid]
     -- pwd =[ pwd ]
     --config=[config  file ] * format :index mobile password
     --index=[index no  in  config  file ,refer to sample.conf]
     --debug  *debug mode on
     --hide  *login fetion  in  hidden state
     --to=[mobile /sid ]
     -- command -path=[ command  file  path]
     --robotmode
     --daemon(linux only)
     --proxy-ip(http proxy ip)
     --proxy-port(http proxy port)
     --msg-gb=[gb2312 /gbk  message]
     --msg-utf8=[utf8 message]
     --msg- type =[0 /1/2  sms longsms smartmsg]
     -- file -gb=[gb2312 /gbk  file ]
     -- file -utf8=[utf8  file ]
     --query-cmcc-no
     --auto-retry
     -- exit -on-verifycode
     --t3key=[http: //www .tui3.com /page/smssend/ ]


ok,飞信已经安装好了,下面测试

# /usr/local/fetion/fetion --mobile=你的手机号 --pwd=飞信密码 --to=对方的手机号 --msg-utf8="hello  hero"

HTTP/1.1 200 OK

Connection: close

Date: Sat, 23 Aug 2014 09:50:19 GMT

Server: Microsoft-IIS/6.0

X-Powered-By: ASP.NET

Content-Location: nav.fetion.com.cn

X-AspNet-Version: 4.0.30319

Cache-Control: private

Content-Type: text/html; charset=utf-8

Content-Length: 2473


<?xml version="1.0" encoding="UTF-8"?><results><pic-certificate id="f9c6154e-1e8f-4fe5-bb54-61b6ac4a3a85" pic="*****(省略)"

#这里是提示输入验证码,验证码到目录,即下面的手机号.jpg 文件

# cd /usr/local/fetion/

# ls

1591425****.cache  1591425****.jpg  fetion

wKioL1P8BmSCths5AAFd4r9zEbI892.jpg

下面就可以给飞信的好友发送信息了

# /usr/local/fetion/fetion --mobile=1591425**** --pwd=****** --to=****** --msg-utf8="hello  hero,you are a man"

SIP-C/4.0 280 Send SMS OK

T: sip:1056282019@fetion.com.cn;p=7019

I: 3

Q: 1 M

RQ: 56602213092

L: 112

XI: 7df854ffd4ff4abeb840b878110fec25


----以上确定飞信可以正常使用,下面详细说明配置内容----


下面几个配置文件相互关联,commands.cfg中定义飞信发送短信的命令,contacts.cfg中说明发送短信的用户和组,templates.cfg定义触发后要执行的动作,比如发飞信或邮件,什么时候发,用那个用户发送,timeperiods.cfg定义时间,工作日或者7x24,这里我使用默认的7x24,linuxhost.cfg为自己创建的文件,定义监控的服务和主机,监控的动作


1
2
3
4
5
6
7
8
9
10
cd  /usr/local/nagios/etc/objects
commands.cfg     #定义飞信的发送命令
define  command  {
   command_name notify-host-by-fetion
   command_line  /usr/local/fetion/fetion  --mobile=1591425**** -- pwd =123456 --to=1591425**** --msg-utf8= "$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n"   --msg- type =1
}
define  command  {
   command_name notify-service-by-fetion
   command_line  /usr/local/fetion/fetion  --mobile=1591425**** -- pwd =123456 --to=1591425**** --msg-utf8= "$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n"    --msg- type =1
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
contacts.cfg    #创建用户和用户组,定义使用飞信发送通知信息
define contact{
         contact_name                        linux
         use                                 linux-contact
         alias                                linux server1
         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-fetion
         host_notification_commands          notify-host-by-fetion
         }
define contactgroup{
         contactgroup_name           linux
         alias                        linux group1
         members                     linux
         }
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
46
47
48
49
50
templates.cfg     #在模板中定义检测后所要执行的选择
define contact{
         name                            linux-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-fetion
         host_notification_commands      notify-host-by-fetion
         register                        0
         }
define host{
         name                            mylinux-server   
         use                             generic-host    
         check_period                    24x7            
         check_interval                  5               
         retry_interval                  1               
         max_check_attempts              10              
         check_command                   check-host-alive
         notification_period             24x7                                                                                                                  
         notification_interval           120             
         notification_options            d,u,r           
         contact_groups                  linux    
         register                        0               
         }
define service{
         name                            linux-service
         active_checks_enabled           1
         passive_checks_enabled          1
         parallelize_check               1
         obsess_over_service             1
         check_freshness                 0
         notifications_enabled           1
         event_handler_enabled           1
         flap_detection_enabled          1
         failure_prediction_enabled      1
         process_perf_data               1
         retain_status_information       1
         retain_nonstatus_information    1
         is_volatile                     0
         check_period                    24x7
         max_check_attempts              3
         normal_check_interval           1
         retry_check_interval            2
         contact_groups                  linux
         notification_options            w,u,c,r
         notification_interval           60
         notification_period             24x7
          register                        0
         }
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
linuxhost.cfg      #定义主机和监控的服务
define host{
         use                     mylinux-server           
         host_name               webserver1
         alias                    webserver1
         address                 192.168.22.241
         }
define hostgroup{
         hostgroup_name  group1 
         alias            Linux group1 
         members         webserver1    
         }
define service{
         use                             linux-service
         host_name                       webserver1
         service_description             check  users
         check_command                   check_nrpe!check_users
         }
define service{
         use                             linux-service
         host_name                       webserver1
         service_description             check load
         check_command                   check_nrpe!check_load
         }
define service{
         use                             linux-service
         host_name                       webserver1
         service_description             check zombie proce
         check_command                   check_nrpe!check_zombie_procs
         }
define service{
         use                             linux-service
         host_name                       webserver1
         service_description             check total proce
         check_command                   check_nrpe!check_total_procs
         }
define service{
         use                             linux-service
         host_name                       webserver1
         service_description             check rootdisk
         check_command                   check_nrpe!check_rootdisk
         }
define service{
         use                             linux-service
         host_name                       webserver1
         service_description             check swap
         check_command                   check_nrpe!check_swap
         }
define service{
         use                             linux-service
         host_name                       webserver1
         service_description             check sda1
         check_command                   check_nrpe!check_sda1
         }
define service{
         use                             linux-service
         host_name                       webserver1
         service_description             check sda3
         check_command                   check_nrpe!check_sda3
         }
define service{
         use                             linux-service
         host_name                       webserver1
         service_description             check mysql
         check_command                   check_nrpe!check_mysql
         }



测试service发送短信

被监控端user设置 check_users -w 3 -c 3 现在5人登录,稍后再登出

nagios日志,SERVICE NOTIFICATION: linux;webserver1;check users;CRITICAL;notify-service-by-fetion;USERS CRITICAL - 5 users currently logged in

1
2
3
4
5
6
[1409704648] SERVICE ALERT: webserver1;check  users ;CRITICAL;SOFT;1;USERS CRITICAL - 4  users