文档章节

添加自定义监控项目、 配置邮件告警、测试告警 、不发邮件的问题处理

Linux_Anna
 Linux_Anna
发布于 2017/09/11 20:26
字数 2436
阅读 20
收藏 0

19.12 添加自定义监控项目

很多监控项目是在模版里面配置体现出来的,但有时候会有一些个性化的需求,比如就是想知道某一个业务的数据,运营人员想知道网站注册量,和会员活动每天的活跃度,这些数据实际上是可以通过数据库里面的表体现出来的,但是在Zabbix不可以提供这么详细的监控项目,当遇到这种需求怎么办? 当遇到这种需求需要一个在客户端写一个shell脚本,把这个数值展现出来,通过一个监控项目,再去形成图表,给运营人员分析每星期的数值,以及每个月的数值趋势走向. zabbix在这点上还是不错的,可以自定义去监控一个项目.

 

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

说明:首先是要获得这个连接数,拿到数值后到zabbix中心创建监控项目,然后针对这个项目做一个图形.

第1步:到客户端上定义一个脚本

[root@root-02 ~]# vim /usr/local/sbin/estab.sh
#! /bin/bash
## 获取80端口并发连接数
netstat -ant |grep ':80' |grep -c ESTABLISHED


注:netstat -ant 是可以查看连接数的.


# 赋予执行权限
[root@root-02 ~]# chmod 755 /usr/local/sbin/estab.sh

注:其实是赋予zabbix用户 执行权限,因为最终是zabbix用户执行这个脚本


第2步:编辑客户端的配置文件


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


UnsafeUserParameters=1      --> 表示使用自定义脚本,(0表示关闭使用自定义脚本,1表示使用自定义脚本)
 
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh  --> 定义脚本路径, 后面的[*]里面写脚本的参数,如果没有参数则可以省略.


#修改配置文件后,重启zabbix-agent服务
[root@root-02 ~]# systemctl restart zabbix-agent


在服务端测试客户端写的脚本是否有效

[root@root-01 ~]# zabbix_get -s 192.168.2.116 -p 10050 -k 'my.estab.count'
zabbix_get [28999]: Get value error: cannot connect to [[192.168.2.116]:10050]: [113] No route to host

注:提示没有找到这个host

#解决
检查防火墙是否关闭
[root@root-01 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2017-09-10 12:12:51 CST; 21h ago
     Docs: man:firewalld(1)
 Main PID: 592 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─592 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

9月 10 12:12:45 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
9月 10 12:12:51 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.


[root@root-02 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2017-09-10 12:13:17 CST; 21h ago
     Docs: man:firewalld(1)
 Main PID: 583 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─583 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

9月 10 12:13:10 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
9月 10 12:13:17 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.

说明:测试不成功的是原因是因为防火墙没有关闭


#关闭客户端&服务端的防火墙
[root@root-01 ~]# systemctl stop firewalld

[root@root-02 ~]# systemctl stop firewalld


#重新测试就OK了
说明: 显示0, 说明可以获得数值
[root@root-01 ~]# zabbix_get -s 192.168.2.116 -p 10050 -k 'my.estab.count'
0


Zabbix监控中心配置,增加监控项目

说明:点击配置 --> 主机 --> 选择root-02 的监控项 -->点击创建监控项  
          名称(自定义) --> 键值 -->添加


 给添加的并发连接数监控项目做图形

说明:点击图形 --> 创建图形 -->名称 --并发连接数 --> 添加 -->选中并发连接数 -->选择 -->添加 


#并发连接数图形创建成功

 

给并发连接数监控项目做个触发器

说明:点击触发器 -->创建触发器 --> 名称 :并发连接数 --> 严重性 -- 选择告警 -->表达式 --添加  --> 监控项目 --点击选择--> 选中并发连接数 --> 功能 选择 最新的T值<N --> N 定义为200 (意思是并发数达到200就告警) -->添加

 

19.13 /19.14 配置邮件告警 

说明:需要准备一个邮箱作为告警用 (可以使用QQ邮箱或163邮箱),要想这个邮箱发邮件,也就是在第三方平台上,比如在服务器上调用163的邮箱发邮件,需要开启POP3/SMTP/IMAP服务.



在邮件上开启POP3/SMTP/IMAP服务

步骤:登录163邮箱 -->点击设置 -->选择POP3/SMTP/IMAP -->POP3/IMAP服务 和SMTP/IMAP服务 选中 --> 会提示让我们设置授权码 --> 确定 -->开启 -->提示手机验证 -->输入手机发来的验证码 -->确定 -->设置授权码  -->确定 -->保存





 

在Zabbix监控中心设置报警媒介类型

说明 :点击设置-->告警媒介类型 -->创建报警媒介类型 --> 名称 自定义 --> 类型 选择脚本 -->脚本名称 自定义 -->添加 -->定义脚本参数 --添加





 

脚本参数含义:

    {ALERT.SENDTO}  -- 发邮件给谁
   {ALERT.SUBJECT}   -- 邮件标题
   {ALERT.MESSAGE}  -- 邮件内容

 

创建告警脚本

说明:脚本放在哪里,在服务端的配置文件是定义的.

[root@root-01 ~]# vim /etc/zabbix/zabbix_server.conf 


搜索/AlertScripts

AlertScriptsPath=/usr/lib/zabbix/alertscripts  --> 这就是定义脚本所放路径 (这不需要我们定义,自带的)



# 在/usr/lib/zabbix/alertscripts目录下创建mail.py脚本
  说明:脚本内容去以下网址下载:
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

[root@root-01 ~]# cd /usr/lib/zabbix/alertscripts
[root@root-01 alertscripts]# vim mail.py
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
mail_host = 'smtp.163.com'
mail_user = '15017941124@163.com'
mail_pass = '123466'
mail_postfix = '163.com'
def send_mail(to_list,subject,content):
    me = "zabbix 监控告警平台"+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['From'] = me
    msg['to'] = to_list
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False
if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])


