电子邮件动作
使用 email 操作来发送电子邮件通知。要发送邮件,你必须在 elasticsearch.yml 中配置至少一个电子邮件账户。
电子邮件通知可以是纯文本,也可以使用 HTML 设置样式。你可以使用模板将监视器执行负载(payload)中的信息包含进来,并将整个监视器负载附加到邮件中。
有关支持的属性,请参阅邮件操作属性。邮件操作定义中缺少的任何属性都会在邮件账户配置中查找。必需的属性必须在邮件操作定义或账户的 email_defaults 中进行设置。
你可以在 actions 数组中配置邮件操作。操作特定的属性使用 email 关键字指定。
例如,以下邮件操作使用模板将监视器负载中的数据包含在邮件正文中
"actions" : {
"send_email" : {
"email" : {
"to" : "username@example.org",
"subject" : "Watcher Notification",
"body" : "{{ctx.payload.hits.total}} error logs found"
}
}
}
- 操作的 ID。
- 操作类型设置为
email。 - 发送电子邮件的一个或多个地址。必须在操作定义或邮件账户配置中指定。
- 邮件主题可以包含静态文本和 Mustache 模板。
- 邮件正文可以包含静态文本和 Mustache 模板。必须在操作定义或邮件账户配置中指定。
你可以将执行上下文负载或来自任何 HTTP 服务的数据附加到电子邮件通知中。你可以配置的附件数量没有限制。
要配置附件,请指定附件文件的名称以及附件类型:data、http 或 reporting。data 附件类型将执行上下文负载附加到邮件消息中。http 附件类型允许你发出 HTTP 请求并将响应附加到邮件消息中。配置 http 附件类型时,必须指定请求 URL。reporting 附件类型是一种特殊类型,用于包含从 Kibana 渲染的 PDF 仪表板。该类型会持续轮询 Kibana 应用以检查仪表板渲染是否完成,从而避免可能被中间的防火墙或负载均衡器中断的长时间运行的 HTTP 连接。
"actions" : {
"email_admin" : {
"email": {
"to": "John Doe <john.doe@example.com>",
"attachments" : {
"my_image.png" : {
"http" : {
"content_type" : "image/png",
"request" : {
"url": "http://example.org/foo/my-image.png"
}
}
},
"dashboard.pdf" : {
"reporting" : {
"url": "http://example.org:5601/api/reporting/generate/dashboard/Error-Monitoring"
}
},
"data.yml" : {
"data" : {
"format" : "yaml"
}
}
}
}
}
}
- 附件的 ID,它用作邮件附件中的文件名。
- 附件的类型及其具体配置。
- 从中检索附件的 URL。
- 如果未指定格式,数据附件默认使用 JSON。
| 名称 | 描述 |
|---|---|
content_type |
设置邮件附件的内容类型。默认情况下,内容类型是从 HTTP 服务发送的响应中提取的。你可以显式指定内容类型,以防响应未指定内容类型或指定错误,从而确保在邮件中正确设置该类型。可选。 |
内联 (inline) |
配置为以 inline 处置方式发送的附件。这允许在 HTML 正文中使用嵌入式图像,这些图像会在某些电子邮件客户端中显示。可选。默认为 false。 |
request |
包含 HTTP 请求属性。你必须至少指定 url 属性来配置服务终结点的宿主机和路径。有关 HTTP 请求属性的完整列表,请参阅Webhook 操作属性。必需。 |
| 名称 | 描述 |
|---|---|
format |
附加监视器数据,等同于在监视器配置中指定 attach_data。可选值为 json 或 yaml。如果未指定,则默认为 yaml。 |
| 名称 | 描述 |
|---|---|
url |
触发仪表板创建的 URL |
内联 (inline) |
配置为以 inline 处置方式发送的附件。这允许在 HTML 正文中使用嵌入式图像,这些图像会在某些电子邮件客户端中显示。可选。默认为 false。 |
retries |
报告附件类型会尝试定期轮询以接收创建的 PDF。这配置了重试次数。默认为 40。可以全局配置 xpack.notification.reporting.retries 设置来更改默认值。 |
间隔 |
两次轮询尝试之间等待的时间。默认为 15s(这意味着默认情况下,watcher 会尝试下载仪表板 10 分钟,即 40 次,每次 15 秒)。可以全局配置 xpack.notification.reporting.interval 设置来更改默认值。 |
auth |
请求的附加身份验证配置,详情请参阅使用 watcher |
proxy |
请求的附加代理配置。有关如何配置这些值的信息,请参阅HTTP 输入属性。 |
你可以在 email 操作中使用 reporting 附件类型来自动生成 Kibana 报告并通过电子邮件分发。
请参阅自动化报告生成。
| 名称 | 必填 | 默认值 | 描述 |
|---|---|---|---|
account |
否 | 默认账户 | 用于发送电子邮件的电子邮件账户。 |
from |
否 | - | 发送电子邮件的电子邮件地址。只要 from 字段解析为有效的电子邮件地址,它就可以包含 Mustache 模板。 |
to |
是 | - | to 收件人的电子邮件地址。只要 to 字段解析为有效的电子邮件地址,它就可以包含 Mustache 模板。 |
抄送 |
否 | - | cc 收件人的电子邮件地址。只要 cc 字段解析为有效的电子邮件地址,它就可以包含 Mustache 模板。 |
bcc |
否 | - | bcc 收件人的电子邮件地址。只要 bcc 字段解析为有效的电子邮件地址,它就可以包含 Mustache 模板。 |
reply_to |
否 | - | 将在消息的 Reply-To 标头上设置的电子邮件地址。只要 reply_to 字段解析为有效的电子邮件地址,它就可以包含 Mustache 模板。 |
SSL-SSH 配置文件执行的操作 |
否 | - | 电子邮件的主题。主题可以是静态文本,也可以包含 Mustache 模板。 |
body |
否 | - | 电子邮件的正文。当该字段包含字符串时,它将默认为电子邮件的文本正文。设置为对象以指定文本正文或 html 正文,或两者兼具(使用以下字段) |
body.text |
否 | - | 电子邮件的纯文本正文。正文可以是静态文本,也可以包含 Mustache 模板。 |
body.html |
否 | - | 电子邮件的 html 正文。正文可以是静态文本,也可以包含 Mustache 模板。此正文将被清理以删除脚本等危险内容。可以通过在 elasticsearch.yaml 中设置 xpack.notification.email.html.sanitization.enabled: false 来禁用此行为。 |
priority |
否 | - | 此电子邮件的优先级。有效值为:lowest、low、normal、high 和 highest。只要优先级解析为有效值之一,它就可以包含 Mustache 模板。 |
attachments |
否 | - | 将监视器负载(data 附件)或从 HTTP 服务检索到的文件(http 附件)附加到邮件中。有关更多信息,请参阅配置电子邮件附件。 |
attach_data |
否 | false | 指示是否应将监视器执行数据附加到邮件中。你可以指定布尔值或对象。如果将 attach_data 设置为 true,则数据将作为 YAML 文件附加。此属性已弃用,请使用 attachments 属性添加 data 附件以附加监视器负载。 |
attach_data.format |
否 | yaml | 当 attach_data 指定为对象时,此字段控制附加数据的格式。支持的格式为 json 和 yaml。此属性已弃用,请使用 attachments 属性添加 data 附件以附加监视器负载。 |
- 电子邮件地址
- 电子邮件地址可以包含两个可能的部分——地址本身以及 RFC 822 中描述的可选个人姓名。地址可以表示为
user@host.domain形式的字符串,也可以表示为Personal Name <user@host.domain>形式的字符串。你还可以将电子邮件地址指定为包含name和address字段的对象。
- 地址列表
- 地址列表可以指定为数组:
[ 'Personal Name <user1@host.domain>', 'user2@host.domain' ]。
Watcher 可以使用任何 SMTP 电子邮件服务发送电子邮件。电子邮件可以包含基本的 HTML 标签。你可以通过配置 HTML 清理选项来控制允许哪些标签组。
你可以在 elasticsearch.yml 的 xpack.notification.email 命名空间中配置 Watcher 用于发送电子邮件的账户。指定 SMTP 用户的密码安全地存储在 Elasticsearch 密钥库 中。
如果你的电子邮件账户配置为需要两步验证,则需要生成并使用独特的应用密码从 Watcher 发送电子邮件。如果使用主密码,身份验证将失败。
Watcher 提供了三个控制 MIME 消息结构的邮件配置文件:standard(默认)、gmail 和 outlook。这些配置文件适应了不同邮件系统解释 MIME 消息标准时的差异。如果你使用的是 Gmail 或 Outlook,建议使用相应的配置文件。如果使用其他邮件系统,请使用 standard 配置文件。
有关配置 Watcher 以配合不同邮件系统工作的更多信息,请参阅
如果配置了多个电子邮件账户,则必须配置默认账户,或者在 email 操作中指定使用哪个账户发送邮件。
xpack.notification.email:
default_account: team1
account:
team1:
...
team2:
...
使用以下电子邮件账户设置通过 Gmail SMTP 服务发送邮件
xpack.notification.email.account:
gmail_account:
profile: gmail
smtp:
auth: true
starttls.enable: true
host: smtp.gmail.com
port: 587
user: <username>
要存储账户 SMTP 密码,请使用 keystore 命令(请参阅安全设置)
bin/elasticsearch-keystore add xpack.notification.email.account.gmail_account.smtp.secure_password
如果当 Watcher 尝试发送邮件时,你收到了提示你需要从网页浏览器继续登录过程的身份验证错误,则需要将 Gmail 配置为允许不够安全的应用程序访问您的账户。
如果你的账户启用了两步验证,则必须生成并使用独特的应用密码从 Watcher 发送邮件。有关更多信息,请参阅使用应用密码登录。
使用以下电子邮件账户设置从 Outlook.com SMTP 服务发送邮件操作
xpack.notification.email.account:
outlook_account:
profile: outlook
smtp:
auth: true
starttls.enable: true
host: smtp-mail.outlook.com
port: 587
user: <email.address>
要存储账户 SMTP 密码,请使用 keystore 命令(请参阅安全设置)
bin/elasticsearch-keystore add xpack.notification.email.account.outlook_account.smtp.secure_password
发送电子邮件时,你必须提供发件人地址,可以是在账户配置中指定的默认地址,也可以作为监视器中邮件操作的一部分。
如果启用了两步验证,你需要使用独特的应用密码。有关更多信息,请参阅应用密码和两步验证。
使用以下电子邮件账户设置从 Amazon Simple Email Service (SES) SMTP 服务发送邮件
xpack.notification.email.account:
ses_account:
email_defaults:
from: <email address of service account>
smtp:
auth: true
starttls.enable: true
starttls.required: true
host: email-smtp.us-east-1.amazonaws.com
port: 587
user: <username>
- 在某些情况下,Amazon SES 会对
email_defaults.from进行验证,以确保它是有效的本地电子邮件账户。 smtp.host因区域而异。
要存储账户 SMTP 密码,请使用 keystore 命令(请参阅安全设置)
bin/elasticsearch-keystore add xpack.notification.email.account.ses_account.smtp.secure_password
你需要使用 Amazon SES SMTP 凭据通过 Amazon SES 发送电子邮件。有关更多信息,请参阅获取你的 Amazon SES SMTP 凭据。你可能还需在 AWS 中验证你的电子邮件地址或你的整个域。
使用以下电子邮件账户设置从 Microsoft Exchange 发送邮件操作
xpack.notification.email.account:
exchange_account:
profile: outlook
email_defaults:
from: <email address of service account>
smtp:
auth: true
starttls.enable: true
host: <your exchange server>
port: 587
user: <email address of service account>
- 某些组织将 Exchange 配置为验证
from字段是否为有效的本地电子邮件账户。 - 许多组织支持将你的电子邮件地址用作用户名,不过如果遇到与身份验证相关的失败,最好向系统管理员进行确认。
要存储账户 SMTP 密码,请使用 keystore 命令(请参阅安全设置)
bin/elasticsearch-keystore add xpack.notification.email.account.exchange_account.smtp.secure_password
email 操作支持发送带有 HTML 正文的消息。但是,出于安全原因,Watcher 会对 HTML 进行清理。
你可以通过在 elasticsearch.yml 中配置 xpack.notification.email.html.sanitization.allow 和 xpack.notification.email.html.sanitization.disallow 设置来控制允许或不允许哪些 HTML 特性。你可以指定单独的 HTML 元素和HTML 特性组。默认情况下,Watcher 允许以下特性:body、head、_tables、_links、_blocks、_formatting 和 img:embedded。
例如,以下设置允许 HTML 包含表格和块元素,但不允许 <h4>、<h5> 和 <h6> 标签。
xpack.notification.email.html.sanitization:
allow: _tables, _blocks
disallow: h4, h5, h6
要完全禁用清理功能,请将以下设置添加到 elasticsearch.yml 中
xpack.notification.email.html.sanitization.enabled: false