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

19.12 添加自定义监控项目python

19.13/19.14 配置邮件告警linux

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

19.16 不发邮件的问题处理web

 

 

 

 

 

19.12 添加自定义监控项目:shell

 

 

 

不少的监控项目是在模板里配置体现的。可是有时候会有一些个性化的需求。好比咱们就像知道某一个业务的数据,想天天的会员的活跃度,那这些数据其实是能够经过数据库里的表的数字体现出来的。可是咱们zabbix模板是不可能提供这么详细的监控项目的。这时候就要写脚本吧这个数字展示出来。而后经过一个监控项目再去造成图表。这就是zabbix可让咱们自定义的去监控一个项目:数据库

 

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

~2.两步:1)zabbix监控中心建立监控项目;2)针对该监控项目以图形展示浏览器

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

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.208.128 -p 10050 -k 'my.estab.count'

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

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

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

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

~10.有了数据就能够添加图形了

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

 

 

 

实例:

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

#!/bin/bash

##如下获取80端口并发链接数的命令

netstat -ant |grep ':80 ' |grep -c ESTABLISHED

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

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

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

[root@axinlinux-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@axinlinux-02 ~]# systemctl restart zabbix-agent

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

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

而后下面咱们再在监控中心,增长这个监控项目

 

添加完监控项,咱们还要给他作图形,由于这是咱们的需求

 

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

那么咱们还能够添加触发器:

 

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

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

总结:首先咱们要经过脚本得到出这个数字,由于咱们成图的这个要求都是这个数字。写完脚本再给权限,而后zabbix1 get这个工具能在服务端得到这个数字。而后再监控中心得到这个监控项,而后去建立图形。有须要报警的话再建立触发器

 

 

 

 

 

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

 

 

 

 

19.13/19.14 配置邮件告警:

 

 

 

 

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

~2.首先登陆你的163邮箱,设置开启POP三、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@axinlinux-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@axinlinux-01 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py #必定要记得改权限,否则那不可以报警

[root@axinlinux-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

相关文章
相关标签/搜索