Zabbix 集成 OneAlert 实现全方位告警(111)

凉白开 zabbix1936,72847字数 2894阅读9分38秒阅读模式

本文内容更新至:https://www.ttlsa.com/zabbix/zabbix-onealert-msg-compress/

1. 前言

告警将重要信息发送给运维「或者其他相关人」,及时发现并且处理问题。在所有开源监控软件里面,Zabbix 的告警方式无疑是最棒的。告警的方式各式各样,从 Email 告警到飞信、139/189邮箱、最后到微信甚至电话告警,接入存在各种问题以及困难,有没有什么软件能够将他们All In one呢?OneAlert

2. Zabbix传统告警方法

Email:调用 sendmail 、sendEmail 等脚本通过 SMTP 发送邮件文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

飞信:飞信已经退出历史舞台,不再有人使用文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

189/139:发送邮箱邮件至邮箱,邮箱将短信转到用户手机短信,存在一定的延迟文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

微信:需要申请一个微信公众号,并接入API,整个流程比较复杂,而且存在会话时间限制文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

短信:众多短信网关收费不同、稳定性也不确定,需要通过API接入文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

3.传统告警 VS OneAlert

在整个使用过程中,得出了传统告警方式的不足以及给个了 OneAlert 告警的功能,具体如下:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

3.1 传统告警方式的不足

  • Zabbix 邮件告警经常发不出去
  • 如需短信告警,要么购买短信猫要么购买短信 API,整个流程太麻烦
  • 微信告警需要申请公众号以及 API 接入,而且会话有时间限制
  • 夜间的告警基本成为一个摆设,试问谁能被微弱的短信声叫醒
  • 阿里云、腾讯云、Zabbix 各种系统告警都需要单独配置,工作繁琐
  • 普遍缺少告警分析
  • 139/189 发送告警存在明显的延迟

3.2 onealert告警功能

  • 告警 All In One,支持微信、邮箱、短信、APP、电话告警
  • 支持接入 Zabbix、Nagios、阿里云、腾讯云、监控宝等等告警信息
  • 灵活的分配策略,可灵活的分配告警信息发送给相关人员
  • 微信、邮箱、app 等告警方式全部免费

4.接入准备

由于 Zabbix 官方已经升级到zabbix-3.0.0alpha,考虑到未来的趋势,我也迫不及待的升级到了 3.0,除了 Web 风格变化,大部分都差不多。所以本文适用于 Zabbix2.x 与 Zabbix3.x 版本。接下来跟着凉白开将 OneAlert 接入 Zabbix,如有任何疑问或者不足,欢迎加群或者在 ttlsa.com 留言一起交流!文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

5. OneAlert 后台操作

5.1 设置提醒

邮件,短信,微信,电话提醒,多策略提醒,如下图,灵活的定义告警规则。在发生告警之后立即发送邮件和微信消息给用户,10分钟后还未确认,那么发送短信,30分钟还未确认则打电话给用户。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

OneAlert

onealert告警策略

5.2 设置分派策略

可以设定做种分派策略,在告警第一时间发送通知给哪些人,如果在 30 分钟还未处理好,可以将消息发送给上级主管人员,如下图文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

OneAlert

onealert分配策略

5.3 创建应用

登陆 OneAlert 后台,点击告警 -> 应用 -> 新增应用,集成类型包含阿里、Nagios、腾讯云等多种,我们选择 Zabbix 最后保存即可。将会生成应用 KEY,Key 在后面将会被用到!文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

OneAlert

创建应用

OneAlert

创建应用-02

6.安装onealert agent

#cd /usr/local/src/
# wget http://cdn.110monitor.com/open/download/alert-agent-4.0.1-RC2.tar.gz
# tar –xvf alert-agent-4.0.1-RC2.tar.gz(注意:参数为-xvf,不是-xzvf)
# cp -rp alert-agent /usr/local/zabbix-3.0.0/alertscripts
# cd /usr/local/zabbix-3.0.0/alertscripts
# cp alert-agent/plugin/zabbix-plugin/110monitor .
# chmod +x ./110monitor

