9.12任务

19.12 添加自定义监控项目

很多监控项目虽然zabbix已经准备了很多模板,但是非常个性化的监控项目还是要自定义的。

zabbix支持自定义,个人觉得还是非常不错的。

我们的做法就是写一个脚本提供返回值,再通过zabbix绘图的形式展现出来。

 

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

步骤:1)zabbix监控中心创建监控项目;

           2)针对该监控项目以图形形式展现。

我们现在客户端创建一个脚本,

[root@clone2: ~]# vim /usr/local/sbin/estab.sh 

#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED


[root@clone2: ~]# chmod 755 /usr/local/sbin/estab.sh

然后要在客户端上编辑配置文件

[root@clone2: ~]# vim /etc/zabbix/zabbix_agentd.conf

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

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

重启一下zabbix-agent服务。

我们需要把my.estab.count键值填到zabbix的监控中,也可以用命令行的形式在服务端检查。

[root@localhost: ~]# zabbix_get -s 192.168.127.102 -p 10050 -k 'my.estab.count'
0

如果显示权限不够,就是因为没有设置755,因为执行脚本的是zabbix用户。

55930abc36333bd1f94763842ee810fb6c6.jpg

键值一定要正确填写。

在配置图像即可,

f338e2b95852c27adeb5b119463e04a9bb2.jpg

由于我们的虚拟机没有80端口服务,所以测试留给读者。

告警的trigger设置也非常简单。

1320af8f921b1db9efa18f1f07808f79d02.jpg

详情下节再讲。


19.13/14 配置邮件告警

这个是非常重要的环节,也是非常难配置的环节。

首先你要拥有一个第三方邮箱,可以使用163和qq邮箱。

要使用第三方邮箱发送邮件,需要开启POP3/IMAP/SMTP服务。

f9edce36137ba8d94dabcf4a087dff2a752.jpg

 

然后写一个python自动发邮件的脚本,

虽然zabbix自带email脚本,但是aming老师测试之后不好后,这个后续自己测试一下。

7bbd1576bf919783714f5618a66f6b7c79e.jpg

0eea376d6a50011a8ad4e17d9125d931bf2.jpg

接下来我们创建告警脚本。

服务端上,打开配置文件,查询脚本目录。

[root@localhost: ~]# grep -i alert /etc/zabbix/zabbix_server.conf 
### Option: StartAlerters
#	Number of pre-forked instances of alerters.
#	Alerters send the notifications created by action operations.
# StartAlerters=3
### Option: AlertScriptsPath
#	Full path to location of custom alert scripts.
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts

脚本如下,账户密码和服务器都需要按需更改

#!/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.qq.com' //这里需要填你的smtp服务器
    gport = 587  //不加密端口为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.starttls()  //outlook的加密方式是starttls
        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('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content)

if __name__ == "__main__":
    main()
    
    
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"

 测试脚本

[root@localhost: ~]# vim /usr/lib/zabbix/alertscripts/zabbix_mail.py
[root@localhost: ~]# chmod 755 !$
chmod 755 /usr/lib/zabbix/alertscripts/zabbix_mail.py
[root@localhost: ~]# python /usr/lib/zabbix/alertscripts/zabbix_mail.py hongyang92@hotmail.com "object: test" "zabbix warnning"

9b1e10d4f4864aae89b26e341cf01eaa3c4.jpg

发送给自己的邮件可以接收。

第二步,我们要创建一个用户来发送邮件。

7e6abd701d16fd406fa4087d1bf1a37dca6.jpg

设置报警

26ee6209111ecf858d8efae0c39963ab865.jpg

此时虽然添加了用户但是权限是没有的,我们需要去这个用户所对应的组内添加读写权限。

94c513884fbb3a2045b5580d6c5dd9c7415.jpg

如果没有读写权限,告警是收不到的。

添加Actions,

88647fc4d5daa2326c949da78b87327b6ca.jpg

34901395f8464a235206652eb308d1ad552.jpg

838ea810f3eb71cf33c441670f15ad8827a.jpg

这样报警的准备工作就做好了。


19.15 测试告警

5e0080d7cb072b6c3defc9becb74be3823a.jpg

设置一个触发器,当负载<1的时候告警。我们系统负载基本在0附近,所以肯定会立马告警。

ff246cfc2c518cf231abbbef12944d9ae9f.jpg

果然zabbix界面已经出现警报,而且收到了告警邮件。

ce4097499ad3868d4e859dda766bcefda5e.jpg

然后我们更改触发器

1aa45881f17759231ff31d97732e6f700f8.jpg

问题解决,同样收到邮件。

94754b2536ce905d5aca7b9998551b6698c.jpg

如果觉得做测试等1min时间太长,我们可以更改模板中的返回时间。

9fb04b5302668949b0fbd9839e835e4848b.jpg

因为邮件一直收到的是附件,检查脚本发现,有一行msg = MIMEText(content,'plan','utf-8') 应该为msg = MIMEText(content,'plain','utf-8') 。

注意到构造MIMEText对象时,第一个参数就是邮件正文,第二个参数是MIME的subtype,传入'plain',最终的MIME就是'text/plain',最后一定要用utf-8编码保证多语言兼容性。

这样就没问题了。


19.16 不发邮件的问题处理

因为我在做实验的时候是一下子就成功了。

而在视频中,做了很多排查发现脚本邮件可以发送,但是告警邮件一直没有发出去,而且163和qq两个邮箱都没有收到。

视频中的做法就是恢复快照,重新做一下。因为给zabbix_server添加触发器的时候添加到了aming02里。说明是zabbix的问题。

4e6adeb8b8ab0c5cba0b36728178895c91b.jpg

0989289eb3eccba44cad5122732cfc04d6f.jpg

fba0e1cbef89dd808e21d4ba241e50e04d2.jpg

之前有说过主动上报和被动接受的问题,就在配置的监控项中,我们随便选一个agent ping监控,

4dcf60c370b26cba0d77a4f450c6d2b96d3.jpg

active就是主动模式,不带active的就是被动模式。

转载于:https://my.oschina.net/u/3866688/blog/2050830

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值