17
2024
05
13:28:55

任意设备 ping + 邮件报警

主要步骤简要概括如下:

  1. fping

  2. postfix

  3. 数据采集 > 主机

  4. 告警媒介

    1. 告警 > 媒介

    2. 告警 > 动作

  5. 消息模板

  6. 用户群组权限


刚开始玩 zabbix 的小伙伴可能会一脸蒙逼,这都是些啥?

不用着急,后面我就掰开揉碎了给各位解释说明,action!


安装在线检测程序 fping

ping 我知道,不过这个 fping 是个啥?

其实你可以将它理解为是个简单版的 ping ,用它来检测目标只返回“活着”还是“挂了”这两种状态。

一般的 Linux 发行版都已经预安装了 fping ,因此我们什么都不用做就可以直接拿来使用了。

当然也可能有例外情况,那么我们就需要手动去安装 fping 。

方法也很简单,比如 RedHat 系的直接这么干就行了。

dnf install fping


有了 fping 就可以来测试对象目标是否在线了,存活在线就是 alive ,不在线就是 unreachable 。

命令可以这么用:

fping 主机名/IP


zabbix 正是利用了 fping 来实现目标对象是否在线的检测。

这对于 zabbix 有个好处,比如在线就可以标记为数字 1 ,那么离线就标记为数字 0 ,方便清晰,简单明了。


安装邮件发送引擎 Postfix

Postfix 是非常著名的邮件引擎,多了我就不介绍了,总之你可以理解为它是用来发送邮件的邮件服务器程序。

如果你有现成的邮件发送程序,比如公司内部邮箱,或是 163 、 QQ 啥的,那么可以跳过这一步直接使用现成的。

之所以安装 Postfix ,自然是因为可能我们手头并没有现成的邮件服务器,或是存在其他各种不方便因素,那么好极了,我们就自己再搭建一个 Postfix 吧!


本着尽量简洁、能让初学者也能看懂的原则,我们就直接在 Zabbix 所在的系统上直接搭建 Postfix ,这样做可以减少一些关于安全等方面诸多繁琐的配置,既简单又用顾虑安全问题。

首先,安装之,一条命令:

dnf install postfix


其次,来点简单的配置。

编辑 /etc/postfix/main.cf 文件,将以下参数修改为你自己的。

myhostname 和 mydomain 改一下,还有 inet_interfaces 和 mynetworks 改一下,其他不用动。

myhostname = mail.sysadm.localmydomain = sysadm.localmyorigin = $myhostnamemyorigin = $mydomaininet_interfaces = allmydestination = $myhostname, $mydomainmynetworks = 127.0.0.0/8


OK,就这些?

就这些,简单不?

这样配置的话,我们只能通过本机服务器来发送邮件,其他外边的电脑是没办法连上来发邮件的,这样可以避免滥发邮件的安全问题。

虽然超级简单,不过这样不是挺好的吗,省去了配置加密和认证啥的麻烦,比较适合小白哈。

当然如果想要更加细化的配置,建议小伙伴们参考其他教程文章。


别忘了我们的重点是 zabbix 哦!

好了,Postfix 就此搞定!


添加用来测试 ping 的主机

用 ping 来测试目标对象是最简单最经济的方法之一。

不管是服务器、网络设备还是其他联网的装置,都可以通过 ping 来诊断是否在线、工作正常。


网上有不少文章只介绍了服务器 ping 的测试方法,是通过操作系统模板来做的。

但是如果是某些工业设备,或是某些奇怪的盒子,它们没有可以直接操作的系统,那么此类方法就不太适合了。

因此我们设定时,应该以通用性为准,即使不是诸如 Windows 之类的特定操作系统也应该能实现这样的诊断操作。

接下来我们一起看一下,万能 ping 检测是具体怎么做的。


我们先添加一个主机,当然这个主机是什么样的设备都是可以的。

点击左侧导航菜单 数据采集 > 主机 ,再点击右上角的 创建主机 。


填写一些主机所需要的参数,比如 主机名称 和 可见的名称 。

主机名称 必须是唯一的,是给 Zabbix 系统看的,比如 HOST01 。

可见的名称 则是给人看的,方便我们判断当前主机是干啥的,比如 机房测试机01 。


接下来是重点,选择模板,找到 ICMP Ping ,默认它在模板群组 Templates/Network devices 中。

这个正是通用的 Ping 模板,具体的后面还会有介绍,先选择它。


然后给主机分配一个主机群组,方便管理。

最后在接口处添加一个代理 Agent ,可以用 IP 的形式,也可以用 DNS 域名的形式。

不管你用哪种形式,别忘记点选一下后面的 连接到 ,是 IP 还是 DNS 。

端口不用动,保持默认。

好了,主机添加完成!


不过话还没有说完,还需要向小伙伴们介绍一下刚才添加了半天都添加了啥。

主机添加完成后,我们可以看到系统给我们主机增加了3个监控项和3个触发器。

这些是哪来的呢?

没错,正是前面我们选择的 ICMP Ping 模板里的。


好,我们点开监控项瞅瞅。

一、二、三,不多不少就三个,不过它们都是啥意思呢?

  • ICMP loss - 丢包诊断

  • ICMP ping - 是否在线存活

  • ICMP response time - Ping 包响应时间


接着我们再点开触发器看看。

也是三条,名字和监控项一样,只是多了些表达式啥的。


看样子触发器与监控项正好是一一对应的关系。

触发器是用来触发行为动作的,当(监控项)表达式满足条件时,就可以用来触发动作,比如我们希望的发送告警邮件。

我们再仔细看看这三条触发器,实际上可以利用的应该是第三条 ICMP unavaliable by ICMP ping ,也就是判断主机是否掉线。


OK,懂了!

利用第三条触发器就行,后面就这么用!

但是触发器有动作,这个动作是怎么与发送邮件建立联系的呢?


告警媒介

要想了解触发动作可以导致邮件的发送,那么我们就要先建立两者之间的联系。

要不它怎么知道是发邮件啊还是按门铃,对吧?


我做了个简单的思维导图,小伙伴们凑合看哈!

故障发生/恢复
| \_ 用户群组权限(是/否?没有权限则无法触发动作)
    |     \_ 告警>触发器动作(重点:将[触发器]和[告警媒介]关联了起来)
             |
             |\_ 数据采集>主机>监控项>触发器
             |              \_ 告警>媒介(邮箱)>消息模板


很明显,我们得先告诉 zabbix 邮件怎么发,是不?

好,先来搞定邮箱设置。

这个设置被称作告警中的媒介,这个媒介可以理解为你的邮箱。


为了简便起见,我们用复制现成媒介模板的方法来设定一个自己的媒介邮箱。

点击左侧导航栏的 告警 > 媒介 ,再点击 Email 。


请小心,在打开的界面中不要乱动,直接点击 克隆 按钮,我们的目的是利用它来复制一份新的我们自己的邮箱设置。


OK,接下来就放心大胆地修改吧。


  1. 名称

这个随便起,喜欢就行,不过也不要太随便,喜欢也得是自己记得它是什么意思才行哈!

比如我这儿起个名,Emailzabbix@xxxx.local 。


  1. 类型

电子邮件,这个不多说。


  1. 邮箱提供商

没有特殊情况就选择默认的 Generic SMTP ,就是通常的 SMTP 。


  1. SMTP 服务器

你的邮箱是哪个供应商的,一般都可以问到,通常是域名或IP地址。

比如 163 的,它的 SMTP 服务器就是 smtp.163.com ,QQ 的就是 smtp.qq.com 。

我这儿用的是自己搭建的邮件服务器,就在 zabbix 主机上面,因此直接写上 127.0.0.1 。


  1. SMTP 服务器端口

和上面说的一样,要看供应商提供的,端口号通常有 25 、465 等等,看你的邮箱是不是走的加密认证之类的连接。

我这儿写的是 25 ,普普通通,好用就行。


  1. 电子邮件

就是你的邮箱地址了,通常也用作用户名,比如:zabbix@xxxx.local 。


  1. SMTP HELO

这个是连接邮件服务器时最初的打招呼信息,即 HELO 信息。

有的服务器要求不怎么严格,可以随便乱写,而有的就比较严格了,所以说最好写成和你的邮箱地址一样比较好。

比如:zabbix@xxxx.local 。


  1. 安全连接

询问邮件提供商,通常其页面中的 SMTP 设置中会有写。

我这儿只开放了本机发送邮件,因此不用什么安全连接,因此选择  。


  1. 认证

SMTP 本身没有啥认证不认证的,根本不用输入用户名密码,这是早期协议就这么设定的。

