influxdb - 如何在 InfluxDB/Kapacitor 中定义异常警报
问题描述
我试图找出在 InfluxDB 中定义警报的最佳或合理方法。例如,我可能会使用 telegraf 附带的 CPU 批处理 tickscript。这可以设置为 Telegraf 监控的所有主机的全局监控器/警报。
当您想偏离主机的上述设置时,即我们希望在 Y% 上发出警报的特定服务器而不是 X% 时,有什么方法?
我很高兴可以为自定义值创建一个独特的 tickscript,但我该如何从原始的“全局”值中排除主机?
这是一个简单的场景,但这需要满足 10,000 台主机的需求,其中将有 100 多个例外,这也将包含 10 秒/100 秒的全局警报定义。
我正在努力了解如何将该平台用作监控/警报的主要来源。
解决方案
正如评论中所说,您可以使用sideload 节点来实现这一点。
假设你想确保你的 InfluxDB 服务器没有过载。您可能希望默认允许 100 次测量。仅在一台服务器上,恰好获得大量数据点,您希望将其限制为 10(_internal
数据库很容易超过该值,但对我们的示例有好处)。
鉴于以下节选脚本
var data = stream
|from()
.database(db)
.retentionPolicy(rp)
.measurement(measurement)
.groupBy(groupBy)
.where(whereFilter)
|eval(lambda: "numMeasurements")
.as('value')
var customized = data
|sideload()
.source('file:///etc/kapacitor/customizations/demo/')
.order('hosts/host-{{.hostname}}.yaml')
.field('maxNumMeasurements',100)
|log()
var trigger = customized
|alert()
.crit(lambda: "value" > "maxNumMeasurements")
以及服务器的名称,但influxdb
文件/etc/kapacitor/customizations/demo/hosts/host-influxdb.yaml
如下所示
maxNumMeasurements: 10
如果超过 10 并且主机名标记等于OR 如果超过 100 value
,则会触发严重警报。numMeasurements
influxdb
value
在使用侧载处理计划停机时间的文档中有一个示例
此外,我使用 docker-compose 在 github 上创建了一个可用的示例
请注意,该示例有一个警告:由于动态生成了第二个数据库,因此警报会发生变化。但这应该足以说明如何解决问题。
推荐阅读
- mips - lui 指令中的立即数范围
- php - 如何在 PHP 的关联数组中使用复杂对象作为键?
- javascript - 在 slickgrid 上混合可点击行和不可点击行
- c++ - 关于静态全局 lambda 变量的错误警告?
- spring - 将 apache tomcat 服务器从 7.0 升级到 8.5.5 时出错,请检查您是否有多个 ContextLoader*
- javascript - 带有音色控制的 JS 音高变换
- java - 如何为标准对话框 PreferenceFragmentCompat 设置可取消(假)
- spring-boot - Spring Cloud Stream 2.0 和 startOffset 最新
- weather - aeris 天气框架中的温度模块
- use-case - 用例 Plantuml - 垂直堆叠组件