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()
时设置。
名称 | 类型 | 描述 |
---|---|---|
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
主题并使用 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" }}')
此页内容对您有帮助吗?
感谢您的反馈!