侧边栏壁纸
博主头像
小周的知识站 博主等级

行动起来,活在当下

  • 累计撰写 80 篇文章
  • 累计创建 12 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

Zabbix企业微信告警

Administrator
2024-06-07 / 0 评论 / 0 点赞 / 7 阅读 / 0 字

Zabbix企业微信告警

1 模板概述

在本节中,你将会学习如何配置一个模版。

我们在之前的章节中学会了如何配置监控项、触发器,以及如果从主机上获得问题的通知。

虽然这些步骤提供了很大的灵活性,但仍然需要很多步骤才能完成。如果我们需要配置上千台主机,一些自动化操作会带来更多便利性。

模版(templates)功能可以实现这一点。模版允许对有用的监控项、触发器和其他对象进行分组,只需要一步就可以对监控主机应用模版,以达到反复重用的目的。

当一个模版链接到一个主机后,主机会继承这个模版中的所有对象。简单而言,一组预先定义好的检查会被快速应用到主机上。

2 新建模板

开始使用模版,你必须先创建一个。在配置(Configuration) → 模版(Templates)中,点击创建模版(Create template)。这将会像我们展现一个模版配置表格。

所有必填字段以红色星标标示。

需要输入以下必填字段:

模版名称(Template name)

  • 输入一个模版名称。名称自定义,不支持中文,可以使用数字、字母、空格及下划线。自定义名称:Custom Templates

组(Groups)

  • 使用选择(Select)按钮选择一个或者多个组。模版必须属于一个组,自定义组名: Custom Templates group

完成后,点击添加(Add)。你新建的模版可以在模版列表中查看。

3 在模版中添加监控项

为了在模版中添加监控项,在配置(Configuration) → 主机(Hosts),点击主机旁边的监控项(Items)。

然后:

  • 选中列表中监控项的选择框

  • 点击列表下方的复制(Copy)

选择想要复制这个监控项的目标模版

  • 点击复制(Copy)

你现在可以前往配置(Configuration) → 模版(Templates),'新模版(New template)'中看到新的监控项。

我们目前只创建了4个监控项,但你可以用同样的方法在模版中添加其他的监控项,触发器以及其他对象,直到完成满足特定需求(如监控OS,监控单个应用)的完整的对象组合。

4 自定义监控项

本章将学习如何通过脚本来自定义zabbix的监控项

自定义nginx的监控项,首先要通过脚本将各种状态的值取出来,然后通过zabbix监控

#创建目录,然后将脚本上传到该目录
[root@web26 ~]# mkdir /etc/zabbix/script/

#脚本内容主要是利用shell脚本中的函数定义nginx状态页面的各个字段,然后结合awk进行取值,最后在通过case语句控制脚本输出
[root@web26 ~]# vim /etc/zabbix/script/ngx_status.sh 
#定义Nginx status页面
ngx_status="http://127.0.0.1/status"

#判断status页面是否存活
ngx_status_code() {
        http_code=`curl -o /dev/null -s -w %{http_code} ${ngx_status}`
        if [ ${http_code} == "200" ];then
                return 1
        else
                echo "Nginx status is not running."
        fi
}

#获取当前活动用户的连接数量
active() {
        ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
}

#获取接受的客户端连接数量
accepts() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
}

#获取处理的连接总数量
handled() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
}

#获取客户端请求的总数量
requests() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
}

#获取正在读取请求标头的当前连接数量
reading() {
        ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
}

#获取正在将响应写回到客户端的当前连接数量
writing() {
        ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
}

#获取当前正在等待响应的客户端连接数量
waiting() {
        ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
}

#使用位置变量控制脚本输出
case $1 in
        active)
                active;;
        accepts)
                accepts;;
        handled)
                handled;;
        requests)
                requests;;
        reading)
                reading;;
        writing)
                writing;;
        waiting)
                waiting;;
        *)
                echo "Unknown options"
esac

#添加执行权限
[root@web26 script]# chmod +x ngx_status.sh 

