Zabbix2.4.8实现WeChat+Mail预警

来源:互联网 发布:域名重新定向 编辑:程序博客网 时间:2024/06/05 00:27

Zabbix2.4.8实现WeChat+Mail预警

本文将具体记录我的邮件预警和微信预警的设置和脚本的准备,在启用微信和邮件设置之前需要将Zabbix环境搭建起来

搭建篇

  • [x] zabbix部署版本2X版本,底层环境为Redhat6.4版本,部署前需要搭建LAMP环境
  • [x] zabbix服务端需要禁用selinux
  • [x] 无特殊需求采用rpm安装
    LAMP版本支持:
    Apache 2.2.15版本
    PHP 5.3.3版本
    MySQL 5.1.73版本

LAMP环境作支持

[root@note61 ~]# yum -y install httpd php mysql-server[root@note61 ~]#chkconfig httpd on ; chkconfig mysqld on[root@note61 ~]#service httpd start ; service mysqld start

初始化mysql数据库

[root@note61 ~]#mysql_secure_installation

设置root密码
测试LAMP环境

[root@note61 ~]#vim /var/www/html/index.php    <?php        phpinfo();?>[root@note61 ~]#service httpd restart

测试方式http://Server_IP/

部署:zabbix2.4.8
部署服务
在需要做监控的服务器上部署zabbix服务

[root@note61 ~]#yum -y install zabbix-get zabbix-sender zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql
  • zabbix-get 负责将自定义的key的值下载到server端
  • zabbix-sender 负责将自定义的key的值主动上传到server端
  • zabbix-agent zabbix的被监控端
  • zabbix-server zabbix主程序包
  • zabbix-server-mysql zabbix主程序包与MySQL关联包
  • zabbix-web zabbix的web控制界面包
  • zabbix-web-mysql zabbix的web控制界面包与MySQL关联包

修改php.ini
时区修改为Asia/ShangHai,并去掉注释

[root@note61 ~]#vim /etc/php.ini +946    date.timezone = Asia/Shanghai

安全优化
设置防火墙策略

建议将selinux关闭,否则会有各种报错

[root@note61 create]# sed -i 's#=enforcing#=disabled#g' /etc/selinux/config [root@note61 create]# setenforce 0

修改数据库信息
创建一个zabbix数据库,设置字符集为UTF8,如果不设置可能造成web界面中文乱码

mysql> create database zabbix character set utf8 collate utf8_bin;Query OK, 1 row affected (0.00 sec)

设置一个zabbix用户对数据库的权限

mysql> grant all on zabbix.* to zabbix@'%' identified by 'zabbix';Query OK, 0 rows affected (0.00 sec)

导入数据库信息

[root@note61 ~]# cd /usr/share/doc/zabbix-server-mysql-2.4.8/create/[root@note61 create]# mysql -uzabbix -pzabbix zabbix < schema.sql [root@note61 create]# mysql -uzabbix -pzabbix zabbix < images.sql [root@note61 create]# mysql -uzabbix -pzabbix zabbix < data.sql

Web界面安装zabbix
web配置:http://www.ttlsa.com/zabbix/install-zabbix-on-linux-5-ttlsa/
转自:运维生存时间,一个很不错的学习网站
默认账号:Admin 密码:zabbix

重启各服务

[root@note61 create]# chkconfig zabbix-server on ; service zabbix-server restartStarting Zabbix server:                                    [  OK  ][root@note61 create]# chkconfig zabbix-agent on ; service zabbix-agent restartStarting Zabbix agent:                                     [  OK  ][root@note61 create]#service httpd restart

故障解决

  • [x] Zabbix服务未运行

报错信息

首先查看系统日志报错,根据日志来修改:

[root@note61 web]# vim /etc/zabbix/web/zabbix.conf.php +17    $ZBX_SERVER_NAME = '192.168.0.11';[root@note61 default]# vim /etc/zabbix/zabbix_server.conf +106DBPassword=zabbix
  • [x] 数据库连接失败
    报错信息
[root@note61 default]#setenforce 0
  • [x] Zabbix中文乱码

从window中C:\Windows\Fonts中复制”楷体 常规”到zabbix的字体目录下,rpm安装的路径是/usr/share/zabbix/fonts,注意上传后字啊目录内需要改名为simkai.ttf,必须为小写

如果无法通过xshell上传文件,就需要在服务器安装lrzsz

[root@DEBPPA01 ~]#yum -y install lrzsz

上述操作完成后,替换字体graphfont文件为simkai文件

[root@DEBPPA01 ~]# cd /usr/share/zabbix/include/[root@DEBPPA01 include]# sed -i 's/graphfont/simkai/g' ../include/defines.inc.php

替换完毕后重启zabbix-server服务,再次刷新即可。如果依然是乱码,说明起初创建数据库时没有制定utf8

微信报警篇

微信报警学习阶段需要自己申请一个公众号,建议大家申请公众号的时候选择“团队”,这个在申请的时候不要填写企业信息,但是在生产环境,建议注册企业微信,因为个人团队在接口发送字数会有限制

公众号注册步骤:
http://jingyan.baidu.com/article/a948d6517913e90a2dcd2ec9.html?st=2&net_type=&bd_page_type=1&os=0&rst=&word=%E5%BE%AE%E4%BF%A1%E5%B8%90%E5%8F%B7%E7%94%B3%E8%AF%B7
申请公众号后进行登陆,在公众号的配置过程中一定要留意一下一下几个概念以及得到这些概念的值:

  • 部门ID
  • 应用ID
  • CorpID和Secret

