因为公司运维的对象是*单位,所以在实际的监控过程中无法连接到外网,所以最后报警选择的媒介是短信猫,下边就是具体的实施过程。
一、面临的问题
因为手头上的设备是串口的短信猫,但是zabbix server端不支持,所以无法直接在服务器端挂载串口的短信猫,这样也就无法直接使用gnokii来调用,所以实施方案的选择上大体有两个,一个是在维持服务器端不变,使用一个中间的主机来挂载短信猫,再使用方法来调用短信猫。第二个就是直接在能够使用串口的主机上部署zabbix服务器。最后选择的方案是第二种,是为了保证报警的稳定性。
二、gnokii的安装 (借鉴了诡之轨迹的博客)
//实现:在linux下通过短信猫发短信
//环境平台
CentOS5.4
intltool-0.41.1.tar.gz
gnokii-0.6.30.tar.gz
yum
//安装minicom及依赖包
yum -y install lockdev minicom perl-XML-Parser
//编译安装intltool
tar zxvf intltool-0.41.1.tar.gz
cd intltool-0.41.1
./configure
make
make install
//编译安装gnokii
tar zxvf gnokii-0.6.30.tar.gz
cd gnokii-0.6.30
./configure
make
make install
//配置minicom
/usr/bin/minicom -s
选择serial port setup
选择A( 按A键 ) 修改为
/dev/ttySO
//ttyS0 为com口
选择E( 按E键 ) 修改为
同样选择E,9600
回车
//保存配置,Save setup as dfl
//退出配置界面,Exit from Minicom
//测试minicom
/usr/bin/minicom
输入 AT 后回车,返回 ok 则成功
//退出minicom
按,[ Ctrl+A ] --> [ z ] --> [ x ]
//配置gnokii
mkdir -p /root/.config/gnokii
#cp /usr/local/share/doc/gnokii/sample/gnokiirc /root/.config/gnokii/config
将源码包里的: Docs/sample目录下的gnokiirc 文件(这个配置文件是gnokii的配置文件)拷贝到/etc下. //我是这么做的
vi /root/.config/gnokii/config
[global]
port = /dev/ttyS0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 9600
smsc_timeout = 10
[xgnokii]
allow_breakage = 0
[gnokiid]
bindir = /usr/local/bin/
[connect_script]
TELEPHONE = 12345678
[disconnect_script]
[logging]
debug = off
rlpdebug = off
xdebug = off
[phone_fake]
port = foobar
model = AT
connection = serial
[fake_driver]
sms_inbox = /tmp/sms
//测试gnokii
/usr/local/bin/gnokii --identify
[root@Nagios ~]# gnokii --identify
GNOKII Version 0.6.30
Cannot open logfile /root/.cache/gnokii/gnokii-errors
WARNING: cannot open logfile, logs will be directed to stderr
Lockfile /var/lock/LCK..ttyS0 is stale. Overriding it...
IMEI : 351047888189814
Manufacturer : WAVECOM MODEM
No flags section in the config file.
Model : MULTIBAND 900E 1800
Product name : MULTIBAND 900E 1800
Revision : 641b09gg.Q2403A 132
三、部署完成后的问题
在gnokii部署完成并测试完成后,遇到了一个问题,在做了action之后一直不给我发短信,于是我使用 echo test | gnokii --sendsms 185******** &>> /home/zabbix/log.log 来查看到底执行的情况是什么,上边报的错是 无权限读取gnokii的相关文件,但是在实际的使用过程中,我已经都赋予了相关权限,百般无赖之下我使用的方法:
首先使用visudo,添加 zabbix ALL=(ALL)NOPASSWD:ALL
之后把脚本中的相关语句改成: echo test | sudo -u root gnokii --sendsms 185******** &>> log.log 之后成功
四、总结
现在仍然无法知道到底是什么原因导致的zabbix无法执行这个命令 ,希望大家谁知道告诉我下,不胜感激。
ps:在测试中 ,su - zabbix 用户下可以使用gnokii发送短信
zabbix版本为3.0.3