我跟我们老板干了快10年了,他总是时不时语重心长地教导我们,年轻人就是要努力奋斗才能早日实现幸福人生的目标。

每当他这样鼓励我们的时候,不知道是怎么回事,我总是血脉扩张,浑身热血沸腾、心跳加速,整个人都充满了力量。

每当我们工作遇到了困难,他就会魔术般地掏出一沓花花绿绿的纸头,告诉我们天下没有过不去的坎,办法总比困难多,要学会寻找解决问题的动力。


话说最近我变得有些懒惰,工作懈怠,时间也由原来的12个小时锐减到了11.8个小时。

此情此景,老板实在是看不下去了,决定出手相救。

他为了挽救我,为了能让我重新振作起来,于是就拿出了他呕心沥血的著作,早已准备实施的伟大员工振奋计划。


当然了,这个伟大振奋计划实施对象是所有员工,不单单只有我,可见老板还是对大家念念不忘。

不过计划总是要先实践后普及的嘛,老板相中了我,觉得我是个可造之材,毅然决然要求从我这儿开始实践。

我心里清楚,都是为我好,当然还有一个重要原因,谁让我拿着3万6的天花板年薪呢!


你看,这不最近老板就布置了一个任务,要我把公司网络设备都监控起来。

最基本的,先用 ping 来检测各个设备的在线情况,然后外加掉线后可以及时邮件报警,当然恢复在线状态后还需要再次通知OK。

我双手接过这个任务,满脑子都是老板慈眉善目地冲我微笑,两手不停地抓着大把印有头像的纸在我眼前晃的形象。

我觉得我特有面子,这妥妥的是老板器重我啊!

其他同事都向我投来了羡慕的目光,他们反复摇着头,不用说,肯定是因为与任务失之交臂而叹息懊悔。

嗯,我决心全力以赴,务必完成老板交给我的这项具有示范性、里程碑式的伟大任务!


任务:任意设备 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 是非常著名的邮件引擎,多了我就不介绍了,总之你可以理解为它是用来发送邮件的邮件服务器程序。

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

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


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

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

dnf install postfix
 


其次,来点简单的配置。

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

myhostnamemydomain 改一下,还有 inet_interfacesmynetworks 改一下,其他不用动。

myhostname = mail.sysadm.local
mydomain = sysadm.local

myorigin = $myhostname
myorigin = $mydomain

inet_interfaces = all

mydestination = $myhostname, $mydomain

mynetworks = 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. 名称

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

比如我这儿起个名,Email 该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。


  1. 类型

电子邮件,这个不多说。


  1. 邮箱提供商

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


  1. SMTP 服务器

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

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

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


  1. SMTP 服务器端口

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

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


  1. 电子邮件

就是你的邮箱地址了,通常也用作用户名,比如:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。


  1. SMTP HELO

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

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

比如:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。


  1. 安全连接

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

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


  1. 认证

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

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

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


  1. 消息格式

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


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


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

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


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


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


这个动作的条件是啥呢?

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


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

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


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


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

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


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

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

意为一旦有动作,就通过 该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。 发送邮件给用户组 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了,怎么就是收不到告警邮件。

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

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


先找到用户群组。


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


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

赶紧添加权限吧!


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

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


好了,我该交代的都交代了,没啥藏着的了。

现在小伙伴们可以放开手脚大胆尝试了,只要设置正确,基本上问题不大!

下一篇,我会总结一下如何使用 zabbix 监控 radius 服务,这一类文章非常稀少,敬请期待!


最后,我总算完成了这项任务,事后屁颠屁颠地找老板汇报。

老板表示很满意,同时也关心道:“你看你头发都掉干净了,今天下班早点回家,好好休息!”

“那个,明天上班我再给一个新任务,年轻人就是要有冲劲!我很看你呦!”


将技术融入生活,打造有趣之故事

网管小贾 / sysadm.cc

暂无评论

登录并提交评论

© 2020-present 网管小贾 | 微信公众号 @网管小贾
许可协议:CC-BY-NC 4.0 | 转载文章请注明作者出处及相关链接