文章目录

  • 一、部署server端和agent端
    • 1、实验准备
    • 2、部署zabbix-server【监控端】
      • (1)安装zabbix-server
      • (2)启动mariadb
      • (3)准备数据库及授权
      • (4)导入数据库文件
      • (5)修改zabbix配置文件
      • (6)启动zabbix-server
      • (7)修改Apache配置文件,修改时区
      • (8)启动Apache服务
    • 3、部署zabbix-agent【被监控端】
      • (1)安装zabbix-agent
      • (2)zabbix-agent配置
      • (3)启动zabbix-agent
      • (4)准备网站测试环境(redis)
    • 4、 实现对web服务器监控【监控端】
      • (1)定义监控项
      • (2)定义触发器
      • (3)定义动作(action)
  • 二、邮件报警
    • 1、配置需要的邮件信息
    • 2、zabbix监控端配置
    • 3、web网页配置(脚本)
      • (1)添加报警媒介
      • (2)添加用户
      • (3)创建动作
      • (4)测试
    • 3、另一种方式:web网页配置(电子邮件)
  • 二、钉钉报警
  • 三、微信报警
    • 1、python报警监控脚本
    • 2、zabbix 创建告警媒介
    • 3、zabbix 添加告警用户
      • 5.8 Zabbix 添加报警动作
      • 5.9 测试微信报警

一、部署server端和agent端

1、实验准备

centos7.4 系统服务器2台、 一台作为监控服务器, 一台作为被监控节点, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信。
1)所有机器关闭防火墙和selinux

setenforing 0 (修改配置文件关闭)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld.service

2)根据架构图,实验基本设置如下:

机器名称 IP配置 服务角色 备注
server 192.168.246.228 zabbix-server 开启监控功能
node1 192.168.246.226 zabbix-agent-none1 开启

2、部署zabbix-server【监控端】

(1)安装zabbix-server

