前言
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
Zabbix优点:
1 支持分布式监控
2 自带绘图功能,获取到数值型的数据,可自动生成图
3 Web配置方式,操作易用性较好。添加监控项或机器时速度很快。
4 有报警时无论在任何界面会弹出小窗口报警,同时有报警的声音提示,同时可对监控项的快速查看。
5 自带内置函数较为丰富,同时也支持脚本及nagios等脚本的调用。
6 出现问题时,可自动远程执行命令(需对agent设置执行权限)
Zabbix 缺点:
1 批量修改不方便,可用数据库辅助
2 深入后,中文资料相当少,大部分问题需看官方的文档及论坛。
3 缺少数据汇总功能,如无法查看一组服务器平均值,可考虑对其进行二次开发。
4 zabbix较cacti来说,画图功能较差些、流量获取较为复杂
微信告警首先注册一个企业微信,才能实现微信告警。注册地址:https://work.weixin.qq.com/ 。
- 申请企业微信号
1). 申请好后需记录几项重要信息,后面zabbix server端监控脚本需使用到。
登录网页 – 我的企业 – 企业ID:
2). 创建应用
登录网页 – 应用管理 – 应用 – 创建应用记录并获取到AgentId、Secret
AgentId:xxxxx
Secret:xxxxx
3). 添加通讯录
登录网页 – 通讯录 – 添加成员
添加后才可收取到信息。 - zabbix server端配置
1). 安装依赖
这里使用python作为监控脚本,zabbix sever服务器上需安装python依赖。yum install -y python-requests
2). 配置python脚本
zabbix sever服务器上默认监控脚本目录上创建wechat.py。
cd /usr/lib/zabbix/alertscripts
vim wechat.py#!/usr/bin/env python #-*- coding: utf-8 -*- #author: Yu import requests import sys import os import json import logging # config for log logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s', datefmt = '%a, %d %b %Y %H:%M:%S', filename = os.path.join('/usr/lib/zabbix/alertscripts','weixin.log'), filemode = 'a') # Company ID corpid='xxxxxxx' # secret appsecret='xxxxxxxx' # AgentId agentid=xxxxxxx #Accesstoken token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret req=requests.get(token_url) accesstoken=req.json()['access_token'] # Message send msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken touser=sys.argv[1] subject=sys.argv[2] #toparty='3|4|5|6' message=sys.argv[3] params={ "touser": touser, # "toparty": toparty, "msgtype": "text", "agentid": agentid, "text": { "content": message }, "safe":0 } req=requests.post(msgsend_url, data=json.dumps(params)) logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
记得给文件赋权
chown zabbix.zabbix weixin
chmod 755 weixin
3). 测试
运行weixin.py脚本/usr/lib/zabbix/alertscripts/weixin.py name "title test" "hello"
name:收件人账号(登录企业微信网站 – 通讯录 – 打开某个收件人 – 账号)
title test:标题
hello:具体需要发送的内容
如果没有错误的话,收件人将可在手机APP企业微信上收到此消息,如下图: - Zabbix Server Web端开启微信告警
1). 添加告警媒介
管理 —-> 报警媒介类型 —–> 创建媒介类型添加三个脚本参数:
{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
脚本名称必须跟zabbix server上配置/usr/lib/zabbix/alertscripts的脚本名称一样。
2). 创建用户,添加报警媒介
管理 —-> 用户注:收件人填写企业微信中通讯录成员帐号,这里打算使用微信关联公众号收取报警通知信息。
3). 创建触发器动作
配置 —-> 动作 —-> 动作创建邮件发送动作,配置触发条件:触发器示警度 大于等于 警告
配置 —-> 动作 —-> 操作默认标题:
故障{TRIGGER.STATUS},服务器名:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息内容:
告警主机:{HOSTNAME} 告警主机IP地址:{HOST.IP} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
配置 —-> 动作 —-> 恢复
默认标题:
恢复{TRIGGER.STATUS}, 服务器名:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
消息内容:
告警主机:{HOSTNAME} 告警主机IP地址:{HOST.IP} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
4). 模拟测试微信收取告警通知
将新某台被监控主机zabbix agent服务关闭,稍等5分钟查收能收到微信告警。5). 使用普通微信接受消息设置
直接用微信扫码关注微工作台,即可在微信中接收企业通知和使用企业应用。
方法:登录企业微信管理页面 – 我的企业 – 微工作台 – 邀请关注的二维码
关注后即可收取。