文档文档

电子邮件 (SMTP) 事件处理器

电子邮件事件处理器通过 SMTP/电子邮件发送告警消息。

配置

电子邮件事件处理器的配置以及默认选项值在您的 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

外发邮件的 “From” 地址。

to

默认 “To” 地址列表。

no-verify

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

idle-timeout

空闲连接关闭的时间。

global

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

state-changes-only

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

选项

以下电子邮件事件处理器选项可以在处理程序文件中设置,或者在使用 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/电子邮件事件处理器

电子邮件事件处理器可以在 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 主题并发送所有告警电子邮件。

创建一个将告警消息发布到主题的 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 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、近实时数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 基于 Core 的基础构建,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看