[root@youngfit ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@youngfit ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent httpd  mariadb mariadb-server

(2)启动mariadb

[root@youngfit ~]# systemctl restart mariadb
[root@youngfit ~]# systemctl enable mariadb

(3)准备数据库及授权

[root@youngfit ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> \q
Bye

(4)导入数据库文件

[root@youngfit ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix

(5)修改zabbix配置文件

[root@youngfit ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
注意删除前面的空格

(6)启动zabbix-server

[root@youngfit ~]# systemctl restart zabbix-server zabbix-agent  //重启zabbix服务和agent
[root@youngfit ~]# systemctl enable zabbix-server zabbix-agent  //设置为开机自启动

(7)修改Apache配置文件,修改时区

[root@youngfit ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai

(8)启动Apache服务

[root@youngfit ~]# systemctl restart httpd
[root@youngfit ~]# systemctl enable httpd

3、部署zabbix-agent【被监控端】

(1)安装zabbix-agent

[root@web1  ~]# rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@web1  ~]# yum -y install zabbix-agent

(2)zabbix-agent配置

[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=47.75.81.162 //zabbix-server IP 即监控端的IP
ServerActive=47.75.81.162 //zabbix-server IP 即监控端的IP
UnsafeUserParameters=1 是否限制用户自定义 keys 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符
EnableRemoteCommands=0 是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.

(3)启动zabbix-agent

[root@web1 ~]# systemctl start zabbix-agent
[root@web1  ~]# systemctl enable zabbix-agent

(4)准备网站测试环境(redis)

如果已经在前安装redis,则不需要操作
首先,我们在agent端使用yum安装一下redis

[root@zabbix-agent-none1 ~]# yum -y install epel-release
[root@zabbix-agent-none1 ~]# yum install -y redis

修改一下配置文件:

[root@zabbix-agent-none1 ~]# vim /etc/redis.conf
bind 0.0.0.0        #不做任何认证操作

修改完成以后,我们启动服务,并检查端口:

[root@zabbix-agent-none1 ~]# systemctl start redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      1353/redis-server 0

4、 实现对web服务器监控【监控端】

接着,我们就可以去网站上来定义相关的操作了

(1)定义监控项

进入 配置 —> 主机 —> node1 —> 监控项(items)—> 创建监控项

填写完毕以后,我们点击下方的添加。

该监控项已成功添加。
  我们可以去查看一下他的值:
  检测中 —> 最新数据

(2)定义触发器

定义好了监控项以后,我们亦可来定义一个触发器,当服务有问题的时候,我们才能及时知道:
  进入 配置 —> 主机 —> none1 —> 触发器(trigger)—> 创建触发器


 填写完毕以后,我们点击下方的添加。

该触发器已成功添加。
  我们去查看一下:
  监测中 —> 最新数据

我们来手动关闭redis服务来检测一下:

[root@zabbix-agent-none1 ~]# systemctl stop redis

进入 监测中 —> 问题

可以看到,现在已经显示的是问题了。并且有持续的时间,当我们的服务被打开,会转为已解决状态:

[root@zabbix-agent-none1 ~]# systemctl start redis

(3)定义动作(action)

现在我们就可以去定义action了。

进入 配置 —> 动作 —> 创建动作(注意选择事件源为触发器)

我们可以进行操作添加:

我们可以看出,还需要在虚拟机上进行两项操作,一是修改sudo配置文件使zabbix用户能够临时拥有管理员权限;二是修改zabbix配置文件使其允许接收远程命令。我们进行如下操作:

[root@zabbix-agent-none1 ~]# visudo          #相当于“vim /etc/sudoers”## Allow root to run any commands anywhereroot    ALL=(ALL)   ALLzabbix    ALL=(ALL)   NOPASSWD:ALL     #添加的一行,表示不需要输入密码[root@zabbix-agent-none1 ~]# vim /etc/zabbix/zabbix_agentd.confEnableRemoteCommands=1          #允许接收远程命令LogRemoteCommands=1             #把接收的远程命令记入日志[root@zabbix-agent-none1 ~]# systemctl restart zabbix-agent.service

我们添加了第一步需要做的事情,也就是重启服务,如果重启不成功怎么办呢?我们就需要来添加第二步:

添加完成以后,我们可以看一下:

操作添加完了,如果服务自动恢复了,我们可以发送消息来提示:

至此,我们的动作设置完毕,可以点击添加了,添加完成会自动跳转至如下页面:

现在我们可以手动停止服务来进行测试:

[root@zabbix-agent-none1 ~]# systemctl stop redis.service

然后我们来到问题页面来查看,发现确实有问题,并且已经解决: 等一会

也可以去agent端查看端口是否开启:

[root@zabbix-agent-none1 ~]# systemctl stop redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
[root@zabbix-agent-none1 ~]# netstat -lntp | grep redis
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      1957/redis-server 0查看邮箱是否成功
[root@zabbix-server ~]# yum -y install mailx
[root@zabbix-server ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 unread
>U  1 zabbix@localhost.loc  Thu Oct 10 00:51  21/865   "Resolved: redis service down"邮箱也已经成功

可以看出端口正常开启,我们的动作触发已经完成。

补充:我们也可以使用脚本来发送警报,我们的脚本存放路径在配置文件中可以找到,定义为:AlterScriptsPath=/usr/lib/zabbix/alertscripts

然后我们将这个动作关闭掉为后期的邮件报警做准备。

二、邮件报警

1、配置需要的邮件信息

2、zabbix监控端配置

yum -y install mailxvim /etc/mail.rc
'//末尾添加'
set from=邮箱
set smtp=smtp.qq.com
set smtp-auth-user=邮箱
set smtp-auth-password=邮箱授权码
set smtp-auth=login

测试下邮件是否可以发送

echo "hello tomorrow" | mail -s "test" 邮箱

编写邮件脚本

cd /usr/lib/zabbix/alertscripts
vim mailx.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

创建日志文件并修改权限并测试

touch /tmp/mailx.log
chown -R zabbix.zabbix  /tmp/mailx.log
chmod +x mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/
sh mailx.sh 邮箱 zabbix "this is test"

3、web网页配置(脚本)

(1)添加报警媒介

管理 > 报警媒介类型 > 创建媒体类型

名称自定义,后面会用到 类型选择脚本 脚本名称是之前编辑的脚本名称 脚本的三个参数:
{ALERT.SENDTO}
{ ALERT.SUBJECT}
{ALERT.MESSAGE}

(2)添加用户

管理 > 用户 > 点击Admin > 报警媒介 > 添加

类型选择之前自定义的名称
收件人填自己邮箱
点击添加
点击更新

(3)创建动作

配置 > 动作 >创建动作 > 删除默认 > 创建动作

添加执行操作


注:也可以自定义消息内容

默认标题   {TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容   告警主机:{HOST.NAME}告警IP:{HOST.IP}告警时间:{EVENT.DATE}-{EVENT.TIME}告警等级:{TRIGGER.SEVERITY}告警信息:{TRIGGER.NAME}-{ITEM.VALUE}事件ID:{EVENT.ID}

添加恢复操作

除了消息内容的模板,其他和上一步基本一致

默认标题   {TRIGGER.STATUS}:{TRIGGER.NAME}消息内容   恢复主机:{HOST.NAME}恢复IP:{HOST.IP}恢复时间:{EVENT.DATE}-{EVENT.TIME}恢复等级:{TRIGGER.SEVERITY}恢复信息:{TRIGGER.NAME}-{ITEM.VALUE}事件ID:{EVENT.ID}

最后再确认一下操作是不是都添加完成了,如果没完成是不会发送邮件的!!

(4)测试

被监控端停止sshd服务

systemctl stop redis

可以看到邮件已经发送过来了,并且仪表板的问题界面开始闪烁
重新开启服务后同样会有邮件发来

3、另一种方式:web网页配置(电子邮件)

二、钉钉报警







点击机器人的设置,把 webhook 的地址记录下来(很重要)

创建脚本,赋予执行权限

[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbix-server alertscripts]# vim dingding.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author: sxdswc999
import requests
import json
import sys
import osheaders = {'Content-Type': 'application/json;charset=utf-8'}
api_url = ""  #机器人的Webhook地址def msg(text):json_text= {"msgtype": "text","text": {"content": text},"at": {"atMobiles": [""    #手机号],"isAtAll": False}}print requests.post(api_url,json.dumps(json_text),headers=headers).contentif __name__ == '__main__':text = sys.argv[1]msg(text)
[root@zabbix-server alertscripts]# chmod +x dingding.py

安装python-pip和requests库

[root@zabbix-server alertscripts]# yum -y install epel-release
[root@zabbix-server alertscripts]# yum -y install python-pip
[root@zabbix-server alertscripts]# pip install requests

测试脚本是否可行

[root@zabbix-server alertscripts]# ./dingding.py 监控报警
{"errcode":0,"errmsg":"ok"}

pc端接收成功:

移动端App接收成功:

在监控页面创建媒介:

将Admin用户关联到此媒介:

收件人填钉钉的webhook

配置完成

三、微信报警

  • 部门ID

  • AgentID和Secret

  • 企业ID

1、python报警监控脚本

需要修改脚本中的四个信息:
self.__corpid = 'wwd5348195e1cdd809' //公司的corpid
self.__secret = '2QvlfpUxh4k-JeIuxVNmkh2N7ijfkCs1lzb4Tkgr6xQ' //应用的secret
'toparty':1, //部门id
'agentid':"1000002", //应用id
[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/wechat.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )class WeChat(object):__token_id = ''# init attributedef __init__(self,url):self.__url = url.rstrip('/')self.__corpid = 'wwd2385f23ad80ecef'self.__secret = '3gsEC6Mv3vQmdG5MOJBF65U0KzTl-1v2GKQhr479uso'# Get TokenIDdef authID(self):params = {'corpid':self.__corpid, 'corpsecret':self.__secret}data = urllib.urlencode(params)content = self.getToken(data)try:self.__token_id = content['access_token']# print content['access_token']except KeyError:raise KeyError# Establish a connectiondef getToken(self,data,url_prefix='/'):url = self.__url + url_prefix + 'gettoken?'try:response = urllib2.Request(url + data)except KeyError:raise KeyErrorresult = urllib2.urlopen(response)content = json.loads(result.read())return content# Get sendmessage urldef postData(self,data,url_prefix='/'):url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_idrequest = urllib2.Request(url,data)try:result = urllib2.urlopen(request)except urllib2.HTTPError as e:if hasattr(e,'reason'):print 'reason',e.reasonelif hasattr(e,'code'):print 'code',e.codereturn 0else:content = json.loads(result.read())result.close()return content# send messagedef sendMessage(self,touser,message):self.authID()data = json.dumps({'touser':touser,'toparty':1,'msgtype':"text",'agentid':"1000002",'text':{'content':message},'safe':"0"},ensure_ascii=False)response = self.postData(data)print response
if __name__ == '__main__':a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')a.sendMessage(sys.argv[1],sys.argv[3]

监控脚本测试:


注:Youngfit为上图的企业微信名 test为标题 yufei为内容,标题和内容均可自定义[root@youngfit ~]# /usr/lib/zabbix/alertscripts/wechat.py Youngfit test yufei
{u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}

2、zabbix 创建告警媒介

注:(以哪种方式发送报警信息,短信,脚本等等)

3、zabbix 添加告警用户

创建用户组:web-group,包含yangge、alice...等用户
创建用户:yangge、alice...等用户,并关联到微信告警
希望的结果是:发微信到组web-group,组中的用户yangge、alice都能收到

5.8 Zabbix 添加报警动作
如果希望中文显示:
告警主机: {HOST.NAME}
告警地址: {HOST.IP}
监控项目: {ITEM.NAME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}

5.9 测试微信报警

被监控端操作

[root@web1 ~]# systemctl stop httpd

Zabbix 邮件报警、钉钉报警、微信报警相关推荐

  1. Zabbix几分钟实现电话短信钉钉飞书微信报警

    Zabbix是现在企业用的比较多的开源监控系统,Zabbix电话短信报警更是运维不可缺少的报警渠道. 前面一篇介绍了Zabbix5.4版本如何通过Spug推送助手发送电话短信报警,但用户反馈Zabbi ...

  2. zabbix3.4搭建钉钉报警

    1.在钉钉群里添加一个自定义的机器 在设置说明中无需开启Outgoing机制 红色箭头指的信息很重要后面脚本会用到 2.后续的脚本用的是http://blog.51cto.com/m51cto/205 ...

  3. zabbix自定义报警——(邮箱,微信)

    前言 看了很多其他人的博客,写了很多都有的用脚本的方式来实现邮箱报警,我觉得有点繁琐了,今天推荐一种不使用脚本的方式实现邮箱报警. zabbix安装部署参考: https://blog.csdn.ne ...

  4. oracle定时器定时删除30天前的数据_使用 TDengine 存储能耗数据并通过钉钉机器人接收报警信息...

    小 T 导读:福建中海创集团(FUJIAN HISTRON)始创于1992年,是一家专业从事综合智能服务的大型企业集团.基于多年打造的"工业4.0"的核心技术.商业模式与产业链体系 ...

  5. zabbix4.0添加mysql报警_Zabbix 3.4.3实现企业微信报警

    Zabbix 3.4.3实现企业微信报警 [日期:2017-11-08] 来源:Linux社区  作者:wzlinux [字体:大 中 小] 一.企业微信注册 微信的报警方式可以让我们随时随地接收到信 ...

  6. 【zabbix】自定义监控、邮件报警、企业微信报警、钉钉报警(详细)

    环境说明 centos 7 版本 zabbix 6.0 版本 主机名 IP地址 备注 zabbix 192.168.10.150 服务端,同时自我监控 zabbix-2 192.168.10.151 ...

  7. 五分钟实现Zabbix电话、短信、邮件、钉钉、飞书、企业微信等机器人报警

    Zabbix是现在企业用的比较多的开源监控系统,Zabbix电话短信报警更是运维不可缺少的报警渠道,假如半夜正在睡觉服务器异常了,这时候电话报警就非常必要. Spug推送助手针对常见的报警系统,内置好 ...

  8. zabbix配置步骤、操作及使用个人邮箱、企业微信、钉钉报警的配置

    一.监控端配置 步骤: 1.去官网下载包,从而有zabbix.repo,更新yum源 2.yum安装zabbix-server-mysql zabbix-web-mysql zabbix-agent ...

  9. zabbix报警-邮件-钉钉

    安装zabbix的时候已经配置了zabbix_server的脚本目录 AlertScriptsPath=/opt/app/zabbix/script 所以把邮件.钉钉.微信相关的脚本都放在/opt/z ...

最新文章

  1. 超简单的网页选项卡---jQuery
  2. 六种方法实现CSS三栏布局
  3. ar编码matlab仿真_matlab-ofdm通信链路仿真
  4. 几个网页制作的小技巧
  5. 结对编程:黄金点小游戏
  6. Java常用集合类:ArrayList
  7. qt种qdebug字符串_qDebug用法及中文乱码解决
  8. html下拉菜单换背景颜色,无下拉箭头的Select下拉框实现更换背景颜色
  9. mysql优化之insert/delete/update
  10. jQuery源码分析系
  11. 网上订餐系统python程序代码_网上订餐系统源代码
  12. 经典的战略管理和营销管理书《定位》
  13. 佳能Canon MF4700 一体机驱动
  14. word中的方括号怎么删_Word如何批量删除习题括号内答案
  15. 街头篮球服务器未响应,我的生涯我做主 《街头篮球》生涯联赛FAQ
  16. 测试每秒点击速度的软件,测试点击速度
  17. Mobaxterm X server远程Linux服务器使用浏览器(firefox或google chrome)
  18. 数组实现链表(C++代码+图解)
  19. kafka部署时出现的天坑
  20. Linux进程、线程模型,LWP,pthread_self()

热门文章

  1. linux终端串口调试(RS232 serial ttyS)
  2. Tutorial 05: Synching Video
  3. app logo显示不全没有铺满
  4. android 11 antutu AID64 等检测软件电池容量不匹配
  5. 微信正式支持注册小号,但不是谁都可以
  6. 数据分析--07:金融量化
  7. LiveQing视频云平台服务-接入一个或多个LiveNVR实现云端管理及直播
  8. 强大的第三方视频播放器。
  9. 使用 natbib 进行参考文献管理
  10. [转载] 百科全说——陈焕然:揭秘高科技美容(10-02-22)