#给mail.py脚本设置权限
[root@root-01 alertscripts]# chmod 755 mail.py 

 

测试能否发邮件

[root@root-01 alertscripts]# python mail.py anna_wqd@163.com "asdhgj" "testagdjyoujian12434"
Send mail failed. Error: (535, 'Error: authentication failed')

注:报错是因为脚本写错了密码,邮箱账号后面应该跟授权码,修改回来就OK了

[root@root-01 alertscripts]# python mail.py anna_wqd@163.com "asdhgj" "testagdjyoujian12434"

 

创建用户

说明:这个用户是用来接收邮件的,若没有用户这邮件是发给说呢?
第1步 :设置 --> 用户 -->创建用户 -->别名 、用户名第一部分、姓氏 (自定义) -->
         添加 -->选择 Zabbix administrators (管理员用户组)-->设置密码 -->设置语言-->添加



第2步:设置报警媒介
            说明:报警媒介 --> 添加 -->类型 -->选择报警 -->收件人 (填收件邮箱地址)--> 添加



第3步:设置权限 
说明:点击权限 --> 用户类型 -->选择用户 (显示没有权限)-->需要到用户组里面去更改权限


 

#更改用户组权限
说明:点击用户组--> 点击Zabbix administrators --> 选择中读写 -->选择 -->全选 -->添加 -->更新



 

# 更改用户组的权限后,再来Anna用户的权限就变成读写了


第4步:定义动作

说明:我们配置了触发器,在触发了触发器后,要做什么,是要发邮件,还是发短信,还是去执行脚本,要做什么行为,都在动作定义的.
步骤:点击配置 -->动作 -->创建动作 --> 名称 (自定义) --> 新的触发条件 -->选择触发器警示度 -->选择大于或等于 (>=) -->选择未分类 -->添加


第5步:操作

说明:点击操作 --> 把默认信息全部删除掉 -->定义新的默认信息 -->点击新的 -->  发送到用户 --> 选择Anna -->选择 -->仅送到  -->选择报警 -- >点击新的 --> 条件 -->添加 --> 点完添加会看到:发送消息给用户-->添加


HOST:{HOST.NAME} {HOST.IP}   -->定义hostname 
TIME:{EVENT.DATE} {EVENT.TIME}  -->定义时间
LEVEL:{TRIGGER.SEVERITY}  -->就是前面定义的是触发示警度
NAME:{TIRGGER.NAME}  -->  哪个触发器发生了报警
messages:{ITEM.NAME}:{ITEM.VALUE}  --> 当发生报警的时候,会有什么状态码
ID:{EVENT.ID} --> 事件ID


第6步:恢复操作
说明:比如当负载很高的时候要发告警邮件,但当负载变成ok的时候也要发
步骤:点击恢复 -->把默认信息全部删除 --> 定义默认信息 --> 点击新的 -->发送到用户 -->选择Anna -->仅送到-->选择报警 -->添加

 

 

