电子邮件 (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
将所有告警设置为仅状态更改模式,这意味着只有在告警状态更改时才会发送告警。仅当 global
为 true
时适用。
选项
以下电子邮件事件处理器选项可以在处理程序文件中设置,或者在使用 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
主题并使用 email
或 smtp
事件处理器发送告警电子邮件。
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 中多次使用。您可以组合使用 to
和 toTemplates
选项,也可以根据您的用例单独使用它们。
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" }}')
此页面是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 Kapacitor 和本文档的反馈和错误报告。如需获得支持,请使用以下资源