7. Zabbix 集成OneAlert

以下操作均在 Zabbix Web 后台完成文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

7.1 创建110monitor媒介

administration->Media Types->create media type,如下图文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

OneAlert

创建媒介

7.2 Admin 用户添加 110monitor 媒介

Administration->Users->Admin->点击media->Add,输入如下:send to 为 OneAlert 后台生成的 key文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

OneAlert

创建媒介

7.3 创建触发器

点击Configuration->Action->create action文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

  • 主题为triggerresolve,意味着告警触发和恢复都会同步到 110monitor
  • 设置告警内容,注意冒号「:」前的内容不可变更,冒号「:」后的内容可以自行编辑,只能使用以下7调告警信息,否则告警无法发送至 OneAlert 接口
alarmName:{TRIGGER.NAME}entityName:{HOSTNAME}
entityId:{IPADDRESS}
value:{TRIGGER.VALUE}
eventId:{EVENT.ID}
priority:{TRIGGER.SEVERITY}
alarmContent:{IPADDRESS}
{ITEM.NAME}:{ITEM.VALUE}
OneAlert

action配置

OneAlert

action配置

8. Zabbix + OneAlert 集成测试

来制造一个故障,选定一台 Zabbix 客户端,执行如下命令:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

# killall zabbix_agentd

等候五分钟,OneAlert 后台有如下告警文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

OneAlert

后台告警信息

并且也收到了微信(需要关注公众号,并且绑定账号)和短信告警文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

9. OneAlert 告警分析

提供了一份 Zabbix 等开源监控都没有的告警信息分析,运维能清晰的掌握最近服务器状态文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

OneAlert

告警分析

10. 总结

OneAlert与Zabbix的集成就说到这,如有任何疑问或者不足,欢迎加群或者在 ttlsa.com 留言一起交流!文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/ 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 23/09/2015 15:50:45
  • 转载请务必保留本文链接:https://www.ttlsa.com/zabbix/zabbix-integrate-onealert-send-message/
评论  19  访客  19
    • 匿名
      匿名 9

      onealert谁用谁知道,太坑了。
      报警都删了,晚上半夜还打电话报警。是给所有人打电话报警

      • 匿名
        匿名 9

        [root@zabbix-3 ~]# systemctl status onealert.service
        ● onealert.service – LSB: OneAlert local agent
        Loaded: loaded (/etc/rc.d/init.d/onealert)
        Active: failed (Result: exit-code) since Fri 2016-08-12 15:56:44 CST; 15s ago
        Docs: man:systemd-sysv-generator(8)
        Process: 26884 ExecStart=/etc/rc.d/init.d/onealert start (code=exited, status=2)

        Aug 12 15:56:44 zabbix-3.0.novalocal onealert[26884]: File “/usr/lib/python2.7/site-packages/onealert/agent/runner.py”, line 150, in init_and_run
        Aug 12 15:56:44 zabbix-3.0.novalocal onealert[26884]: config_hash = hash_file(config_file_path)
        Aug 12 15:56:44 zabbix-3.0.novalocal onealert[26884]: File “/usr/lib/python2.7/site-packages/onealert/agent/utils/file_utils.py”, line 25, in hash_file
        Aug 12 15:56:44 zabbix-3.0.novalocal onealert[26884]: f = open(filename)
        Aug 12 15:56:44 zabbix-3.0.novalocal onealert[26884]: IOError: [Errno 2] No such file or directory: ‘/etc/onealert/onealert.conf’
        Aug 12 15:56:44 zabbix-3.0.novalocal onealert[26884]: failed!
        Aug 12 15:56:44 zabbix-3.0.novalocal systemd[1]: onealert.service: control process exited, code=exited status=2
        Aug 12 15:56:44 zabbix-3.0.novalocal systemd[1]: Failed to start LSB: OneAlert local agent.
        Aug 12 15:56:44 zabbix-3.0.novalocal systemd[1]: Unit onealert.service entered failed state.
        Aug 12 15:56:44 zabbix-3.0.novalocal systemd[1]: onealert.service failed.
        [root@zabbix-3 ~]# sudo service onealert restart
        Restarting onealert (via systemctl): Job for onealert.service failed because the control process exited with error code. See “systemctl status onealert.service” and “journalctl -xe” for details.
        [FAILED]
        [root@zabbix-3 ~]#
        安装完之后

          • 管理员
            管理员 5

            @ 匿名 请看一件安装,不需要这么复杂。http://www.ttlsa.com/zabbix/zabbix-onealert-msg-compress/ :razz: :razz: :razz:

          • 老呆子
            老呆子 0

            1 好用。
            2 zabbix server流量像发了疯,硬盘灯狂闪。
            3 信息安全不敢保证。

              • 管理员
                管理员 5

                @ 老呆子 1. 确实
                2. server硬盘写入频繁,闪是正常的。
                3. 信息安全,这个看怎么看了。

              • 梵小梵
                梵小梵 9

                2.4.*的可以用吗

                • 刘德洪
                  刘德洪 0

                  3.0 的Zabbix 需要填写参数: {ALERT.SENDTO}, {ALERT.SUBJECT} and {ALERT.MESSAGE}
                  否则可能无法正常发送报警.

                    • 匿名
                      匿名 9

                      @ 刘德洪 这个参数是怎么填写尼

                    • 国际采莲社
                      国际采莲社 9

                      这样可能会存在信息泄露的问题。相关信息是否通过ONEALERT进行了一次中转呢?

                        • 凉白开
                          凉白开 9

                          @ 国际采莲社 对的,信息中专

                          • 奥巴马
                            奥巴马 9

                            @ 国际采莲社 onealert有没有对数据进行采集分析,这个真不敢确定;所以不敢在线上使用啊

                          • 运维生存时间网友
                            运维生存时间网友 9

                            博主写的都不不错啊,一直找不到好的zabbix中文参考资料啊,

                            • 匿名
                              匿名 9

                              博主写的都不不错啊,一直找不到好的zabbix中文参考资料啊,

                              • gz-zabbix
                                gz-zabbix 0

                                版主,想问问用zabbix怎样监控tomcat的?
                                我百度到的都是用jmx来监控,但是我按照步骤去配置,最后获取结果时却出错了,也找不到原因
                                最后一步,用jmx工具获取tomcat的信息
                                root@Test-YunWei etc]# java -jar /root/cmdline-jmxclient-0.10.3.jar – 192.168.1.154:9999 java.lang:type=Memory NonHeapMemoryUsage
                                Exception in thread “main” java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
                                java.io.EOFException]
                                at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:338)
                                at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
                                at org.archive.jmx.Client.execute(Client.java:225)
                                at org.archive.jmx.Client.main(Client.java:154)
                                Caused by: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
                                java.io.EOFException]
                                at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:101)
                                at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
                                at javax.naming.InitialContext.lookup(InitialContext.java:392)
                                at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1886)
                                at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1856)
                                at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:255)
                                … 3 more
                                Caused by: java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
                                java.io.EOFException
                                at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:286)
                                at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
                                at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
                                at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
                                at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:97)
                                … 8 more
                                Caused by: java.io.EOFException
                                at java.io.DataInputStream.readByte(DataInputStream.java:250)
                                at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:228)
                                … 12 more

                                  • 凉白开
                                    凉白开

                                    @ gz-zabbix 不要在非相关文章底下提问!

                                  • Aceslup
                                    Aceslup 4

                                    这个很好啊。

                                      • 凉白开
                                        凉白开 9

                                        @ Aceslup 对的,挺不错的一个产品,快去试试!

                                    • 来自外部的引用

                                    评论已关闭!