19.15 测试告警

说明:故意把监控项目更改成有问题的, 设置触发器,让它告警.

步骤:配置-->主机--> root -02 选择触发器 --> 创建触发器 --> 名称(自定义)- 系统负载 --> 添加
-->最新的T值<N --> N 设置为1 ; 当小于1的时候就告警,正常情况下负载是0 ,那么就会马上告警



点击Zabbix -->查看最近20个问题

可以看到动作完成1,说明可以正常发送邮件


#查看邮件,是可以收到告警邮件的




#原本负载值更改为1了,就会马上告警,那么现在把负载值更回正常的,也会收到ok的邮件
  若是设置回正常,仍然收不到邮件,那么检查恢复操作.



 

 

19.16 不发邮件的问题处理

1.检查发邮件的脚本

[root@root-01 alertscripts]# python mail.py anna_wqd@163.com "test" "This is test jiaoben"

[root@root-01 alertscripts]# ls -lt mail.py 
-rwxr-xr-x. 1 root root 1163 9月  11 12:42 mail.py

 

可以收到邮件,说明脚本ok

 

2. 检测Zabbix 监控中心 -- 用户设置

检查报警媒,查看收件人邮箱地址是否有误

说明:点击管理 -->用户 -->报警媒介; 


检查用户权限是否是读写,若不是将无法收到告警邮件

 

3.检查Zabbix 监控中心 --动作


检查动作--操作是否有选择发送到用户(Anna)

说明:点击配置-->动作-->发邮件-->条件


© 著作权归作者所有

共有 人打赏支持
Linux_Anna
粉丝 8
博文 176
码字总数 173891
作品 0
广州
运维
私信 提问
添加自定义监控项目&配置邮件告警&测试告警&不发邮件的问题处理

19.12 添加自定义监控项目 zabbix的监控项目是在模板里面体现,但是有时会有些个性化的需求。比如:某一个业务的数据,运营人员想知道网站会员注册量,会员活跃度;实际上,这些数据,都可以...

影夜Linux
07/11
0
0
添加自定义监控项目配置邮件告警测试告警不发邮件的问题处理

添加自定义监控项目 需求:监控某台web的80端口连接数,并出图 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现 对于第一步,需要到客户端定义脚本 vim /usr/local/sbin/...

lyy549745
07/10
0
0
68:添加自定义监控项目 | 配置邮件告警及测试 | 不发邮件时问题处理

1、配置自定义监控项目: zabbix的监控项目是在模板里配置体现的,有时候会有一些个性化的需求,某一个业务的数据,有一些运营想知道网站的注册量,会员活跃度,这些数据是可以通过数据库的表的数...

芬野de博客
09/16
0
0
添加自定义监控项目、配置邮件告警、测试告警、不发邮件的问题处理

添加自定义监控项目 需求:监控某台web的80端口连接数,并出图 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现 对于第一步,需要到客户端定义脚本 vim /usr/local/sbin/...

Zhouliang6
07/11
0
0
2018-4-16 16周4次课 zabbix邮件告警

19.12 添加自定义监控项目 ·需求:监控某台web的80端口连接数,并出图 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现 ·对于第一步,需要到客户端定义脚本 [root@loca...

alexis7gunner
10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

0029-如何实现CDH元数据库MySQL的主备

1.文档编写目的 MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的扩展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负...

Hadoop实操
33分钟前
3
0
阿里如何做到百万量级硬件故障自愈?

摘要: 随着阿里大数据产品业务的增长,服务器数量不断增多,IT运维压力也成比例增大。各种软、硬件故障而造成的业务中断,成为稳定性影响的重要因素之一。本文详细解读阿里如何实现硬件故障...

阿里云官方博客
34分钟前
6
0
配置resttemplate

<bean id="httpClientBuilder" class="org.apache.http.impl.client.HttpClientBuilder"factory-method="create"><property name="connectionManager"><bean class="org.apache.ht......

1713716445
37分钟前
2
0
Intersection of Two Linked Lists(leetcode160)

Write a program to find the node at which the intersection of two singly linked lists begins. For example, the following two linked lists: A: a1 → a2 ......

woshixin
43分钟前
3
0
Jrebel最新激活破解方式(持续更新)

https://blog.csdn.net/xingbaozhen1210/article/details/81093041

glen_xu
44分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部