19.12 添加自定义监控项目
需求:监控某台web的80端口连接数并出图
操作:
1 在客户端编辑监控脚本
分析:
netstat -ant|grep ':80 ' |grep -c ESTABLISHED
查看80端口下established状态的连接数量
netstat –ant 显示网络连接的状态
grep ':80 ' 过滤出80端口的
grep -c ESTABLISHED 进一步过滤出ESTABLISHED状态的并计数
[root@hyc-01 ~]# vim /usr/local/sbin/estab.sh
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep '80 '|grep -c ESTABLISHED
[root@hyc-01 ~]# chmod 755 /usr/local/sbin/estab.sh
赋予所有用户对脚本的可执行权限
2 编辑zabbix客户端配置文件
[root@hyc-01 ~]# vim /etc/zabbix/zabbix_agentd.conf
…
283 # UnsafeUserParameters=0
284 UnsafeUserParameters=1 启用zabbix自定义脚本,为0则关闭,无法使用自定义脚本
285
286 ### Option: UserParameter
287 # User-defined parameter to monitor. There can be several user-defined parameters.
288 # Format: UserParameter=<key>,<shell command>
289 # See 'zabbix_agentd' directory for examples.
290 #
291 # Mandatory: no
292 # Default:
293 # UserParameter=
294 UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 定义自定义脚本名称及路径
295 ####### LOADABLE MODULES #######
296
…
my.estab.count[*]是监控项中的键值信息;
[*]表示该脚本没有参数,若有参数要将参数写入[]中并用逗号分割;
3 重启zabbix-agent服务
[root@hyc-01 ~]# systemctl restart zabbix-agent
4 验证自定义脚本是否识别
[root@hyc-01-01 fonts]# zabbix_get -s 192.168.31.128 -p 10050 -k 'my.estab.count'
在服务端执行该命令
-s后跟客户端ip
-p 指定端口,不加-p则默认使用10050
-k 监控项的键值
一定要保持网络通畅,无防火墙规则和SELINUX
0 为0表示已经识别
注:
将客户端自定义监控脚本权限改为700(用户无执行权限)
[root@hyc-01 ~]# chmod 700 /usr/local/sbin/estab.sh
[root@hyc-01-01 fonts]# zabbix_get -s 192.168.31.128 -p 10050 -k 'my.estab.count'
sh: /usr/local/sbin/estab.sh: 权限不够
此时由于权限不足导致脚本无法执行,自定义脚本不被识别
5 在server的监控中心配置增加该监控项目
配置->主机
点击创建监控项按钮
键值:自定义脚本的名称,该项要与agent上/etc/zabbix/zabbix_agentd.conf配置文件中的参数保持一致
历史数据保留时长:历史数据保留时长
趋势数据存储周期:与成图有关
其余项保持默认即可
添加以上监控项后为该监控项添加图形:
点击添加图形按钮
定义图形名称
点击监控项的添加按钮,在弹出的内容中选择刚添加的监控项(并发连接数)
点击添加按钮
预览添加的图形:
为自定义监控项创建触发器:
总结:
1 在客户端定义脚本获取监控数据
2 在监控中心创建监控项目
3 创建监控项目对应的图形
4 部分情况下还要为监控项目创建触发器
19.13 配置邮件告警(上)
访问163邮箱:
为了让服务器能调用163的邮箱发送邮件,需要开启一个服务:
1 设置客户端授权密码
授权码服务开启后自动开启SMTP/POP3/IMAP服务
由于zabbix自带告警媒介Email不好用,所以用户需要自己配置新的告警媒介
监控中心上添加新的告警媒介:
管理->报警媒介类型
脚本的三个参数:
{ALERT_SENDTO} 接收邮件的邮箱地址
{ALERT.SUBJECT} 邮件主题
{ALERT.MESSAGE} 邮件内容
编辑发送报警邮件的脚本:
[root@hyc-01-01 ~]# !vim
vim /etc/zabbix/zabbix_server.conf
…
456 AlertScriptsPath=/usr/lib/zabbix/alertscripts 配置文件中指定了报警脚本的路径
…
[root@hyc-01-01 ~]# cd /usr/lib/zabbix/alertscripts/
[root@hyc-01-01 alertscripts]# ls
[root@hyc-01-01 alertscripts]# vim mail.py 编辑发送报警邮件的脚本
1 #!/usr/bin/env python
2 #-*- coding: UTF-8 -*-
3 import os,sys
4 reload(sys)
5 sys.setdefaultencoding('utf8')
6 import getopt
7 import smtplib
8 from email.MIMEText import MIMEText
9 from email.MIMEMultipart import MIMEMultipart
10 from subprocess import *
11
12 def sendqqmail(username,password,mailfrom,mailto,subject,content):
13 gserver = 'smtp.163.com' 定义发邮件服务器域名
14 gport = 25
15
16 try:
17 # msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝> 试把这行改成如下:
18 msg = MIMEText(content,'plan','utf-8')
19 msg['from'] = mailfrom
20 msg['to'] = mailto
21 msg['Reply-To'] = mailfrom
22 msg['Subject'] = subject
23
24 smtp = smtplib.SMTP(gserver, gport)
25 smtp.set_debuglevel(0)
26 smtp.ehlo()
27 smtp.login(username,password)
27 smtp.login(username,password)
28
29 smtp.sendmail(mailfrom, mailto, msg.as_string())
30 smtp.close()
31 except Exception,err:
32 print "Send mail failed. Error: %s" % err
33
34
35 def main():
36 to=sys.argv[1]
37 subject=sys.argv[2]
38 content=sys.argv[3]
39 ##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网
上公开,否则你会死的很惨)
40 send163mail('[email protected]','hYc7085620011','[email protected]',to,subject, content) 将发件邮箱、授权码、收件邮箱设置为自己的邮箱
41
42 if __name__ == "__main__":
43 main()
44
45
[root@hyc-01-01 alertscripts]# chmod 755 mail.py 给予用户脚本的可执行权限
测试mail.py是否可以发邮件:
[root@hyc-01-01 alertscripts]# python mail.py [email protected] "test" "test succeed"
19.14 配置邮件告警(下)
创建用于接收邮件的用户
创建并配置用户:
1 创建用户组
2 创建用户
管理->用户->创建用户
3 为刚添加的用户添加报警媒介
管理->用户->选择用户hyc->报警媒介
目前用户没有任何权限
4 修改用户hyc所在群组对群组的权限
管理->用户群组->选择用户hyc所在的群组
定义动作
定义触发器被触发后执行的操作(比如发短信、邮件、执行脚本等)
1 创建动作
2 定义执行的操作
默认信息:
HOST:{HOST.NAME} {HOST.IP} 定义的主机名及主机ip
TIME:{EVENT.DATE} {EVENT.TIME} 发生的时间
LEVEL:{TRIGGER.SEVERITY} 示警度(未分类、信息、严重等)
NAME:{TRIGGER.NAME} 即定义的key,指出发出告警的触发器
messages:{ITEM.NAME}:{ITEM.VALUE} 发出告警时显示的状态码等信息
ID:{EVENT.ID} 事件ID
3 定义恢复操作
故障恢复时执行的操作
以上操作完成后点击更新按钮
19.15 测试告警
设置触发器使触发器告警:
创建一个自定义触发器使之告警
19.16
配置zabbix发送告警邮件步骤:
1 登录邮箱,设置开启POP3/IMAP/SMTP服务
记录授权码,用于在脚本中指定密码
2 在监控中心和server端设置邮件告警
2.1 新增报警媒介
媒介类型为脚本;
脚本参数严格按先后顺序添加:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE};
2.2 编辑脚本
脚本位置为AlertScriptsPath=/usr/lib/zabbix/alertscripts;
拷贝的脚本中需要修改收件邮箱、发件邮箱、授权码、SMTP服务器地址等;
编辑完成后将脚本权限改为755,否则zabbix用户无法调用;
3 配置用户
3.1 修改用户组权限
使用户所在的组拥有读写权限,否则无法发邮件;
3.2 将创建的用户加入administrator组中
4 设置动作
指定邮件发送给哪个用户;
选择“仅送到报警”;
5 为了测试人为制造告警
新增一个触发器,故意将条件设置为容易触发告警的条件或者人为停止客户端zabbix进程;