Zabbix-聪明,灵活,可自定义-可以做所有事情。 或几乎所有东西。 如果他不能通过云电话结识朋友,这将很奇怪,尤其是当后者具有便捷的HTTP API时-使用您的健康状况。 今天,我们将演示如何通过Voximplant将Zabbix配置为用于通知呼叫,这在紧急情况下非常有用(“没有时间解释,您需要打电话-战斗服务器刚刚倒下”)。
基于电影《黑客帝国》的框架(《黑客帝国》(1999),华纳兄弟公司)注意:本教程假定您已经有一个可用的Zabbix并已配置Zabbix前端。 Zabbix的初始安装不是本文的目的,好奇的/需要这样的指南可以查看官方文档和/或Google。
我们将与之合作
我们的示例使用带有CentOS 7的VDS,该计算机上安装了Zabbix 4.2.6(撰写本文时为最新的稳定版本)。 我们将监视Zabbix工作所在的同一服务器。 Voximplant需要平台上的帐户和JS的呼叫处理脚本。 现在多一点。
我们会怎么做
没有火箭科学,让我们做一个非常简单的监视来响应
/ tmp / habrTriggerFile文件的外观:当出现这样的文件时,Zabbix将通过HTTP API与Voximplant联系,脚本将工作,该脚本将调用指定的电话号码,说“注意。 在服务器上创建了一个文件。” 挂掉 如果删除/重命名文件,然后将其返回,则将再次有电话。 如果您什么也不做,将只有一个电话。
Voximplant
登录到您的帐户 (或
注册 )并创建
habr 应用程序 。 在应用程序内部,转到“方案”选项卡,并使用以下代码创建
通知脚本:
VoxEngine.addEventListener(AppEvents.Started, () => { const call = VoxEngine.callPSTN(" ", " ") call.addEventListener(CallEvents.PlaybackFinished, () => { VoxEngine.terminate() }) call.addEventListener(CallEvents.Connected, () => { setTimeout( () => call.say(". .", Language.RU_RUSSIAN_FEMALE), 1000 ) }) })
您可以通过HTTP请求运行此脚本(无需购买电话号码即可执行此操作)。 不要忘记在
callPSTN中替换
电话号码:第一个是平台将呼叫的人,第二个是callerid,它将显示在被叫用户上; 它可以是平台上已验证的您的个人号码,也可以是以前从Voximplant购买的号码(请注意,不能使用虚拟号码)。 脚本在连接后调用该号码,报告已创建文件并挂断。
保存脚本并转到“路由”选项卡以创建规则:
保存规则,并-注意-复制其ID。
接下来,您将需要API密钥,并将它们
带入主菜单
的相应部分 。
知道了API密钥和规则ID后,您可以将它们替换为我们的HTTP API的
StartScenarios方法,它看起来像这样:
https://api.voximplant.com/platform_api/StartScenarios/?account_id=1&api_key=4ed5695e-4690-448r-95e8-3f8f0001287c&rule_id=28
稍后,我们在设置监视时会使用此请求,该监视已经可以启动。
扎比克斯
输入Zabbix前端作为用户(或管理员),然后在“配置-主机”部分中,单击“创建主机”。 在名称中,输入
localhost ,在组中指定
测试组 ,然后单击下面的添加。
现在,在主机列表中,您将同时看到默认的Zabbix服务器和localhost。 从这里我们将继续进行配置。
Zabbix监视基于三个实体的链:项目-触发器-动作。 这三个链接都是必需的,因此您需要按顺序创建每个链接。
项
Item是一个数据累加器,没有数据,监视将不会对任何事情做出反应。 要创建项目,请在主机列表中,单击本地主机名称右侧的项目。 您也可以单击主机名本身,然后在打开的屏幕上转到“项目”选项卡-本质上是相同的。 在“项目”选项卡中,单击右上角的“创建项目”。 输入名称
-habr项 ,然后单击“密钥”字段旁边的“添加”-向下滚动,我们需要标准密钥
vfs.file.exists ,选择它,它将被替换为“密钥”字段。 用当前路径替换文件,在本例中,密钥将如下所示:
vfs.file.exists [/ tmp / habrTriggerFile] 。 在“更新间隔”字段中,设置5s,以便当我们在主机上创建文件时监视能够更快地响应。 在页面底部,单击“添加”,然后立即看到新项目。
扳机
触发器评估收集的数据,当达到指定的阈值时,它们会做出反应-他们开始执行操作。 在创建了项目的屏幕上,转到“触发器”选项卡:
点击创建触发器,将其命名为
habr触发器 。 表达式字段的值可以使用构造函数-添加按钮方便地收集。 按照屏幕快照中的设置进行设置,然后单击“插入”:
单击页面底部的添加-完成后,将创建触发器。
动作片
动作是触发触发的触发器的动作。 打开“配置-操作”选项卡,单击“创建操作”。 这个名字是突然的
哈伯动作 。 在下面的“新条件”块中,将所有内容保留为默认值并添加
habr ,结果将获得
包含“ habr”条件的
触发器名称 。 单击添加以添加条件-它会立即显示在“条件”块中,请参见屏幕截图:
在这里,转到“操作”选项卡,然后在“操作”块中,单击“新建”以添加操作。 在“操作”类型中,选择“远程命令”,将显示“目标”列表块和“命令”输入字段。 在“目标”列表框中,单击“新建”,将为您提供默认目标-当前主机,需要它-单击“添加”,目标将出现在列表中。 在输入字段中,向Voximplant插入curl +先前生成的请求:
curl "https://api.voximplant.com/platform_api/StartScenarios/?account_id=1&api_key=4ed5695e-4690-448r-95e8-3f8f0001287c&rule_id=28"
然后添加此操作(添加为链接),然后单击添加按钮以完成操作的创建。
重要一点:我们选择了“远程命令”操作的类型,该类型在Zabbix代理配置中默认为关闭。 要解决此问题,请在主机上打开配置,并将EnableRemoteCommands的值设置为1:
vi /etc/zabbix/zabbix_agentd.conf // EnableRemoteCommands = 1
之后,重新启动代理服务:
service zabbix-agent restart
我们开始行动
在Zabbix面板中,转到“监视-问题”部分。 很快,我们将在此处看到警告,表明触发器已起作用。
在主机上,创建一个文件:
touch /tmp/habrTriggerFile
5秒钟后,在“问题”面板中,我们将看到一条新消息; “问题”将在“状态”列中闪烁,如果单击“操作”列中的图标,您将看到该操作的详细信息(可单击屏幕快照):
在此过程中,将拨打我们在Voximplant脚本中指定的电话号码。
基于电影《黑客帝国》的框架(《黑客帝国》(1999),华纳兄弟公司)如果您重命名文件,
mv /tmp/habrTriggerFile /tmp/habrTriggerFile_
然后5秒钟后,问题状态将变为“已解决”。
做完了! 您之所以出色,是因为您建立了主机– Zabbix – Voximplant交互链,并且根据相同的原理,可以为通知调用设置任意复杂的逻辑。