这几天由于公司的核心交换机CPU比较高,再加上之前遇到的内网环路问题导致光猫死机问题,所以网络组的同事询问我有无比较好的监控手段。于是借此机会我研究了下大名鼎鼎的Zabbix,现将过程记录与下:
1. 首先还是平台的部署,我选择的是Ubuntu 14.04,按照https://www.zabbix.com/documentation/3.0/manual/installation/install_from_packages/repository_installation官方文档所述的二进制包安装方法基本没什么难度,唯一要注意的是几个有用的配置文件的位置:
/etc/zabbix/zabbix_server.conf # 修改数据库连接信息
/etc/zabbix/apache.conf # 修改php的timezone
/etc/zabbix/web/zabbix.conf.php
/usr/share/zabbix/ # Zabbix网页的主目录
/usr/lib/zabbix/alertscripts # 默认存放发邮件脚本的位置
/etc/zabbix/zabbix_agentd.conf # 客户端配置文件,修改Server属性
2. 由于监控Cisco网络设备,所以必须依靠SNMP,收集了几个常用的OID,以后还需要什么去官网查即可(http://snmp.cloudapps.cisco.com/Support/SNMP/do/BrowseOID.do?local=en)。需要注意的是在Zabbix里填写OID时开头要加个“.”,末尾视情况加个“数字”:
CPU utilization for one minute: .1.3.6.1.4.1.9.2.1.57.0
Free Memory: .1.3.6.1.4.1.9.2.1.8.0 (在后续IOS中似乎已弃用这个,而是改成下面的那些)
ciscoMemoryPoolType 1.3.6.1.4.1.9.9.48.1.1.1.1
ciscoMemoryPoolName 1.3.6.1.4.1.9.9.48.1.1.1.2
ciscoMemoryPoolAlternate 1.3.6.1.4.1.9.9.48.1.1.1.3
ciscoMemoryPoolValid 1.3.6.1.4.1.9.9.48.1.1.1.4
ciscoMemoryPoolUsed .1.3.6.1.4.1.9.9.48.1.1.1.5.1
ciscoMemoryPoolFree .1.3.6.1.4.1.9.9.48.1.1.1.6.1
ciscoMemoryPoolLargestFree 1.3.6.1.4.1.9.9.48.1.1.1.7
3. 邮件通知也是必不可少的一块。我用的是sendEmail+公网SMTP来发送邮件的,这块折腾比较久的时间,还是权限问题吧。
chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts
vi /usr/lib/zabbix/alertscripts/sendmail.sh
#!/bin/bash # # Filename: SendEmail.sh # Revision: 1.0 # Date: 2014/07/04 # Author: Qicheng # Email: # Website: http://qicheng0211.blog.51cto.com/ # Description: zabbix邮件告警脚本 # Notes: 使用sendEmail # # 脚本的日志文件 LOGFILE="/tmp/Email.log" :>"$LOGFILE" exec 1>"$LOGFILE" exec 2>&1 SMTP_server='smtp.exmail.qq.com' # SMTP服务器,变量值需要自行修改 username='chend@qq.com.cn' # 用户名,变量值需要自行修改 password='XXXXXX' # 密码,变量值需要自行修改 from_email_address='chend@qq.com.cn' # 发件人Email地址,变量值需要自行修改 to_email_address="$1" # 收件人Email地址,zabbix传入的第一个参数 message_subject_utf8="$2" # 邮件标题,zabbix传入的第二个参数 message_body_utf8="$3" # 邮件内容,zabbix传入的第三个参数 # 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。 message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF $message_subject_utf8 EOF` [ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8" # 转换邮件内容为GB2312,解决收到邮件内容乱码 message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF $message_body_utf8 EOF` [ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8" # 发送邮件 sendEmail='/usr/local/bin/sendEmail' set -x $sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312
touch /tmp/Email.log
chown zabbix:zabbix /tmp/Email.log
chown zabbix:zabbix /usr/lib/zabbix/alertscripts/sendmail.sh
chmod +x /usr/lib/zabbix/alertscripts/sendmail.sh
测试:/usr/lib/zabbix/alertscripts/sendmail.sh 1234567@qq.com "测试邮件标题" "测试邮件内容"
最后在Zabbix里面触发Trigger的话,你可以在Report->Action log里看到邮件发送的记录。
目前为止涉及到了以上几个知识点,日后有更多需求的话我会继续更新。