文档文档

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

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

选项

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

名称类型描述
tolist of strings电子邮件地址列表。
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 事件处理程序可在 TICKscripts 和处理程序文件中用于通过电子邮件发送警报。电子邮件主题是 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')

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

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

创建将警报消息发布到主题的 TICKscript。当空闲 CPU 使用率低于 10% 时,下面的 TICKscript 将警报消息发送到 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" }}')

此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2