不过为了防止垃圾,有的服务器都加了一道认证的坎,这种情况下是要输入用户名和密码才能成功连接的。

我这儿只开放了本机发送邮件,因此不用什么认证,故选择  。


  1. 消息格式

即邮件内容的格式,一般用的是文本,如果你有特殊要求,比如老板喜欢五彩缤纷的黑,那么可以选择 HTML 格式。


最后别忘记勾选 已启用 ,否则这个邮箱可不起作用啊!


好了,我们已经有了邮箱媒介了,但是还是没有和触发器联系上,接下来怎么做呢?

这时我们就要建立告警动作,正是它将两者联系起来的。


点击左侧导航栏的 告警 > 动作 ,再点击 触发器动作 。


在 新的动作 界面中,我们先来添加条件。


这个动作的条件是啥呢?

很明显应该是触发器带来的动作,因此类型肯定是触发器,然后在 触发器 一项中点击 选择 按钮。


随后找到目标对象的触发器,然后选择某个触发器就行了。

当然,前面我们讨论地过,应该选择 ICMP: Unavaliable by ICMP ping 这个。


条件有了,可以触发,我们给这个动作起个名字,然后点击操作来告诉 zabbix 应该做什么动作。


这个动作大概分三种,一个是触发器触发时的操作,二个是恢复时的操作,三个是更新时的操作。

一般我们设定前两个就可以了,比如出故障了发邮件,故障恢复了再发邮件,就这么两个。


添加操作时需要注意的是,必须填写发送给哪些用户或用户组。

作为演示,我这里选择了用户组和前面设定好的邮箱媒介。

意为一旦有动作,就通过 zabbix@xxxx.local 发送邮件给用户组 Zabbix administrators 中所有的用户。


消息模板

到目前为止设置基本就这些了,不过如果你看到过 zabbix 发来的邮件内容,你就会发现它其实是用的自带的消息模板写,比较中规中矩。

如果你不太满足于它自带模板写的内容,那么我们就自己动手来改成我们想要的样子吧!


点击右侧导航栏的 告警 > 媒介 ,选择前面我们自己建立的电子邮件媒介。


在这个媒介中有一个消息模板项,就是在这儿修改消息模板的。

我们来修改一下 问题 和 问题恢复 两项,一般够用了。


比如 问题 消息类型,自带的是这样。


修改可以写成这样。


再比如 问题恢复 消息类型,自带的是这样。


修改可以写成这样。


我在这儿写成文本,方便小伙伴们复制使用。

发生故障时:

主题:

[发生故障] {EVENT.NAME}


消息:

XXXX故障通知

主机名:{HOST.NAME}
主机IP:{HOST.IP}
严重程度:{TRIGGER.SEVERITY}
告警时间:{EVENT.DATE} {EVENT.TIME}
故障内容:{ITEM.NAME}: {ITEM.VALUE}
现在状态:{TRIGGER.STATUS}
事件ID:{EVENT.ID}

Zabbix https://192.168.1.123/
————————————————————————
XXXX 系统部


恢复故障时:

主题:

[故障恢复] {EVENT.DURATION}: {EVENT.NAME}


消息:

XXXX故障恢复通知

主机名:{HOST.NAME}
主机IP:{HOST.IP}
严重程度:{TRIGGER.SEVERITY}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.DURATION}
故障内容:{ITEM.NAME}: {ITEM.VALUE}
现在状态:{TRIGGER.STATUS}
事件ID:{EVENT.ID}

Zabbix https://192.168.1.123/
————————————————————————
XXXX 系统部


模板变量可以参考 zabbix 自带模板中的描述,也可以查阅官方文档,基本的前面说的也够用了。


最后需要补充说明一下,用户群组权限设置非常重要,切不可忽略。

有不少小伙伴在测试时发现各方面设置都OK了,怎么就是收不到告警邮件。

这时你不妨查看一下用户或用户所在组的主机权限。

很有可能是用户没有对象主机的读写权限造成的。


先找到用户群组。


进入用户群组后切换到 主机权限 项。


如果没有相应主机的读写权限,或是干脆空空如也、干干净净,那问题大半是出在这里了。

赶紧添加权限吧!


别忘记在选择好对象组后点击一下 添加 ,注意,是权限里的添加哦!

最后在确认添加无误的情况下,再添加用户群组或是更新。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/6174.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: