当前位置: 首页 > news >正文

Linux部署zabbix3.4 结合钉钉智能报警

Ubuntu16.04和Centos7.4两种操作系统部署zabbix3.4及zabbix功能介绍和各种小问题解决办法,分享最新,最潮流,最干的干活,解决最实在的问题,此博客也是本人在对zabbix懵懂时期各种摸索排坑到正式上线,最后到生产中检测200多台生产机,至今为止为出现任何误报警,不报警等情况


首先我们了解下zabbix监控的基础概念,以及工作原理和框架:
什么是zabbix:
Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案
agent端:主机通过安装agent方式采集数据。
server端:通过收集agent发送的数据,写入数据库(MySQL,ORACLE等),再通过php+apache在web前端展示.
zabbix = cacti + nagios

优点和缺点:
优点:基于两款工具优点于一身并更强大,实现企业级分布式监控。
缺点:zabbix一个服务端只能有一个lamp支撑,所以DB的吞吐有限和单台server端服务器的处理能力有限,所以监控的主机有限,但是正常zabbix能满足我们的需求

监控功能:
主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细的报表图表绘制
监控主机zabbix有专用的agent,可以监控Linux,Windows,FreeBSD等 。
监控网络设备zabbix通过SNMP,ssh(不多用)
可监控对象

设备:服务器,路由器,交换机
软件:OS,网络,应用程序
主机性能指标监控
故障监控: down机,服务不可用,主机不可达

工作原理:
一个监控系统运行的大概的流程是这样的:
zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。

zabbix重要组件:
1、Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
2、Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3、Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上;
4、Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;
5、Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;
注:zabbix node也是 zabbix server的一种 。

zabbix监控环境中基本概念:
1、主机(host):要监控的网络设备,可由IP或DNS名称指定;
2、主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;
3、监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识;
4、触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";
5、事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;
6、动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;
7、报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;
8、媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;
9、通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
10、远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
11、模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至某个主机;
12、应用(application):一组item的集合;
13、web场景(web scennario):用于检测web站点可用性的一个活多个HTTP请求;
14、前端(frontend):Zabbix的web接口;

zabbix框架:
在实际监控架构中,zabbix根据网络环境、监控规模等 分了三种架构: server-client 、master-node-client、server-proxy-client三种 。
1、server-client架构
也是zabbix的最简单的架构,监控机和被监控机之间不经过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互。适用于网络比较简单,设备比较少的监控环境 。
2、server-proxy-client架构
其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server 。该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控。
3、master-node-client架构
该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性。

如:
Linux部署zabbix3.4 结合钉钉智能报警


废话不多说进入真题,参考文献如下:
https://www.baidu.com/link?url=iGDyXTko4oHDeqUNDp-4vCFrIjPZ0vlz1m8JLQ1Fp7ny8mHFUytJNDL_8wmjTNhx&wd=&eqid=ec6b1e6e0000d1bc000000025b55a309


实验所需安装包(Centos和Ubuntu都有):
链接:https://pan.baidu.com/s/1Du_45JKXyhBp8r5rSw7WFA 密码:afy0

为了方便我们把防火墙和selinux关闭了(下面命令是Centos7,Ubuntu网上自己找下,在此不多做解释,节省时间)

systemctl stop firewalld                #关闭防火墙
systemctl disable firewalld           #开机自动关闭防火墙
setenforce 0                                 #零时关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config     #永久关闭
  1. 安装zabbix调用mysql及php的驱动
    Ubuntu:
    #下载安装deb包,若下载过慢,可在我提供的百度云中下载
    wget https://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+bionic_all.deb
    #安装deb包
    dpkg -i zabbix-release_3.4-1+bionic_all.deb
    #更新源
    apt update

Centos:

#下载并安装rpm包
rpm -i https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

注:如果网速太慢使用百度云中下载的安装的话直接安装即可:
Ubuntu:dpkg -i zabbix-release_3.4-1+bionic_all.deb Centos:rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

Ubuntu:

apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-agent

Centos:

yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent 

注:很多首次安装zabbix的人可能会认为上面的操作是安装mysql,这个安装了mysql调用mysql的驱动

zabbix依赖lamp平台,所以我们需要安装Apache,PHP,MySQL(若有mysql可以直接使用,不必为zabbix安装一个mysql)

  1. 安装zabbix依赖程序:
    Ubuntu:
    apt-get install php7.0 php7.0-gd libapache2-mod-php7.0 php7.0-mysql php7.0-bcmath php7.0-mbstring php7.0-xml apache2            #若没有mysql可以自己安装一次,本片博客直接使用阿里云的RDS

