66.添加自定义监控项目 配置邮件告警与测试及处理问题

19.12 添加自定义监控项目

19.13/19.14 配置邮件告警

19.15 测试告警(包括主动与被动、总结)

19.16 不发邮件的问题处理

 

 

 

 

 

19.12 添加自定义监控项目:

 

 

 

很多的监控项目是在模板里配置体现的。但是有时候会有一些个性化的需求。比如我们就像知道某一个业务的数据,想每天的会员的活跃度,那这些数据实际上是可以通过数据库里的表的数字体现出来的。但是我们zabbix模板是不可能提供这么详细的监控项目的。这时候就要写脚本把这个数字展现出来。然后通过一个监控项目再去形成图表。这就是zabbix可以让我们自定义的去监控一个项目:

 

~1.需求:监控某台web的80端口连接数,并出图

~2.两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现

~3.对于第一步,需要到客户端定义脚本

vim /usr/local/sbin/estab.sh //内容如下(路径的话无所谓,名字也自定义)

#!/bin/bash

##以下获取80端口并发连接数的命令

netstat -ant |grep ':80 ' |grep -c ESTABLISHED #80端口下ESTABLISHED状态的连接数有多少个(正常一台服务器数量不会超过100)

~4.chmod 755 /usr/local/sbin/estab.sh

#目的是给zabbix执行,所以要设置权限

~5.客户端上编辑配置文件vim /etc/zabbix/zabbix_agentd.conf//增加

UnsafeUserParameters=1 //表示使用自定义脚本

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh

#my.estab.count这个名字是在web界面下,键值那一栏里填的要保持一致

#[*]表示参数为空。如果有参数就写进去,以逗号分隔

//自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh

~6.重启zabbix-agent服务systemctl restart zabbix-agent

~7.首先到服务端验证,执行命令

zabbix_get -s 192.168.30.136 -p 10050 -k 'my.estab.count'

#zabbix_get为命令行工具。收跟客户端的数字是一样的,为0

~8.然后在zabbix监控中心(浏览器)配置增加监控项目

键值写my.estab.count #就是我们在~05.步骤,配置客户端文件所设置额名字,要与他保持一致

~9.添加该项目后,到“监测中” “最新数据”查看刚添加的项目是否有数据出现

~10.有了数据就可以添加图形了

“配置”“主机” “图形” “创建图形”

 

 

 

实例:

[root@afeilinux-02 ~]# vi /usr/local/sbin/estab.sh

#!/bin/bash
##以下获取80端口并发连接数的命令

[root@afeilinux-02 ~]# netstat -ant |grep ':80 ' |grep -c ESTABLISHED

0 #先在客户端上这个命令,先出这个数字。在跟后面的服务端操作的数字是否一致

[root@afeilinux-02 ~]# chmod 755 /usr/local/sbin/estab.sh

[root@afeilinux-02 ~]# vi /etc/zabbix/zabbix_agentd.conf

### Option: UnsafeUserParameters

# Allow all characters to be passed in arguments to user-defined parameters.

# The following characters are not allowed:

# \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @

# Additionally, newline characters are not allowed.

# 0 - do not allow

# 1 - allow

#

# Mandatory: no

# Range: 0-1

# Default:

# UnsafeUserParameters=0 #搜索UnsafeUserParameters。在这一行下面定义

UnsafeUserParameters=1

### Option: UserParameter

# User-defined parameter to monitor. There can be several user-defined parameters.

# Format: UserParameter=<key>,<shell command>

# See 'zabbix_agentd' directory for examples.

#

# Mandatory: no

# Default:

# UserParameter= #搜索UserParameter。在这一行下面定义

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh

[root@afeilinux-02 ~]# systemctl restart zabbix-agent

[root@afeilinux-01 ~]# zabbix_get -s 192.168.30.136 -p 10050 -k 'my.estab.count'

0 #这个数字对应客户端的一开始测试的数字

