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 = falseenabled
设置为 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() 时设置。
| 名称 | 类型 | 描述 |
|---|---|---|
| to | list 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 主题并使用 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 和本文档提供反馈和错误报告。要获取支持,请使用以下资源: