Documentation

设置事件处理程序

通过向支持的事件处理程序发送 警报消息 将 Kapacitor 集成到您的监控系统中。 目前,Kapacitor 可以将警报消息发送到特定的日志文件和特定的 URL,以及发送到 SlackHipChat 等应用程序。

本文件提供了使用Kapacitor设置事件处理程序的逐步说明,包括相关的配置选项和TICKscript语法。目前,本文件并未涵盖所有支持的事件处理程序,但我们将会逐步增加该页面的内容。有关支持的事件处理程序的完整列表以及更多信息,请参见事件处理程序参考文档

HipChat 设置
Telegram 设置

HipChat 设置

HipChat 是 Atlassian 的网络服务,提供群聊、视频聊天和屏幕共享。设置 Kapacitor 以向 HipChat 房间发送警报消息。

要求

要将Kapacitor与HipChat配置在一起,您需要:

  • 您的HipChat子域名
  • 您的HipChat房间名称
  • 用于发送通知的HipChat API访问令牌

HipChat API 访问令牌

以下步骤描述了如何创建API访问令牌。

  1. 从HipChat主页,通过点击右上角的人物图标访问 帐户设置

  2. 从左侧菜单栏的项目中选择API访问

  3. 创建新令牌 下,输入您的令牌标签(可以是任何内容)。

  4. 创建新令牌 下,选择 发送通知 作为范围。

  5. 点击 创建

    您的令牌出现在创建新令牌部分正上方的表格中:

    HipChat token

配置

[hipchat]的Kapacitor配置文件部分,设置:

  • enabled 设置为 true
  • url 设置中输入您的 HipChat 子域名

可选的配置设置有:

room
设置为您的 HipChat 房间。 如果 TICKscript 没有指定聊天 ID,则此作为默认聊天 ID。

token
设置为您的 HipChat API 访问令牌。如果 TICKscript 没有指定 API 访问令牌,则此项作为默认令牌。

global
设置为 true 以将所有警报发送到 HipChat,而无需在 TICKscripts 中指定 HipChat。

state-changes-only
设置为 true 以仅在警报状态变化时向 HipChat 发送警报。此设置仅在 global 设置也设置为 true 时适用。

示例配置

[hipchat]
  enabled = true
  url = "https://my-subdomain.hipchat.com/v2/room"
  room = "my-room"
  token = "mytokentokentokentoken"
  global = false
  state-changes-only = false

TICKscript 语法

|alert()
  .hipChat()
    .room('<HipChat-room>')
    .token('<HipChat-API-token>')

.room().token() 规范是可选的。如果它们未在 TICKscript 中设置,它们将默认为 roomtoken 设置,在 [hipchat] 部分的 kapacitor.conf 中。

如果 global 在配置文件中被设置为 true,那么在 TICKscript 中就不需要指定 .hipChat()。Kapacitor 默认将所有警报发送到 HipChat。

.room('')
设置HipChat房间。

.token('')
设置HipChat API访问令牌

示例

将警报发送到配置文件中设置的HipChat房间

配置文件

[hipchat]
  enabled = true
  url = "https://testtest.hipchat.com/v2/room"
  room = "my-alerts"
  token = "tokentokentokentokentoken"
  global = false
  state-changes-only = true

TICKscript

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" <  97)
    .message('Hey, check your CPU')
    .hipChat()

该设置向与 my-alerts 房间关联的 testest 子域发送 Hey, check your CPU

将警报发送到在 TICKscript 中设置的 HipChat 房间

配置文件

[hipchat]
  enabled = true
  url = "https://testtest.hipchat.com/v2/room"
  room = "my-alerts"
  token = "tokentokentokentokentoken"
  global = false
  state-changes-only = true

TICKscript

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" <  97)
    .message('Hey, check your CPU')
    .hipChat()
    .room('random')

设置将 Hey, check your CPU 发送到与 random 房间相关的 testest 子域名。 注意 TICKscript 中的 .room() 会覆盖配置文件中的 room 设置。

Telegram 设置

Telegram 是一个消息应用程序。 配置 Kapacitor 以将警报消息发送到 Telegram 机器人。

要求

要将Kapacitor与Telegram配置,您需要:

  • 一个Telegram机器人
  • 一个 Telegram API 访问令牌
  • 您的 Telegram 聊天 ID

电报机器人

以下步骤描述了如何创建一个新的Telegram机器人。

  1. 在您的Telegram应用中搜索@BotFather用户名。

  2. 点击 开始@BotFather 开始对话。

  3. 发送 /newbot@BotFather

    @BotFather 回复:

    好的,一个新的机器人。我们将如何称呼它?请为您的机器人选择一个名字。

    @BotFather 会在接下来的机器人创建过程中提示您;请随意遵循他的指示或继续按照我们下面的步骤进行。两种设置都能成功!

  4. 将您的机器人的名称发送给 @BotFather

    您的机器人的名称可以是任何东西。 请注意,这不是您机器人的 Telegram @username;您将在第 5 步中创建用户名。

    @BotFather 回复:

    很好。现在让我们为你的机器人选择一个用户名。它必须以 bot 结尾。例如:TetrisBot 或 tetris_bot。

  5. 将您的机器人的用户名发送给 @BotFather

    你的机器人的用户名必须以 bot 结尾。 例如: mushroomKap_bot.

    BotFather 回应:

    完成!恭喜你获得了新的机器人。你可以在 t.me/ 找到它。现在你可以为你的机器人添加描述、关于部分和个人资料图片,查看 /help 获取命令列表。顺便说一下,当你完成创建这个酷炫的机器人后,如果你想给它一个更好的用户名,请联系机器人支持。确保机器人在这之前完全正常运行。

    使用此令牌访问HTTP API:

    有关Bot API的描述,请参见此页面:https://core.telegram.org/bots/api

  6. 开始与您的机器人对话。

    点击@BotFather的回复中的t.me/链接, 然后在您的Telegram应用程序底部点击开始

    您新创建的机器人将出现在应用程序左侧的聊天列表中。

Telegram API 访问令牌

以下部分描述了如何识别或创建API访问令牌。

Telegram 的 @BotFather 机器人在您创建机器人时向您发送了一次 API 访问令牌。 在上一部分的第 5 步中查看 @BotFather 的响应,以查找您的令牌所在位置。 如果您找不到 API 访问令牌,请按照以下步骤创建一个新的令牌。

  1. 发送 /token@BotFather

  2. 在您 Telegram 应用程序的底部选择相关的机器人。

    @BotFather 回复一个新的 API 访问令牌:

    您可以使用这个令牌访问HTTP API:

    有关Bot API的描述,请参见此页面:https://core.telegram.org/bots/api

Telegram 聊天 ID

以下步骤描述了如何识别您的聊天ID。

  1. 将以下链接粘贴到您的浏览器中。 将 替换为您在上一部分中识别或创建的API访问令牌:

    https://api.telegram.org/bot/getUpdates?offset=0

  2. 向您的机器人发送消息,在Telegram应用程序中。 消息文本可以是任何内容; 您的聊天记录必须至少包含 一条消息才能获取您的聊天ID。

  3. 刷新您的浏览器。

  4. 在浏览器中识别提供的JSON中的数字聊天ID。 在下面的格式化示例中,聊天ID是 123456789

    {
      "ok": true,
      "result": [
        {
          "update_id": 101010101,
          "message": {
            "message_id": 2,
            "from": {
              "id": 123456789,
              "first_name": "Mushroom",
              "last_name": "Kap"
            },
            "chat": {
              "id": 123456789,
              "first_name": "Mushroom",
              "last_name": "Kap",
              "type": "private"
            },
            "date": 1487183963,
            "text": "hi"
          }
        }
      ]
    }
    

配置

[telegram]部分的Kapacitor配置文件中设置:

默认的 url 设置 (https://api.telegram.org/bot) 无需额外配置。

可选的配置设置有:

聊天 ID

设置你的 Telegram 聊天 ID。如果 TICKscript 没有指定聊天 ID,则此作为默认聊天 ID。

解析模式

设置为 MarkdownHTML 以便于Markdown格式或HTML格式的警报消息。 默认的 parse-modeMarkdown

禁用网页预览

设置为 true 以禁用 link previews 在警报消息中。

禁用通知

设置为 true 以在 iOS 设备上禁用通知,并在 Android 设备上禁用声音。 当设置为 true 时,Android 用户仍会收到通知。

全局

设置为 true 以便将所有警报发送到 Telegram,而无需在 TICKscripts 中指定 Telegram。

仅状态变化

设置为 true 以便仅在警报状态发生变化时发送警报到 Telegram。 此设置仅在 global 设置也设置为 true 时适用。

示例配置

[telegram]
  enabled = true
  url = "https://api.telegram.org/bot"
  token = "abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  chat-id = "123456789"
  parse-mode = Markdown
  disable-web-page-preview = true
  disable-notification = false
  global = true
  state-changes-only = true

TICKscript 语法

|alert()
  .telegram()
    .chatId('<chat_id>')
    .disableNotification()
    .disableWebPagePreview()
    .parseMode(['Markdown' | 'HTML'])

这几个 .chatId().disableNotification().disableWebPagePreview().parseMode() 的规范是可选的。 如果它们没有在 TICKscript 中设置,它们将默认使用配置文件中 [telegram] 部分的 chat-iddisable-notificationdisable-web-page-previewparse-mode 设置。 请注意,如果配置文件中的 global 被设置为 true,则无需在 TICKscript 中指定 .telegram();Kapacitor 默认将所有警报发送到 Telegram。

.chatId('')
设置 Telegram 聊天 ID

.disableNotification()
禁用iOS设备上的通知,并禁用Android设备上的声音。 Android用户仍然会收到通知。

.disableWebPagePreview()
禁用链接预览在警报消息中。

.parseMode(['Markdown' | 'HTML'])
设置 MarkdownHTML 作为警报消息的格式。

示例

将警报发送到配置文件中设置的Telegram聊天ID

配置文件

[telegram]
  enabled = true
  url = "https://api.telegram.org/bot"
  token = "abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  chat-id = "123456789"
  parse-mode  = "Markdown"
  disable-web-page-preview = false
  disable-notification = false
  global = false
  state-changes-only = false

TICKscript

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" < 97)
    .message('Might want to check your CPU')
    .telegram()

该设置将 Might want to check your CPU 发送到与聊天 ID 123456789 相关联的 Telegram 机器人和 API 访问令牌 abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

将警报发送到在TICKscript中设置的Telegram聊天ID

配置文件

[telegram]
  enabled = true
  url = "https://api.telegram.org/bot"
  token = "abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  chat-id = ""
  parse-mode  = "Markdown"
  disable-web-page-preview = false
  disable-notification = false
  global = false
  state-changes-only = false

TICKscript

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" < 97)
    .message('Might want to check your CPU')
    .telegram()
      .chatId('123456789')

该设置将 Might want to check your CPU 发送到与聊天 ID 123456789 相关的 Telegram 机器人,以及 API 访问令牌 abcdefghi:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx



Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: