夜莺V6 GA10版本告警自愈无法获取HOST

Viewed 119

首先,介绍下我的环境:
我是使用prometheus+exporter的方式来做监控采集数据。现在把告警功能集成到了夜莺上,现在想使用夜莺的告警自愈功能,分别在监控端启用了ibex-server进程和被监控端启用了ibex-agent进程,并没有安装categraf。
并且,在夜莺V6版本的UI里已经配置好了自愈配置。
在我测试告警自愈脚本创建一个临时任务时都是可以执行的,也能看到执行结果。
但是,当我在测试触发告警规则后,发现并没有触发告警自愈脚本的执行,经检查发现是因为ibex-server日志无法获取host信息。
我在告警规则里写回调地址时,如果我是写死指定的一个主机名就可以执行,例如:${ibex}/2/test-240
如果,我只在回调地址里写${ibex}/2就提示下面的报错信息

3 Answers

我觉得你描述让我更了解一下源码这部分内容,嘿嘿。handleIbex
不过回到你的问题,最直接想法就是想办法在填充这个字段值,但是目前我还没了解到怎么设置。

// 用户在callback url中没有传入host,就从event中解析
host = event.TargetIdent

还有我印象中听过介绍说是告警自愈要功能是要和机器列表搭配使用,至于为什么我想应该就是为了能让event可以自动填充这个字段吧

我之前也想过这个有可能需要搭配机器列表来使用,所以,后来在测试的时候把其中一台ibex-agentd换成categraf了,但是测试告警自愈依然无法触发,还是同样的问题

不应该呀,你是怎么用的呢,我印象在SRETalk里面有个视频讲解告警自愈使用的,你要先去看看哪里是不是能解决你的问题。

哪个视频我看过,解决不了我现在的问题

把告警执行的语句,放到即时查询获取到数据后,贴一下结果

夜莺要能够把告警和自愈联动,推荐的做法是部署 categraf,categraf 会自动心跳注册到服务端,就可以在机器列表里看到了。其次,告警的事件标签中需要有ident标签,ident对应的机器,需要出现在机器列表里,然后才能和自愈打通。SRETalk视频号里有个视频介绍了相关原理。

你使用 exporter 是无法自动注册机器信息的。你可以这么干:部署categraf,替换掉ibex-agentd,categraf的conf目录下的input. 相关的插件配置都删除,这样categraf就不采集数据了,你还是继续用exporter采集。但是,你需要通过relabel机制做出ident标签。

最丝滑的方式还是使用categraf采集,和告警自愈的打通效果最好。

还有一个办法,如果你们有研发能力,可以写个http server,配置到webhook里,告警触发的时候调用webhook,webhook再去调用ibex-server。

使用categraf的话我只想保留心跳检测机器列表的数据可以保留categraf的input目录下的哪些配置文件?我试图删除所有的input配置文件后,心跳机器列表都没有了。

配置文件里有个心跳配置

心跳配置默认是开启的,我是说input.*目录是可以保留的