Centos:

yum install php-common php-gd php-mbstring php-xml php-bcmath php-mysql php-cli php-devel php-pear httpd

创建数据库和用户并导入源数据

Ubuntu:

mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
mysql> quit;

导入数据:

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

Centos:

#创建库和用户和Ubuntu是一样的
#导入数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix 

修改zabbix主配文件(Centos和Ubuntu相同)

DBHost=IP                       #mysql数据库的地址
DBName=zabbix              #数据库的库名
DBUser=zabbix                #zabbix调取数据库的用户名
DBPort=3306                   #数据库的端口

注:这些是基本必须要修改的东西,还可以修改定义zabbix的log,pid,如:

LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
#如果自定义的话,必须要创建这个目录,否则启动可能失败,并且给这个目录与zabbix可执行权限

这个地方一定要注意,修改php的时区,如果不修改话,后面一定会出错:

vim /etc/apache2/conf-enabled/zabbix.conf
# php_value date.timezone Europe/Riga  (修改前)
php_value date.timezone Asia/Shanghai   (修改后)

此时zabbix我们安装的就差不多了,接下我们开始启动

注:在启动zabbix最好先看下Apache的端口是否被占用,一般被占用的可能性非常大,修改Ubuntu的Apache2默认端口:

vim /etc/apache2/ports.conf
修改Listen 
如:Listen 8082

Centos:

vim /etc/httpd/conf/httpd.conf
#修改42行 Listen 8082

启动zabbix,先启动Apache:
Ubuntu:

systemctl start apache2
#Ubuntu启动Apache的方式和Centos有所不同

Centos:

systemctl start httpd

启动zabbix-server(centos和Ubuntu相同)

systemctl start zabbix-server
#启动的时候我们一定要加-server,因为zabbix分server端和agent端

启动zabbix-server后查看端口状态:

netstat -anpt | grep 10051
#server端默认端口是10051,agent端默认是10050

注:若启动没有报错,但是systemctl status zabbix-server 和netstat -anpt | grep 10051都没有正常显示,我们不妨看看错误日志(/var/log/zabbix),正常情况启动失败的问题大多出在调取数据库的数据出问题,那么我们首先可以telnet下数据库的端口是否有问题,若 没问题可以在看下zabbix主配文件中写的数据库IP,Port,User,Password是否有问题,若没问题,在看看端口是否被占用,一般只会出现这几个问题,若这几个都没问题,依旧出错,那你就看下面我的联系咱两一起探讨研究下吧

启动没有问题后直接访问:
http://[zabbix-server IP]:[apache port]/zabbix
接下来,web页面的操作不管什么操作系统都是一样的,原因就不说了

直接点击下一步即可(Net step)
Linux部署zabbix3.4 结合钉钉智能报警

这个地方一定要注意,右边的框里面必须全都是OK,否则进行不下去:(ok的话直接下一步即可)
注:一遍这个地方不ok,那么你可以看下你的php时区有没有写对,或者有没有生效,或者修改了,忘了重启(重启Apache即可,但也可把zabbix-server重启下)
Linux部署zabbix3.4 结合钉钉智能报警

接下来我们开始设置数据库了:
Linux部署zabbix3.4 结合钉钉智能报警

Database type                                         #选择数据库类型,我们一般使用mysql即可
Database host                                         #数据库的IP地址
Database port                                         #数据库的端口(mysql默认3306,根据实际情况设置)
Database name                                      #数据库的库名(一遍的话是zabbix)
User             #zabbix调取数据库数据的用户(如果上面zabbix的库没有给zabbix赋权的话,这里给root用户即可)
Passsword                                              #上面User用户的密码

这儿就是个名字,随便设置都行,默认也可以:
Linux部署zabbix3.4 结合钉钉智能报警

建议按照实际情况填写:
Host                                                     #zabbix-server IP
Port                                                      #zabbix-server端口(10051)
Name                                                   #zabbix名字(填写zabbix-server)

这儿显示的是你进入web页面填写的信息,确认无误下一步即可:
Linux部署zabbix3.4 结合钉钉智能报警

此时会通知我们Successfully,表示成功了,下一步就可以了:
Linux部署zabbix3.4 结合钉钉智能报警

苦尽甘来,我们设置都结束了,可以登录zabbix:
默认用户:Admin
默认密码:zabbix
Linux部署zabbix3.4 结合钉钉智能报警

