9.12 19.12-19.16

19.12 添加自定义监控项目

需求:监控某台web80端口连接数并出图

操作:

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的监控中心配置增加该监控项目

配置->主机

点击创建监控项按钮

blob.png

blob.png

键值:自定义脚本的名称,该项要与agent/etc/zabbix/zabbix_agentd.conf配置文件中的参数保持一致

历史数据保留时长:历史数据保留时长

趋势数据存储周期:与成图有关

其余项保持默认即可

 

添加以上监控项后为该监控项添加图形:

点击添加图形按钮

blob.png

定义图形名称

点击监控项的添加按钮,在弹出的内容中选择刚添加的监控项(并发连接数)

点击添加按钮

blob.png

预览添加的图形:

blob.png

为自定义监控项创建触发器:

blob.png

 

总结:

1 在客户端定义脚本获取监控数据

2 在监控中心创建监控项目

3 创建监控项目对应的图形

4 部分情况下还要为监控项目创建触发器

 

 

19.13 配置邮件告警(上)

访问163邮箱:

https://mail.163.com/

为了让服务器能调用163的邮箱发送邮件,需要开启一个服务:

1 设置客户端授权密码

blob.png

blob.png

blob.png

blob.png

授权码服务开启后自动开启SMTP/POP3/IMAP服务

blob.png

由于zabbix自带告警媒介Email不好用,所以用户需要自己配置新的告警媒介

监控中心上添加新的告警媒介:

管理->报警媒介类型

blob.png

脚本的三个参数:

{ALERT_SENDTO} 接收邮件的邮箱地址

{ALERT.SUBJECT} 邮件主题

{ALERT.MESSAGE} 邮件内容

blob.png

编辑发送报警邮件的脚本:

[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"

blob.png

blob.png

 

19.14 配置邮件告警(下)

创建用于接收邮件的用户

创建并配置用户:

1 创建用户组

2 创建用户

管理->用户->创建用户

blob.png

blob.png

3 为刚添加的用户添加报警媒介

管理->用户->选择用户hyc->报警媒介

blob.png

blob.png

blob.png

目前用户没有任何权限

blob.png

4 修改用户hyc所在群组对群组的权限

管理->用户群组->选择用户hyc所在的群组

blob.png

 

定义动作

定义触发器被触发后执行的操作(比如发短信、邮件、执行脚本等)

1 创建动作

blob.png

blob.png

2 定义执行的操作

blob.png

默认信息:

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

blob.png

blob.png

3 定义恢复操作

故障恢复时执行的操作

blob.png

以上操作完成后点击更新按钮

blob.png

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进程;


猜你喜欢

转载自blog.51cto.com/12216458/2176039