文档文档

Email (SMTP) 事件处理程序

Email 事件处理程序通过 SMTP/电子邮件发送警报消息。

配置

Email 事件处理程序的配置以及默认 选项 值在您的 kapacitor.conf[smtp] 部分中设置。以下是一个配置示例

[smtp]
  enabled = true
  host = "localhost"
  port = 25
  username = "username"
  password = "passw0rd"
  from = "me@example.com"
  to = ["me@example.com", "you@example.com"]
  no-verify = false
  idle-timeout = "30s"
  global = false
  state-changes-only = false

enabled (已启用)

设置为 true 以启用 SMTP 事件处理程序。

host (主机)

SMTP 主机。

port (端口)

SMTP 端口。

username (用户名)

您的 SMTP 用户名。

password (密码)

您的 SMTP 密码。

from (发件人)

外发邮件的“发件人”地址。

to (收件人)

默认“收件人”地址列表。

no-verify (不验证)

连接到 SMTP 服务器时跳过 TLS 证书验证。

idle-timeout (空闲超时)

空闲连接关闭的时间。

global (全局)

如果为 true,所有警报都将通过电子邮件发送,而无需在 TICKscript 中显式指定 SMTP 处理程序。

state-changes-only (仅状态更改时)

将所有警报设置为仅状态更改模式,这意味着只有在警报状态更改时才会发送警报。仅当 globaltrue 时适用。

选项

以下 Email 事件处理程序选项可以在 处理程序文件 中设置,或者在使用 TICKscript 中的 .email() 时设置。

名称类型描述
to (收件人)字符串列表电子邮件地址列表。
toTemplate(s) (收件人模板)字符串模板派生的电子邮件地址。

示例:处理程序文件

id: handler-id
topic: topic-name
kind: smtp
options:
  to:
    - oncall1@example.com
    - oncall2@example.com

示例:TICKscript

|alert()
  // ...
  .email()
    .to('oncall1@example.com')
    .to('oncall2@example.com')

  // OR
  .email('oncall1@example.com')
    .to('oncall2@example.com')

使用 SMTP/Email 事件处理程序

Email 事件处理程序可以在 TICKscript 和处理程序文件中使用,以电子邮件发送警报。电子邮件主题是 AlertNode.Message 属性。电子邮件正文是 AlertNode.Details 属性。电子邮件以 HTML 格式发送,因此正文可以包含 html 标记。

kapacitor.conf 中的 SMTP 设置

[smtp]
  enabled = true
  host = "smtp.myserver.com"
  port = 25
  username = "username"
  password = "passw0rd"
  from = "me@emyserver.com"
  to = ["oncall0@mydomain.com"]
  no-verify = false
  idle-timeout = "30s"
  global = false
  state-changes-only = false

来自 TICKscript 的电子邮件警报

以下 TICKscript 使用 .email() 事件处理程序,以便在空闲 CPU 使用率降至 10% 以下时发送电子邮件。

email-cpu-alert.tick

stream
  |from()
    .measurement('cpu')
  |alert()
    .crit(lambda: "usage_idle" < 10)
    .message('Hey, check your CPU')
    .email()
      .to('oncall1@mydomain.com')
      .to('oncall2@mydomain.com')

来自已定义处理程序的电子邮件警报

以下设置将向 cpu 主题发送警报,消息为“Hey, check your CPU”(嘿,检查你的 CPU)。添加了一个电子邮件处理程序,该处理程序订阅 cpu 主题并电子邮件发送所有警报。

创建一个 TICKscript,将警报消息发布到主题。以下 TICKscript 在空闲 CPU 使用率降至 10% 以下时,向 cpu 主题发送警报消息。

cpu_alert.tick

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

添加并启用 TICKscript

kapacitor define cpu_alert -tick cpu_alert.tick
kapacitor enable cpu_alert

创建一个处理程序文件,该文件订阅 cpu 主题并使用 emailsmtp 事件处理程序来电子邮件发送警报。

email_cpu_handler.yaml

id: email-cpu-alert
topic: cpu
kind: smtp
options:
  to:
    - oncall1@mydomain.com
    - oncall2@mydomain.com

添加处理程序

kapacitor define-topic-handler email_cpu_handler.yaml

使用 toTemplate 选项发送电子邮件警报

您可以使用 toTemplate 直接从数据中派生电子邮件地址,而不是单独硬编码它们。在下面的示例中,我们同时使用了 to 选项和 toTemplates 选项,以便从数据集派生电子邮件地址并将电子邮件警报直接发送给收件人。与 to 选项一样,toTemplates 选项可以在 TICKscript 中多次使用。您可以组合 totoTemplates 选项,也可以根据您的用例单独使用它们。

stream
	|from()
		.measurement('cpu')
		.where(lambda: "host" == 'serverA')
		.groupBy('host')
	|window()
		.period(10s)
		.every(10s)
	|count('value')
	|default()
		.field('extraemail','bob@example.com')
		.tag('tagemail','bob2@example.com')
	|alert()
		.id('kapacitor.{{ .Name }}.{{ index .Tags "host" }}')
		.details('''
<b>{{.Message}}</b>
Value: {{ index .Fields "count" }}
<a href="http://graphs.example.com/host/{{index .Tags "host"}}">Details</a>
''')
		.info(lambda: "count" > 6.0)
		.warn(lambda: "count" > 7.0)
		.crit(lambda: "count" > 8.0)
		.email()
			.to('user1@example.com', 'user2@example.com')
			.toTemplates('{{ index .Fields "extraemail" }}')

此页内容对您有帮助吗?

感谢您的反馈!


Flux 的未来

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

阅读更多

InfluxDB 3 开源版现已发布公开 Alpha 版

InfluxDB 3 开源版现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版的一部分。

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

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