至此我们的搭建已经全线完成了,如果有问题联系QQ:1715721936


下面我们介绍zabbix Web里面的设置,以及zabbix的使用方法,以及监控方式,以及修改默认模板,添加监控报警等等,详情请跟着我的步伐往下走

不多逼逼,直接进入正题:

刚进入zabbix web页面的时候显示的全是英文,对于英国历史好的人来说没问题,但对我这种英语垃圾的连幼儿园小孩都不如的人,还是设置中文的比较好:

在主页点开这个小人头:
Linux部署zabbix3.4 结合钉钉智能报警

进入后:
Linux部署zabbix3.4 结合钉钉智能报警

zabbix3.4版本默认就是支持中文的,所以网上有写教程让你设置下面这些东西,都是3.4版本之前的教程,3.4至3.4以上都是默认即可:
Linux部署zabbix3.4 结合钉钉智能报警

一般Centos系统的话里面都多个国家的字符集,但是Ubuntu里面默认就没有中文字符集,里面chinese(zh_CN)显示是灰色的,无法选中,旁边一直显示: You are not able to choose some of the languages, because locales for them are not installed on the web server. 这个就是你操作系统没有中文字符集,你的给操作系统装中文字符集,装完后得等特别长时间,后者重启zabbix-server这儿就显示跟我的一样可以选择国语了,如果这些你都整了,但是依旧选择不了中文,那么告诉你,肯定是你创建库的时候没有Utf-8

选择中文后更新,接下来就是我们熟悉的画面了:
Linux部署zabbix3.4 结合钉钉智能报警

说到这,很多人就有点纳闷,为什么我的zabbix是白色的那么丑,李优秀你的zabbix怎么是黑的这么炫,类似这些小问题我会一一教大家如何设置操作的,zabbix一定要注意细节,特别时候面采集数据,以及监控的时候,一定要特别注意,否则就检测不到数据:


修改zabbix主题颜色:
还是点击那个小人,在小人里面点击主题,选择Dark,然后更新即可,这时候你就可以和我一样优秀了
Linux部署zabbix3.4 结合钉钉智能报警


这时候我们的zabbix基本操作就基本圆满了,下面我们开始介绍zabbix的使用方法:
首先我们添加agent(客户端),这样我们就可以通过agent端来采集数据,然后在传输到server进行监控报警了

安装agent:
agent安装我们直接使用yum或者apt即可,但是一定要保证zabbix-server 端和agent端的版本是一样的,如果不一样的话监控是会出问题的,agent采集数据是不分操作系统的,只要你把信息填好了,不管agent在windows上还是Centos,还是Ubuntu上都没问题的,下面演示安装agent

注:在下载deb或者rpm包的时候一定要注意,这些包是根据你的操作系统版本下的,本博客提供的包和下载链接,centos系统全是7版本的,Ubuntu的全是16.04版本的
Ubuntu:

wget https://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb
dpkg -i zabbix-release_3.4-1+xenial_all.deb
apt update 
apt -y install zabbix-agent

Centos:

rpm -i https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
yum -y install zabbix-agent

配置zabbix-agent:(配置Ubuntu和Centos都是一样的)

