我跟我们老板干了快10年了,他总是时不时语重心长地教导我们,年轻人就是要努力奋斗才能早日实现幸福人生的目标。
每当他这样鼓励我们的时候,不知道是怎么回事,我总是血脉扩张,浑身热血沸腾、心跳加速,整个人都充满了力量。
每当我们工作遇到了困难,他就会魔术般地掏出一沓花花绿绿的纸头,告诉我们天下没有过不去的坎,办法总比困难多,要学会寻找解决问题的动力。
话说最近我变得有些懒惰,工作懈怠,时间也由原来的12个小时锐减到了11.8个小时。
此情此景,老板实在是看不下去了,决定出手相救。
他为了挽救我,为了能让我重新振作起来,于是就拿出了他呕心沥血的著作,早已准备实施的伟大员工振奋计划。
当然了,这个伟大振奋计划实施对象是所有员工,不单单只有我,可见老板还是对大家念念不忘。
不过计划总是要先实践后普及的嘛,老板相中了我,觉得我是个可造之材,毅然决然要求从我这儿开始实践。
我心里清楚,都是为我好,当然还有一个重要原因,谁让我拿着3万6的天花板年薪呢!
你看,这不最近老板就布置了一个任务,要我把公司网络设备都监控起来。
最基本的,先用 ping
来检测各个设备的在线情况,然后外加掉线后可以及时邮件报警,当然恢复在线状态后还需要再次通知OK。
我双手接过这个任务,满脑子都是老板慈眉善目地冲我微笑,两手不停地抓着大把印有头像的纸在我眼前晃的形象。
我觉得我特有面子,这妥妥的是老板器重我啊!
其他同事都向我投来了羡慕的目光,他们反复摇着头,不用说,肯定是因为与任务失之交臂而叹息懊悔。
嗯,我决心全力以赴,务必完成老板交给我的这项具有示范性、里程碑式的伟大任务!
任务:任意设备 ping
+ 邮件报警
主要步骤简要概括如下:
fping
postfix
- 数据采集 > 主机
- 告警媒介
- 告警 > 媒介
- 告警 > 动作
- 消息模板
- 用户群组权限
刚开始玩 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.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,接下来就放心大胆地修改吧。
- 名称
这个随便起,喜欢就行,不过也不要太随便,喜欢也得是自己记得它是什么意思才行哈!
比如我这儿起个名,Email
。
- 类型
电子邮件,这个不多说。
- 邮箱提供商
没有特殊情况就选择默认的 Generic SMTP
,就是通常的 SMTP
。
SMTP
服务器
你的邮箱是哪个供应商的,一般都可以问到,通常是域名或IP地址。
比如 163
的,它的 SMTP
服务器就是 smtp.163.com
,QQ
的就是 smtp.qq.com
。
我这儿用的是自己搭建的邮件服务器,就在 zabbix
主机上面,因此直接写上 127.0.0.1
。
SMTP
服务器端口
和上面说的一样,要看供应商提供的,端口号通常有 25
、465
等等,看你的邮箱是不是走的加密认证之类的连接。
我这儿写的是 25
,普普通通,好用就行。
- 电子邮件
就是你的邮箱地址了,通常也用作用户名,比如:
。
SMTP HELO
这个是连接邮件服务器时最初的打招呼信息,即 HELO
信息。
有的服务器要求不怎么严格,可以随便乱写,而有的就比较严格了,所以说最好写成和你的邮箱地址一样比较好。
比如:
。
- 安全连接
询问邮件提供商,通常其页面中的 SMTP
设置中会有写。
我这儿只开放了本机发送邮件,因此不用什么安全连接,因此选择 无
。
- 认证
SMTP
本身没有啥认证不认证的,根本不用输入用户名密码,这是早期协议就这么设定的。
不过为了防止垃圾,有的服务器都加了一道认证的坎,这种情况下是要输入用户名和密码才能成功连接的。
我这儿只开放了本机发送邮件,因此不用什么认证,故选择 无
。
- 消息格式
即邮件内容的格式,一般用的是文本,如果你有特殊要求,比如老板喜欢五彩缤纷的黑,那么可以选择 HTML
格式。
最后别忘记勾选 已启用
,否则这个邮箱可不起作用啊!
好了,我们已经有了邮箱媒介了,但是还是没有和触发器联系上,接下来怎么做呢?
这时我们就要建立告警动作,正是它将两者联系起来的。
点击左侧导航栏的 告警
> 动作
,再点击 触发器动作
。
在 新的动作
界面中,我们先来添加条件。
这个动作的条件是啥呢?
很明显应该是触发器带来的动作,因此类型肯定是触发器,然后在 触发器
一项中点击 选择
按钮。
随后找到目标对象的触发器,然后选择某个触发器就行了。
当然,前面我们讨论地过,应该选择 ICMP: Unavaliable by ICMP ping
这个。
条件有了,可以触发,我们给这个动作起个名字,然后点击操作来告诉 zabbix
应该做什么动作。
这个动作大概分三种,一个是触发器触发时的操作,二个是恢复时的操作,三个是更新时的操作。
一般我们设定前两个就可以了,比如出故障了发邮件,故障恢复了再发邮件,就这么两个。
添加操作时需要注意的是,必须填写发送给哪些用户或用户组。
作为演示,我这里选择了用户组和前面设定好的邮箱媒介。
意为一旦有动作,就通过
发送邮件给用户组 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