然后下面我们再在监控中心,增加这个监控项目

 

 

 

添加完监控项,我们还要给他做图形,因为这是我们的需求

 

 

 

以上完成需求。如果我们的网站访问量很大,每隔30秒就会出一次数据

那么我们还可以添加触发器:

 

 

 

以上,其中表达式添加如何选如下图:

 

以上,满足我们设置的条件就会报警(我们设置的警告级别)。至于怎么报警后面我们在讲

总结:首先我们要通过脚本获得出这个数字,因为我们成图的这个要求都是这个数字。写完脚本再给权限,然后zabbix1 get这个工具能在服务端获得这个数字。然后再监控中心获得这个监控项,然后去创建图形。有需要报警的话再创建触发器

 

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

19.13/19.14 配置邮件告警:

 

 

 

 

~1.使用163或者QQ邮箱发告警邮件

~2.首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务

~3.开启并记录授权码

~4.然后到监控中心设置邮件告警

“管理”,“报警媒介类型”,“创建媒体类型”

{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

#并在脚本参数里添加这三个参数

{ALERT.SENDTO}表示发给谁,就是你接受邮件的邮箱地址

{ALERT.SUBJECT}是主题

{ALERT.MESSAGE}是邮件内容

以上这三个分布在我们的pytion脚本的三个参数里,等会会在命令行下测试

 

 

~5.创建报警脚本mail.py(配置文件里定义的AlertScriptsPAth定义的,就是我们的mail.py文件必须要放在他定义的这个路径下)

vim /usr/lib/zabbix/alertscripts/mail.py//内容参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

~6.chmod 755 /usr/lib/zabbix/alertscripts/mail.py #!!非常重要

~7.python mail.py wangxinlinux@163.com "这是一封测试的邮件" "linux21:41"

#测试能不能发邮件,并回到邮箱里检查

~8.创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“baojing”,注意用户的权限,如果没有需要到用户组去设置权限

~9.设置动作(意思就是触发了规则,要做什么,邮件或是短信等等),“配置”,“动作”,“创建动作”,名称写“sendmail”(自定义),“操作”页面,内容如下

HOST:{HOST.NAME} {HOST.IP} #定义的hostname

TIME:{EVENT.DATE} {EVENT.TIME} #发生的日期和时间

LEVEL:{TRIGGER.SEVERITY} #示警度。刚刚定义的未分类

NAME:{TRIGGER.NAME} #我们之前定义的KEY,是哪个触发器触发了告警

messages:{ITEM.NAME}:{ITEM.VALUE} #告警的时候会出现什么样的状态码

ID:{EVENT.ID} #这个事件的ID

“新的触发条件”,A维护状态非在维护,B触发器示警度>=未分类

“操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”

切换到“恢复操作”,把信息改成如下

HOST:{HOST.NAME} {HOST.IP}

TIME:{EVENT.DATE} {EVENT.TIME}

LEVEL:{TRIGGER.SEVERITY}

NAME:{TRIGGER.NAME}

messages:{ITEM.NAME}:{ITEM.VALUE}

ID:{EVENT.ID}

点击“新的”,“操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”

~10.测试告警

 

 

 

 

 

实例:

 

开启服务后,我们在去监控中心设置邮件告警

 

 

 

 

 

然后回到linux01机器上来:

[root@afeilinux-01 ~]# vi /usr/lib/zabbix/alertscripts/mail.py #创建这个python脚本mail.py

#!/usr/bin/env python

#-*- coding: UTF-8 -*-

import os,sys

reload(sys)

sys.setdefaultencoding('utf8')

import getopt

import smtplib

from email.MIMEText import MIMEText

from email.MIMEMultipart import MIMEMultipart

from subprocess import *

 

def sendqqmail(username,password,mailfrom,mailto,subject,content):

gserver = 'smtp.163.com' #因为用的163,所以定义为163

gport = 25 #25端口,不加密的那个

 

try:

# msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝试把这行改成如下:

msg = MIMEText(content,'plan','utf-8')

msg['from'] = mailfrom

msg['to'] = mailto

msg['Reply-To'] = mailfrom

msg['Subject'] = subject

 

smtp = smtplib.SMTP(gserver, gport)

smtp.set_debuglevel(0)

smtp.ehlo()

smtp.login(username,password)

 

smtp.sendmail(mailfrom, mailto, msg.as_string())

smtp.close()

except Exception,err:

print "Send mail failed. Error: %s" % err

 

 

def main():

to=sys.argv[1]

subject=sys.argv[2]

content=sys.argv[3]

##定义QQ邮箱的账号和密码(邮箱的授权码),你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)

sendqqmail('wangxin@163.com','***********','wangxin@163.com',to,subject,content)

邮箱邮箱密码邮箱

if __name__ == "__main__":

main()

#####脚本使用说明######

#1. 首先定义好脚本中的邮箱账号和密码

#2. 脚本执行命令为:python mail.py 目标邮箱"邮件主题" "邮件内容"

[root@afeilinux-01 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py #一定要记得改权限,不然那不能够报警

[root@afeilinux-01 alertscripts]# python mail.py wangxinlinux@163.com "这是一封测试的邮件" "linux21:41" #我们测试一下能不能发邮件。并回到163邮箱里检查是否收到这封邮件

然后接下来,我们就要创建一个接受邮件的用户了(点击创建用户):

以上用户设置完

我们还要设置他的报警媒介:

 

以上,报警媒介设置完

我们还要设置他的用户组权限。要去用户组里去设置:

 

以上我们,设置了所有组的权限。(选择完成过别忘记点添加)

 

以上,别忘了,我们再去检查一下所有组的权限是不是读写。很重要!!

然后去设置动作:

 

 

 

 

以上设置动作、操作、恢复动作

以上全部配置邮箱告警就已完成

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

 

19.15 测试告警:

 

 

~~扩展补充

更改监控项的主动与被动:

点击模板,axin那一行里点监控项,选择一项。如下图:

 

 

 

 

~~总结:

告警发邮件

1.163邮箱开启服务,并记录授权码。授权码要写到到脚本里面的

2.监控中心设置邮件告警。首先做一个告警媒介。实验中名字就叫baojing,注意名字与linux上的脚本名字(mail.py)一致,三个参数写对并且顺序不能改

3.在linux上配置mail.py脚本。路径要搞对/usr/lib/zabbix/alertscripts/这个路径下创建mail.py(当然名字自定义)

4.千万记得配置完的mail.py这个脚本权限改为755

5.配置用户。要在用户组权限里把这个用户的权限改为读写,因为我们要把这个用户加入到组里面(组的权限也要是读写)。这个用户要加入到组里面(我们实验中加入到了admin*组里面去了)。并且报警媒介再次检查权限与邮箱地址,然后测试,在linux上命令行给自己发一封测试邮件

6.动作。创建的时候,名称自定义,条件保持默认。操作项里,格式复制笔记里面的,还要加新的(就是定义给谁发邮件)、仅送到选择我们设置的baojing 这个告警媒介。恢复操作项,格式一样复制笔记里的,还要加新的(给谁发邮件)、仅送到选择我们设置的baojing

7.测试。我们人为的搞个触发器出来

比如系统负载当他小于1的时候就告警(正常是0,没有负载)。故意的搞错让他告警发邮件。关注仪表盘的最近20个问题这一栏

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

19.16 不发邮件的问题处理:

 

~~出现问题几个排查项:

1.保证脚本能发邮件、并且有权限

2.检查报警媒介有没有配置对

3.查看用户。报警媒介、权限

4.动作。条件保持默认即可。操作项(给谁发)、恢复操作项(给谁发)

 

以上若都没问题,只能重做一遍,有可能是zabbix的bug

 

转载于:https://my.oschina.net/u/3866192/blog/3098091

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值