【IT168 技术】由于随着个人及企业对信息科技的需求大幅增加,包含移动设备的兴起,社交网站的活跃,以及许多新技术的快速发展,因此在监测设备的使用状况及可以主动发现设备问题并提前预防和故障排除的能力日渐重要,另外,云端服务的兴起,在IT设备资源大量集中化的需求下,管理人员要有足够的能力去分析网络状态及能缩短排除服务异常问题的时间,此仍为当前IT管理人员的一大挑战。 除前述的功能之外,能够快速部署,以及容易操作也会是考虑的要点之一。
Slack 是一款团队通讯平台服务,丰富且高度自定义的功能,提供管理团队一个方便、跨平台且多元整合管理的一个沟通管道,且在与第三方串接上的表现令人深刻。而ICINGA 即为一套容易部署以及容易为网管人员短期学习并使用的监控软件,在此本文以Slack和ICINGA 为功能安装,设定及展示之主角,让读者可全面了解并可简单于读者所使用的网络环境下应用ICINGA 。在本篇文章我们将示范如何利用ICINGA 的监控程序并透过Slack的传讯功能发布即时消息至管理团队。
主要包括以下内容:
1. Slack 注册与安装
2. Slack 设定
3. ICINGA 设定
4. 告警信息传送测试
5. 总结
ICINGA与Slack架构原理图
Icinga是Nagios 的分支,它提供了全面的监控和报警框架; 是一个容易安装且功能强大的网络监控软件且与 Nagios 一样提供了开放及充足的可扩展性。除可以监控主机之外,任何的设备只要能提供SNMP的服务,如此Icinga即可有充足的信息监控。透过这样的监控协议,我们可以呼叫被监测主机以测量任何可供监控的项目。此外,根据笔者对于其他监控软件的使用经验,如SNSC(IBM System Networking Switch Center)及CNA(Cisco Network Assistant),两者皆为功能强大的监控软件,但是只针对各自产品做监控而且皆是需付费的软件。因此,相较于Icinga的表现更为全面也较容易符合大众需求。
Slack
Slack 是「团队沟通平台」, 同时可以在网页版、 Android App、 iPhone App、 Windows 与 Mac 中安装软件使用,跨平台而且实时同步,虽然以网页版的管理功能最完整,但是其它平台也都能满足团队沟通分流的需求, 在 Slack 沟通可以被管理,并转化为有效率的工作流程。在本文中我们把Slack当成是一个client 端,它本身并不提供监控的功能,但透过与Webhook和 ICINGA 的集成,可以提供用户实时报警的功能。
架构原理图
ICINGA server收集信息的行为如Check_snmp是经由SNMP的服务来认定每个硬件的ID值来取得数值,回传到server上并以图表纪录,当有报警情况产生,即可透过Slack Clinet 传送讯信息管理员。
操作系统准备
1. Slack 网页注册与安装
Slack 支持 Mac, Windows 及 iOS & Andorid, 下面将介绍网页注册和手持装置配置过程。
1.1 网页注册方式
利用网页方式新建账号,注册网址为https://slack.com/,输入Email后,选择 " Create New Team"。
电邮会收到由Slack寄来的验证信,在网页上输入验证码。
设定账号名称与密码,注册完成,进行下一步。
接下来设定网页上所要设定的群组名,不另更改的话即为DOMAIN 名。
最后可同时寄发邀请信,邀请朋友加入群组。
可设定邀请人员,并可设定不同群组,让不同群组人员直接讯息连络。
1.2 IOS APP 安装与设定
Slack 可透过手持装置,来接受实时告警通知,首先我们利用苹果的 Apple Store下载APP,并新建一群组及设定群组名。
输入注册电邮并启用通知功能。
登入后,下图为APP主要操控接口。
当手持装置设定完成后,系统会自动关闭邮件通知功能,改由APP发送简讯通知。
2. Slack 设定
Slack 提供了 WebHooks,可以实时传送数据,让整个channel 的人都能收到。利用这个特性,设定好事件报警触发的条件后,当管理的硬件出现异常时可通过 WebHooks 向特定的 channel 发送消息,所有在那个channel的管理人员都能立即收到报警消息。
首先选择 Apps & Integrations,并安装 “Incoming WebHooks”。
选择新增配置。
可分别设定下列数值:
l Channel: 监听的频道。
l Trigger Word: 触发的关键词,可以逗号分隔。
l URL: 接收数据的URL,一行一个。
l Token: Slack产生的,可以做为核对身分的依据。
下拉选单,并选择要传送讯息的 channel,然后新增 “Incoming WebHooks integration”。
记下 Webhook URL,储存后,并复制到ICINGA server上要用的 script。
3. ICINGA 设定
3.1. 首先需要建立二个 Slack Notification Shell scripts,可直接由 Github 上下载 slack_host和 slack_service。链接网址为: https://github.com/linhc130/icinga-plugins-slack-notification
编辑 slack_service ,并加上所要连接之Slack 服务的设定参数。
编辑 slack_host.sh,同样的在最后端加入 Slack 的 WebHooks 连接信息。
3.2. 告警信息Shell Scripts 发送测试
执行 slack_service.sh ,若正常,即会出现一个不带任何信息的告警信息。
ICINGA透过Slack所发出的空白信息。
3.3. 在 ICINGA设定 Contacts 及 Notification Commands 连接Slack 服务
首先在 contacts.cfg 加入下面设定值。
并在 commands.cfg 加入下面参数,让系统接收到报警时,去执行 slack_service.sh 和 slack_host.sh。
4. 告警信息传送测试
变更任一 ICINGA service 报警,如本文例子降低Cisco 温度警报触发度数,使 ICINGA 触发 notification。编辑 switch.cfg 配置文件,在此我们将温度警报设定从 45度降低至 35度 ,重新启动 ICINGA,并查询是否正确收到告警信息。
确认可在 Slack 上收到温度告警信息后即可改回,并重启 ICINGA。
当事件触发后,查看手机所接收到之信息,开启APP后即可查看告警信息内容。
5. 总结
维持主机服务的运行,是每个系统管理人员最基本的职责。但受限于人力的考虑,管理人员不可能 24 小时随时监控系统服务的运行。当遇到系统服务发生异常时,能实时通知管理者的监控系统,是每个管理人员所迫切需要的。我们利用 ICINGA 监控软件搭配 Slack 的通讯平台服务,不仅帮助管理人员实时监控系统服务的状态,也能在系统服务发生异常时,立刻以短信通知管理者。让管理人员可以快速处理,减少意外事件的冲击。