以上这些信息,会写入到微信脚本里,从而实现Zabbix的报警按照脚本的部门ID和应用ID去发送

登录到微信公众号后:

  1. ++新建组织构架++(获得部门ID)
    步骤:通讯录–>组织构架

根据公司的情况去创建,每个部门添加该部门的微信成员,每个部门都有自己的部门ID,选择部门后–>修改部门即可获得该部门的ID,在稍后微信脚本执行时在Zabbix定义不同的主机不同的错误发送给不同的脚本,不同的脚本里定义了不同的部门ID,从而实现不同类型的报警不同的部门,当然这个办法可能有点笨,不过很高效。组织架构

  1. ++新建应用++

步骤:应用中心–>新建应用–>消息形应用–>(设置应用名称,头像和应用可见范围)

应用可见范围:一个应用就像一个QQ群一样,设置了运维部可见,那么只有运维部里的一帮兄弟可以看到来自这个应用发送的消息,该应用也会有一个ID,这个ID也需要记录,不同的应用下可能对应不同的部门,在稍后微信脚本里需要进行定义该值

此处有图04.png
3. ++获得CorpID和Secret++

步骤:设置–>权限管理–>新建普通管理组–>(填写基本信息及权限)

这一步很重要,在配置过程中确保有发消息的权限,配置管理员,以及获得CorpID和Secret,脚本的不然是发不出消息的。

此处有图05.png

测试CorpID和Secret:
http://qydev.weixin.qq.com/debug 测试结果要为OK才可以
此处有图06.png
各项参数的值获取到之后进行记录,确保应用要有发送消息的权限和CorpID和Secret的值获取为OK,则公众号配置完成。

辅助理解博文:http://www.oschina.net/news/75588/zabbix-3.0.3

配置微信脚本,并给于脚本+x权限,放置在/usr/lib/zabbix/alertscripts下

[root@PEIPSA01 alertscripts]# vim weixin.shCropID='XXXXXXXXXXXXXXXXXXX'                        ##输入CIDSecret='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'     ##输入SecretGURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}')PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"function body() {        local int AppID=XX       ##应用ID        local UserID=$1        local PartyID=XX         ##部门ID        local Msg=$(echo "$@" | cut -d" " -f3-)        printf '{\n'        printf '\t"touser": "'"$UserID"\"",\n"        printf '\t"toparty": "'"$PartyID"\"",\n"        printf '\t"msgtype": "text",\n'        printf '\t"agentid": "'"$AppID"\"",\n"        printf '\t"text": {\n'        printf '\t\t"content": "'"$Msg"\""\n"        printf '\t},\n'        printf '\t"safe":"0"\n'        printf '}\n'}

测试脚本

[root@DEBPPA01 alertscripts]#sh weixin.sh username test hello

如果公众号可以收到微信消息,说明微信及脚本这一块已经没有问题,回归到Zabbix上配置媒介和动作

创建媒介

这里写图片描述
这里写图片描述

给用户添加该媒介
这里写图片描述
这里写图片描述

创建动作

这里写图片描述
这里写图片描述
这里写图片描述

配置完成后,设置触发器,模拟故障,看微信是否已经报警了呢,如果微信收到消息,说明设置成功

这里写图片描述

邮件报警篇

安装mailx作为smtp服务器

[root@PEIPSA01 ~]# yum -y install mailx dos2unix

添加发件人信息

[root@PEIPSA01 ~]# vim /etc/mail.rc    set from=XXX@XXXX.com           ##from信息,固定格式    set smtp=XXXXX                  ##smtp服务器,比如163.smtp.com    set smtp-auth-user=XXX@XXXX.com ##邮箱账号,和from信息保持一致    set smtp-auth-password=XXXXXX   ##邮箱密码    set smtp-auth=login

设置完后发送邮件测试,注意如果测试发送到QQ邮箱,如果QQ邮箱没有提醒,就到QQ邮箱的垃圾箱看看是否发送过来(做这个快被腾讯垃圾箱坑死了)

[root@PEIPSA01 ~]# echo "hello world" | mail -s mailtext XXX@163.com

如果发送过来则进行下一步脚本的编写否则查看日志拍错,这里没有报错

[root@PEIPSA01 alertscripts]# vim mailscript.sh#!/bin/bash#export.en_US.UTF-8         ##如果发送为乱码则开启此项FILE=/tmp/mailtmp.txt       ##每次zabbix报警内容都会擦写到这里,确保zabbix有权限写入,否则邮件肯定会失败,如果zabbix的启动用户是zabbix,那么该文件的权限一定要为zabbix:zabbix,该文件会自动生成不需要手动创建echo "$3" > $FILE#dos2unix -k $FILE       ##如果发送到邮箱显示为附件,则开启此项/bin/mail -s "$2" $1 < $FILE

测试脚本是否正常

sh mailscript.sh xxx@163.com ceshi nihao

如果正常,则脚本配置成功,剩下的操作便和添加微信步骤基本相同。

如果测试邮件一直收不到请从以下几个思路进行排查:
1、邮件是否被标记为垃圾邮件
2、检查mailscript.sh和生成的/tmp/mailtpm.txt的权限是否有权限执行,所有者zabbix:zabbix权限设置为777
3、将zabbix web界面配置的mail地址和脚本地址一定要手动输入,不可复制,因为手动复制可能会产生非法字符脚本执行异常

剩下的展示下报警效果:
这里写图片描述

0 0
原创粉丝点击