#修改zabbix agent配置文件,开启以定义监控功能
[root@web-26 nginx-1.18.0]# vim /etc/zabbix/zabbix_agentd.conf 
...
311 Include=/etc/zabbix/zabbix_agentd.d/*.conf  #自定监控路径

330 UnsafeUserParameters=1  #开启自定义监控功能,默认该功能为关闭状态


#进入自定义监控路径
[root@web-26 nginx-1.18.0]# cd /etc/zabbix/zabbix_agentd.d/

#创建自定义监控文件(文件名要求以 .conf结尾)
[root@web-26 zabbix_agentd.d]# vim custom_nginx_status.conf
UserParameter=nginx.active,bash /etc/zabbix/script/ngx_status.sh active
UserParameter=nginx.accepts,bash /etc/zabbix/script/ngx_status.sh accepts
UserParameter=nginx.handled,bash /etc/zabbix/script/ngx_status.sh handled
UserParameter=nginx.requests,bash /etc/zabbix/script/ngx_status.sh requests
UserParameter=nginx.reading,bash /etc/zabbix/script/ngx_status.sh reading
UserParameter=nginx.writing,bash /etc/zabbix/script/ngx_status.sh writing
UserParameter=nginx.waiting,bash /etc/zabbix/script/ngx_status.sh waiting

#解释
UserParameter=   #自定义监控固定格式
nginx.			  #监控项名称

#重启zabbix-agent服务
[root@web26 zabbix_agentd.d]# systemctl restart zabbix-agent

5 获取监控项数据

#服务端下载zabbix get软件包,用于在命令行获取客户端监控项的值
[root@zabbix-server ~]# yum -y install zabbix-get

#获取客户端监控项值
[root@zabbix-server ~]# zabbix_get -s 192.168.0.111 -k nginx.active	  #当前活动用户的连接数量
[root@zabbix-server ~]# zabbix_get -s 192.168.0.111 -k nginx.accepts  #接受的客户端连接总数量
[root@zabbix-server ~]# zabbix_get -s 192.168.0.111 -k nginx.handled  #处理的连接总数量
[root@zabbix-server ~]# zabbix_get -s 192.168.0.111 -k nginx.requests #客户端请求的总数量
[root@zabbix-server ~]# zabbix_get -s 192.168.0.111 -k nginx.reading  #正在读取请求标头的当前连接数
[root@zabbix-server ~]# zabbix_get -s 192.168.0.111 -k nginx.writing  #将响应写回客户端的当前连接数
[root@zabbix-server ~]# zabbix_get -s 192.168.0.111 -k nginx.waiting  #当前客户端正在等待服务器的响应数量

6 在模板中添加监控项

配置 → 模板 页面查找到我们自建的模板,点击模板中的 ‘监控项’ 然后 创建监控项


当完成后,点击 添加(Add),新的监控项将出现在监控项列表中。

我们按照上述方法在将其余的监控项添加至模板中。最终的效果如下图:

7 绑定模板

由于模板中又增加了多个监控项,所以我们将绑定到主机。

点击 配置 → 主机 找到你的主机,然后选择 '模板',选择好模板后,点击更新

随后点击配置栏中的监测(Monitoring) → 最新数据 (Latest data)以查看具体细节。

8 应用集

模板中的应用集我们可以理解为监控项的分组,可以将相同类型的监控项分配到同一个应用集内。

创建应用集:**配置 → 模板** 找到对应的模板选择 应用集创建应用集

9 批量更新

有时您可能需要同时更改模板中的某些属性,模板中的批量更新功能可以让我们更加方便的对模板进行修改。

例如:我们可以将前边模板中的监控项批量更新至CPU 负载量的应用集内。

在模板列表中,标记要更新的监控项,点击列表下面的 批量更新

页面跳转到带有所需属性的选项卡,标记要更新的属性的复选框, 并输入新的值。

当选择 应用集 复选框时,可以使用以下的选项:

  • 添加 - 从现有的模板中添加新的应用集。

  • 替换 - 将现有应用集中的监控项替换

  • 移除 - 将从应用集中删除特定监控项。

默认为 '添加' 即可,点击 更新 所有选择模板的属性都会相应地更新。

更新后可通过监测最新数据查看

10 Zabbix企业微信报警

zabbix具备灵活的故障告警功能,允许用户几乎为任何的故障配置基于电子邮件、短信、企业微信、钉钉等告警通知,这样管理员就可以快速响应服务器出现的问题

企业微信告警配置步骤:

  • 登录企业微信官网,准备zabbix企业微信的应用ID与密码

  • 准备企业微信号的企业ID

  • 准备企业微信的个人账号ID

  • 测试zabbix应用ID与企业微信接口是否可以正常建立连接

  • 准备企业微信报警脚本,并指定企业微信账号信息

  • 配置报警媒介(收件人、消息主题、具体告警信息)

  • 创建告警动作(针对监控的具体对象,配置告警,例如:网站的访问量告警)

  • 配置触发器(条件达到预设的值,即可触发告警)

  • 测试告警

zabbix应用ID:1000003

zabbix应用ID密码:MZCdWfnhDTMetH2QnyCNuJQxE8bH96UPrTVQWVt3qdU

企业ID:ww457b60803c0eff36

个人ID:ZhouLe

10.1 准备企业微信信息

登录企业微信:work.weixin.qq.com

查看企业ID

查看个人账号ID

微信企业号接口调试工具:https://open.work.weixin.qq.com/wwopen/devtool/interface/combine

测试zabbix应用能否访问企业微信

10.2 配置报警脚本

zabbix要求故障报警脚本必须放在指定路径,通过下边命令过滤配报警脚本的存放路径

[root@zabbix-server ~]# egrep -v '^$|#' /etc/zabbix/zabbix_server.conf
​
AlertScriptsPath=/usr/lib/zabbix/alertscripts  //存放报警脚本路径

将脚本放至该路径

[root@zabbix-server ]# cd /usr/lib/zabbix/alertscripts/

添加执行权限

[root@zabbix-server alertscripts]# chmod +x wechat.py  
​

修改脚本添加企业微信信息

[root@zabbix-server alertscripts]# vim wechat.py
 Data = {
        "touser": "User",           # 企业号中的用户帐号
        #"totag": Tagid,                                
        #"toparty": Partyid,        #部门ID                       
        "msgtype": "text",                             
        "agentid": "Agentid",       # Zabbix应用ID
...
​
    Corpid = "wxaf"                 # 企业ID
    Secret = "aKDdCRT76"            # Zabbix报警密码
    #Tagid = "1"                                                                        
    Agentid = "1000001"             # Zabbix应用ID
​

脚本需要安装requests模块(需要pip安装)

[root@zabbix-server]# pip --version                     #查看pip是否已经安装
[root@zabbix-server]# yum -y install epel-release       #安装epel-release源
[root@zabbix-server]# yum install python-pip -y         #安装pip
[root@zabbix-server alertscripts]# pip install python-requests requests    #安装模块
​

提示:如果安装失败可升级pip版本在进行安装

[root@zabbix-server]# pip install --upgrade pip #升级pip(可选配置) #提示:如果升级失败,用下边命令进行升级 python -m pip install -U force-reinstall pip #备用升级命令

执行脚本测试:’收件人的微信账号‘ '信息标题' '信息内容'

[root@zabbix-server]# ./wechat.py Yesir hello 帅哥
​

重启服务

[root@zabbix-server ]# systemctl restart zabbix-server
​

10.3 创建报警媒介

媒介是Zabbix中用于发送通知和告警的传输通道。

您可以配置多种媒介类型:

媒介类型在 管理媒介类型 中进行配置。

点击 创建媒介类型 按钮来创建一个新的媒体类型,就会打开一个媒体类型的配置表单。

有些参数对于所有媒介类型都是通用的。

下边三个脚本特定参数是zabbix内置,用于指定在发送消息时的收件人、消息主题、消息内容

{ALERT.SENDTO} #收件人

{ALERT.SUBJECT} #消息主题

{ALERT.MESSAGE} #消息内容

自定义消息模板的步骤:

  • 消息模板 选项卡中,点击 : 将打开一个 消息模板的弹出窗口。

  • 选择所需的 消息类型 ,编辑 主题消息 文本。

消息模板 选项卡可以为以下的所有或部分事件类型设置默认的通知消息:

  • 问题

  • 问题恢复

  • 问题更新

  • 自动发现

  • 自动注册

  • 内部问题

  • 内部问题恢复

下边是zabbix内置的问题消息模板,用于指定发送告警的具体消息

告警信息:{EVENT.NAME}

告警主机: {HOST.NAME}

主机地址: {HOST.IP}

监控项目: {ITEM.NAME}

当前取值: {ITEM.LASTVALUE}

告警等级: {TRIGGER.SEVERITY}

告警时间: {EVENT.DATE}-{EVENT.TIME}

事件ID: {EVENT.ID}

点击 添加 保存消息模板

配置 问题恢复 消息

下边是zabbix内置的问题恢复消息模板,用于指定故障恢复时,发送告警的具体消息

故障恢复:{EVENT.NAME}

主机地址: {HOST.IP}

告警名称: {EVENT.NAME}

持续时长: {EVENT.DURATION}

恢复时间: {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME}

当前状态: {TRIGGER.STATUS}

当前取值: {ITEM.LASTVALUE}

事件ID: {EVENT.ID}

点击 添加 保存消息模板

10.4 媒介类型测试

测试配置好的媒介类型是否正常工作

  • 报警媒介类型 列表中找到相关的企业微信报警

  • 点击列表最后一栏中的 测试 (将打开一个测试窗口)

10.5 获取通知

由于前边在学习邮件报警时已经配置过触发器及动作:

可从 配置 → 主机 ‘触发器’ 页面查看前边配置的触发器

可从 配置 → 动作 页面查看前边配置过的触发器动作

接下来我们添加微信消息的收件人。

点击 用户基本资料 → 报警媒介添加 企业微信收件人。

选择 更新

接下来我们使用多个终端同时登录来验证报警消息。

监测 → 最新数据 以查看具体值。

监测 → 问题 以查看具体问题通知。

报表 → 动作日志 以查看发送消息是否成功。

10.6 问题确认

Zabbix的问题事件可由用户确认。

如果用户收到问题事件的通知,可以打开Zabbix的前端页面,从问题更新页面上找到对应的问题进行确认。当进行确认的时候,可以输入注释表明他们正在处理该问题,或者输入任何他们想表述的内容。

利用这种方式,如果有另一个系统管理员察觉到这个问题,就可以立刻知道该问题已经被确认过,并且看到之前留下的注释。

这样的问题处理工作流,可以让多个系统管理员协同工作。

提示: 要确认事件,用户必须至少具有相应触发器的读权限。

常见的问题确认方法:从左侧配置栏的 监测 (Monitoring) → 仪表板 (Dashboard) → 问题 (Problems) 从确认小部件中确认状态。

所有必填输入字段都标有红色星号。

参数 描

消息(Message)

以评论问题。

历史记录(History)

问题的过去的操作和评论,以及时间和用户详细信息。 有关用于表示用户操作的图标的含义,请参阅 事件详情(event detail) 页面。

范围(Scope)

操作的范围,例如更改级别,确认或手动关闭问题: 仅所选问题(Only selected problem) - 将仅影响此事件 选定的和相关触发器的所有其他问题(Selected and all other problems of related triggers) - 在确认/关闭问题的情况下,将影响此事件以及到目前为止未确认/关闭的所有其他问题。如果这个范围包含已确认或者已关闭的问题那么这些问题将不会被重复的确认/关闭。另一方面,消息的数量和级别更改操作是没有限制的。

改变严重性(Change severity)

选中该复选框,然后单击严重性按钮以更新问题级别。

确认(Acknowledge)

选中复框以确认问题。 对于已经确认过的问题,该选项不可用。

关闭问题(Close problem)

选中复选框手动关闭问题。 如果在 触发器配置(trigger configuration) 里的 允许手工关闭(Allow manual close)选项被勾选中,那么就可以通过此种方式去关闭问题。


0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区