vim /etc/zabbix/zabbix_agentd.conf
修改内容如下:
Server=[server端IP]                                  #server端主动取数据的配置
ListenPort=10050                                     #agent端进程端口
ServerActive=[server端的IP]                    #agent端主动推数据的配置
Hostname=zabbix-server                         #主机名,理论上要是server端能解析的才行,但是随便写也行,后期添加监控主机的的时候需要这个名字,最好是写本机IP
Timeout=15                                              #超时时间
UnsafeUserParameters=1                       #开启key验证,为了后面添加自定义脚本监控
Include=/etc/zabbix/zabbix_agentd.d/*.conf     #添加自定义脚本监控这是zabbix加载/etc/zabbix/zabbix_agent/目录下所有以.conf结尾的配置文件
#Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/  #开启上面那个配置,下面的就要注释掉,否则会冲突,zabbix-agent启动失败

配置完成启动zabbix-agent即可:

systemctl start zabbix-agent
systemctl enable zabbix-agent         #加入开机自启动
netstat -anpt | grep 10050                #查看端口监听

显示如下即可:
Linux部署zabbix3.4 结合钉钉智能报警

zabbix-agent 配置好了,就不用管他了,直接到server-web端设置即可:
先点配置再点主机,再点创建主机:

Linux部署zabbix3.4 结合钉钉智能报警

首先编写主机名,主机名即是zabbix-agent里面的Hostname,这两个必须一致否则,检测不到主机,然后编写可见主机名,这个是在后面查找数据的时候要用到的主机名,接着是选择这个检测服务器在那个组里面,可以在下面新建群组,也可以向我这样选择已有得我,最后是agent端的IP和port,最后点击模板,我们先 调用自带的模板:

Linux部署zabbix3.4 结合钉钉智能报警
先点击选择,在里面找到自己所需要的模板,一般Linux服务器就选择Template OS Linux即可,然后添加,最后更新:
Linux部署zabbix3.4 结合钉钉智能报警
添加完后,在配置 主机里面我们可以看到已经有我们添加的主机了,如果看到未启用,我们需要手动点击下,让他启用,然后等个三五分钟,有的时间可能更长,等ZBX亮了,就说明监控上了
注:zabbix监控linux主机的cpu,内存,磁盘是自动发现的,这些我们不用人工去干预

Linux部署zabbix3.4 结合钉钉智能报警

这时候我们点击检测中,然后点击最新数据,在主机中填写上面填写的可见主机名,然后应用就可以看到我们监控的数据了:
Linux部署zabbix3.4 结合钉钉智能报警
最后我们点击旁边的图形就能看到我们当前监控数据情况了:
Linux部署zabbix3.4 结合钉钉智能报警
在图形里面我们可以看历史数据(在上面缩放里面调整,历史数据保留的时间在配置中可以设置,在此不做演示)


注:使用中文后我们的最新数据中的最下角的中文肯定会乱码的,即使3.4版本支持中文也会,这是zabbix里面的字体有关系,下面是解决办法

修改最新数据图形中的乱码:
从windows上拷贝字符集到服务器上:
打开windows控制面板>字体>选择一种字体复制到桌面,然后使用rz导入到服务器中
Linux部署zabbix3.4 结合钉钉智能报警
字体一般选择简体就行,更具个人爱好,你选择哪种字体后期显示就是什么字体,把字体拷到服务器后:
Ubuntu和Centos系统的操作一样:

把字体包simkai.ttf 移动到/usr/share/zabbix/fonts目录下
若,simkai不是一.ttf后缀的需要改成.ttf后缀,并把原有的字体mv到别的地方
/usr/share/zabbix/include/defines.inc.php
sed –i s/DejaVuSans.ttf/simkai/g defines.inc.php

重启zabbix-server即可生效


下面我们说下已定义脚本监控:
我们上面在zabbix-agent里面配置了

Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1

在此处就可以用到了,现在/etc/zabbix/zabbix_agent.d目录下创建以.conf后缀的配置文件都会被zabbix-agent读取,如:
Linux部署zabbix3.4 结合钉钉智能报警
它自带的userparameter_mysql.conf这个文件我们不用管它,直接编辑自己的配置文件即可

文件的内容有严格要求,如:
Linux部署zabbix3.4 结合钉钉智能报警

UserParameter=                             #是固定格式
java_8888                                       #是自己定义的key,待会儿添加监控的时候回用到
/usr/local/src/lijun/8888.sh              #是自己定义的脚本,也可以是命令

下面是我自己用shell写的一个简单的脚本,获取http返回状态码来检测当前程序的状态:

#!/bin/bash
ID=`curl -I http://[主机IP]:[程序port] -s | grep HTTP | awk '{print $2}'`
if [ "$ID" = "200" ];then
        echo "1"
elif [ "$ID" = "302" ];then
    echo "1"
else
        echo "0"
fi

配置完这些我们重启zabbix-agent,这个地方一定要重启,后期zabbix-server端采集不到agent上面的数据的时候你首先得想到时候agent是否重启,后面会说到agent采集不到数据的各种原因

下面是在zabbix-server web页面中添加主机的自定义监控:
在配置主机中点击进入你要添加脚本监控的那台主机中
Linux部署zabbix3.4 结合钉钉智能报警

然后选择添加监控项:
Linux部署zabbix3.4 结合钉钉智能报警

进入后右上角有个创建监控项,对,没错!就是点击他:

Linux部署zabbix3.4 结合钉钉智能报警

名称:被监控的程序名称
键值:是在/etc/zabbix/zabbix_agent.d/java-8888.conf中设置的,如:
Linux部署zabbix3.4 结合钉钉智能报警
应用采集可以新添加一个,这样我们可以把一类监控程序全放到一个采集里面,方便产看,直接在上面填写即可,还可以在线面选择,然后点击添加即可

接下来我们看下我们添加的监控项:(刚添加完需要稍等会儿才会有数据)
Linux部署zabbix3.4 结合钉钉智能报警

在这里面查找我们刚刚添加的,监控,如下:
Linux部署zabbix3.4 结合钉钉智能报警
JAVA_CURL是我们刚刚新建的应用采集,点击右侧的图形,即可看到我们采集的数据:
Linux部署zabbix3.4 结合钉钉智能报警
此时我们脚本自定义监控就设置完成了


有的时候我们zabbix模板里面定义的监控指标和阈值不满意,接下来我带大家一起来设置下:
修改zabbix自定义模板:
选择配,置模板:
Linux部署zabbix3.4 结合钉钉智能报警
在下面查找我们的模板,我们刚刚调用的那个模板第二页:
Linux部署zabbix3.4 结合钉钉智能报警
点击到模板里面,如:
Linux部署zabbix3.4 结合钉钉智能报警
找到需要修改的模板,然后点击进入,即可修改
注:修改模板的话,直接应用到全局 ,只要是主机调用这个模板,在这修改后,调用的主机都会被影响


最后给大家讲下触发器和zabbix结合钉钉做智能报警:

先说下修改模板自带的触发器
更上面的步骤一样选择的是触发器而不是监控项
Linux部署zabbix3.4 结合钉钉智能报警

最后点击进入就可以修改了,如:
Linux部署zabbix3.4 结合钉钉智能报警
只有在这里面才能修改,在其他地方你只能看到触发器的配置,但是却无权修改

注:到这大家可定还会发现个问题,模板里面的东西都能修改,但是为什么磁盘和网络的阈值却没法修改,下面会跟大家说下:
更上面的操作一样,但这地方我们需要选择自动发现规则,在这里面即可调整,随心所欲的阈值了
Linux部署zabbix3.4 结合钉钉智能报警
如下:
Linux部署zabbix3.4 结合钉钉智能报警
需要再次点击到触发器中才能修改,如:
Linux部署zabbix3.4 结合钉钉智能报警

创建自定义触发器:
首先选择配置,主机,在选择哪个主机,再点触发器,然后选择 创建触发器:
Linux部署zabbix3.4 结合钉钉智能报警
名称:触发器名
严重性:选择触发后报出的当前主机程序的情况
表达式:选择添加,如:
Linux部署zabbix3.4 结合钉钉智能报警
在监控项里面选择我们想对应的监控项
功能:条件表达式中判断语句,如:
Linux部署zabbix3.4 结合钉钉智能报警
注:一般我框的这几个是最好用的,最新的T值 < N :意思为当采集到的最新一个值,小于N的时候,就触发 触发器,N这个值在下面的N选项中设置
Linux部署zabbix3.4 结合钉钉智能报警

间隔秒:间隔多少秒触发一次,一般默认即可
然后选择添加即可,完成的触发器如下:
Linux部署zabbix3.4 结合钉钉智能报警


下面是钉钉报警环节:
首先我给大家理下报警的思路:首先我们需要采集数据然后然后创建触发器,在触发器中添加报警阈值,当采集的数据触发了触发器,那么就会触发报警媒介类型,最后触发脚本,在使用钉钉机器人进行报警

钉钉提供了丰富的API接口,我们直接使用就行:
首先在钉钉中创建群聊,在群聊中添加机器人(这个就不做演示)
我们需要用到机器人的webhook,往下面python脚本中添加:
Linux部署zabbix3.4 结合钉钉智能报警

我们需要把在zabbix-server端创建触发脚本,脚本内容如下:

cd /usr/lib/zabbix/alertscripts
vim dingdingrobot.py
内容如:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author: lijun10283215@163.com
# My blog: https://blog.51cto.com/13859393
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=*******************1234jkcbadh"  #上面机器人里面复制内容

def msg(text):
    json_text= {
     "msgtype": "text",
        "at": {
            "atMobiles": [
                "187**********"
            ],
            "isAtAll": False
        },
        "text": {
            "content": text
        }
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content

if __name__ == '__main__':
    text = sys.argv[1]
    msg(text)

对脚本进行赋权:

chmod a+u dingdingrobot.py

接下来我们手动调试下看看python脚本好不好用:

python dingdingrobot.py 123

在看看钉钉群聊中是否有消息:
Linux部署zabbix3.4 结合钉钉智能报警
这说明我们的脚本调用zabbix可爱的小机器人是没问题的,这时候是不是激动的大喊nice,nice

接下来我们在zabbix这设置让他自动报警:

点击管理,报警媒介类型,创建媒介类型:
Linux部署zabbix3.4 结合钉钉智能报警

创建的内容如下:
Linux部署zabbix3.4 结合钉钉智能报警

接下来我们设置使用那个用户来进行执行报警,一般使用Admin用户:
选择管理,用户
Linux部署zabbix3.4 结合钉钉智能报警
点击进入Admin用户,进行设置:
在媒介中选择添加
类型选择:选择我们刚刚在报警媒介中设置的钉钉报警
收件人:可以随便设置
当前时间可以保持默认:即为7 * 24 小时不间断
如果存在严重性则使用:根据自己情况定
Linux部署zabbix3.4 结合钉钉智能报警

下面是创建动作:
配置,动作,创建动作:
Linux部署zabbix3.4 结合钉钉智能报警

首先创建动作:
Linux部署zabbix3.4 结合钉钉智能报警

在创建操作:
Linux部署zabbix3.4 结合钉钉智能报警

创建恢复操作:
Linux部署zabbix3.4 结合钉钉智能报警

确认操作:
Linux部署zabbix3.4 结合钉钉智能报警
点击更新即可

三个操作内容分别如下 :

服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}

服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
}

服务器:{HOST.NAME}: 报警确认
{
确认人:{USER.FULLNAME} 
时间:{ACK.DATE} {ACK.TIME} 
确认信息如下:
"{ACK.MESSAGE}"
问题服务器IP:{HOSTNAME1}
问题ID:{EVENT.ID}
当前的问题是: {TRIGGER.NAME}
}

注:这里面的内容可任意修改


最后来个演示钉钉报警演示:

创建触发器:
Linux部署zabbix3.4 结合钉钉智能报警

然后在服务器上把监控的这个程序停掉,看看是否有报警:
开始报警:
Linux部署zabbix3.4 结合钉钉智能报警
报警恢复:
Linux部署zabbix3.4 结合钉钉智能报警

邮件报警可参考此链接:
https://www.cnblogs.com/saneri/p/6078069.html

至此zabbix的基本使用已经没有问题了

本博客有很多细节并没有写好,后面还会持续跟进细节内容讲解


有志者事竟成,破釜沉舟,百二秦关终属楚;
苦心人天不负,卧薪尝胆,三千越甲可吞吴;

在看本博客进行试验过程中如果遇到问题请联系QQ:1715721936,欢迎大家一起探讨,一起研究学习交流

转载于:https://blog.51cto.com/13859393/2149439

相关文章:

  • 学生分数排序
  • zabbix3.4上简单web监测功能测试
  • linux系统man查询命令等级与意义
  • 关于ES6的Promise的使用深入理解
  • P1065 津津的储蓄计划
  • 2018年 7月总结8月计划
  • Proteus仿真_01、 8086 IO译码仿真
  • CentOS 7之Postfix部署系列 (二) CentOS网络设置
  • AJAX PHP 请求实例
  • 使用Formik轻松开发更高质量的React表单(二)使用指南
  • HDU-3874 Necklace 线段树+离线
  • topcoder srm 590 div1 (max_flow_template)
  • JavaScript 代码格式化
  • ubuntu12.04下面安装eclipse开发环境
  • Java虚拟机详解03----常用JVM配置参数
  • 网络传输文件的问题
  • Angular 响应式表单之下拉框
  • HTTP请求重发
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript 一些 DOM 的知识点
  • Javascript编码规范
  • java多线程
  • LeetCode算法系列_0891_子序列宽度之和
  • markdown编辑器简评
  • react 代码优化(一) ——事件处理
  • REST架构的思考
  • STAR法则
  • 给新手的新浪微博 SDK 集成教程【一】
  • 来,膜拜下android roadmap,强大的执行力
  • 离散点最小(凸)包围边界查找
  • 通信类
  • 移动端唤起键盘时取消position:fixed定位
  • 用jquery写贪吃蛇
  • 用jQuery怎么做到前后端分离
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # Maven错误Error executing Maven
  • #pragma预处理命令
  • (2020)Java后端开发----(面试题和笔试题)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计ssm电影分享网站
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十)c52学习之旅-定时器实验
  • (转)Linq学习笔记
  • (转载)虚函数剖析
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .cn根服务器被攻击之后
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET Remoting学习笔记(三)信道