1

我试图找出在 InfluxDB 中定义警报的最佳或合理方法。例如,我可能会使用 telegraf 附带的 CPU 批处理 tickscript。这可以设置为 Telegraf 监控的所有主机的全局监控器/警报。

当您想偏离主机的上述设置时,即我们希望在 Y% 上发出警报的特定服务器而不是 X% 时,有什么方法?

我很高兴可以为自定义值创建一个独特的 tickscript,但我该如何从原始的“全局”值中排除主机?

这是一个简单的场景,但这需要满足 10,000 台主机的需求,其中将有 100 多个例外,这也将包含 10 秒/100 秒的全局警报定义。

我正在努力了解如何将该平台用作监控/警报的主要来源。

4

3 回答 3

1

正如评论中所说,您可以使用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,则会触发严重警报。numMeasurementsinfluxdbvalue

在使用侧载处理计划停机时间的文档中有一个示例

此外,我使用 docker-compose 在 github 上创建了一个可用的示例

请注意,该示例有一个警告:由于动态生成了第二个数据库,因此警报会发生变化。但这应该足以说明如何解决问题。

于 2019-07-12T22:48:59.267 回答
1

如果您有超过 10,000 台服务器,则在性能和计算方面使用侧载节点的成本是多少?

于 2019-08-08T12:29:22.930 回答
0

对于大量自定义警报,直接在 Chronograph/Kapacitor 中手动管理警报是不可行的。

在 AMMP Technologies,我们需要管理每个数据库、客户、客户对象的警报。这个数字可以进入1000s。我们选择了一个自定义解决方案,其中保留了一组标准的模板 tickscripts(不要与 Kapacitor 模板混淆),并且我们为用户提供了一个只公开相关变量的界面。之后,服务(用 python 编写)将这些变量的值与 tickscript 结合起来,并使用 Kapacitor API 在 Kapacitor 服务器上部署(更新或删除)任务。然后这是自动化的,以便新客户/对象的数据与模板结合并自动部署到 Kapacitor。

你显然需要将你的任务设计得足够具体,这样它们就不会重叠和通用,这样就不会为每一件小事创建任务太多的工作。

于 2019-07-11T12:50:58.563 回答