自动生成报告
Elastic Stack 无服务器
要自动生成 PDF 和 CSV 报告,请生成一个 POST URL,然后使用 Watcher 或脚本提交 HTTP POST
请求。
创建触发报告以生成 PDF 和 CSV 报告的 POST URL。
创建 PDF 报告的 POST URL
转到 仪表板、可视化库 或 Canvas。
打开您要作为报告查看的仪表板、可视化或 Canvas 工作区。
- 如果您使用的是 仪表板 或 可视化库,请从工具栏中单击 共享 > 导出,选择 PDF 选项,然后单击 复制 POST URL。
- 如果您使用的是 Canvas,请从工具栏中单击 共享 > PDF 报告,然后单击 高级选项 > 复制 POST URL。
创建 CSV 报告的 POST URL
- 转到 Discover。
- 打开您要共享的已保存的 Discover 会话。
- 在工具栏中,单击 共享 > 导出 > 复制 POST URL。
要配置一个监视器来通过电子邮件发送报告,请在 email
操作中使用 reporting
附件类型。有关更多信息,请参阅 配置电子邮件帐户。
例如,以下监视器每小时生成一个 PDF 报告并通过电子邮件发送报告
PUT _watcher/watch/error_report
{
"trigger" : {
"schedule": {
"interval": "1h"
}
},
"actions" : {
"email_admin" : {
"email": {
"to": "'Recipient Name <recipient@example.com>'",
"subject": "Error Monitoring Report",
"attachments" : {
"error_report.pdf" : {
"reporting" : {
"url": "http://0.0.0.0:5601/api/reporting/generate/printablePdfV2?jobParams=...",
"retries":40,
"interval":"15s",
"auth":{
"basic":{
"username":"elastic",
"password":"changeme"
}
}
}
}
}
}
}
}
}
- 配置至少一个电子邮件帐户以使 Watcher 能够发送电子邮件。有关更多信息,请参阅 配置电子邮件帐户。
- POST URL 示例。您可以复制并粘贴任何报告的 URL。
- 可选,默认为
40
。 - 可选,默认为
15s
。 - 具有访问 Kibana 和报告功能权限的用户的用户凭据。有关更多信息,请参阅 配置报告。
报告仅作为电子邮件附件类型与 Watcher 集成。
报告生成 URL 可能包含日期数学表达式,导致监视器因 parse_exception
而失败。为避免监视器失败,请从日期数学表达式中删除花括号 {
}
并对字符进行 URL 编码。例如,...(range:(%27@timestamp%27:(gte:now-15m%2Fd,lte:now%2Fd))))...
有关配置监视器的更多信息,请参阅 Watcher 的工作原理。
要从脚本自动生成报告,请向 POST
URL 发出请求。该请求返回一个 JSON,其中包含一个具有 URL 的 path
属性,您可以使用该 URL 下载报告。在 HTTP 请求中使用 GET
方法下载报告。
要使用 cURL 通过 POST
URL 排队生成 CSV 报告
curl \
-XPOST \
-u elastic \
-H 'kbn-xsrf: true' \
'http://0.0.0.0:5601/api/reporting/generate/csv?jobParams=...'
- 必需的
POST
方法。 - 具有访问 Kibana 和报告功能权限的用户的用户凭据。
- 所有对 Kibana 的
POST
请求都需要的kbn-xsrf
标头。有关更多信息,请参阅 API 请求标头。 - POST URL。您可以复制并粘贴任何报告的 URL。
成功排队报告的响应示例
{
"path": "/api/reporting/jobs/download/jxzaofkc0ykpf4062305t068",
"job": {
"id": "jxzaofkc0ykpf4062305t068",
"index": ".reporting-2018.11.11",
"jobtype": "csv",
"created_by": "elastic",
"payload": ...,
"timeout": 120000,
"max_attempts": 3
}
}
- Kibana 主机上用于下载报告的相对路径。
- (未包含在示例中)报告作业的内部表示形式,位于
.reporting-*
存储中。
生成报告的请求的响应有效负载包括下载报告的路径。 下载报告的 API 使用 HTTP 响应代码来提供反馈。 在自动化中,这有助于外部系统跟踪各种可能的作业状态
200
(OK):正如预期的那样,Kibana 在响应中返回200
状态,以指示成功请求排队或下载报告。注意Kibana 将为通过 POST URL 成功排队报告作业发送
200
响应状态。即使该作业以后以某种方式失败,也是如此,因为报告生成与排队异步发生。400
(Bad Request):向 POST URL 发送请求时,如果您不使用POST
作为 HTTP 方法,或者如果您的请求缺少kbn-xsrf
标头,Kibana 将为该请求返回代码400
状态响应。503
(Service Unavailable):当使用path
请求下载时,如果报告生成尚未完成,您将收到503
状态响应。该响应将包含Retry-After
标头。您可以将脚本设置为等待Retry-After
标头中的秒数,然后根据需要重复,直到报告完成。500
(Internal Server Error):当使用path
请求下载时,如果报告因生成报告时发生错误而不可用,您将收到500
状态响应。 更多信息可在管理 > Kibana > 报告中找到。
如果您在升级 Kibana 后遇到已弃用的报告 URL 的问题,请为您的报告重新生成 POST URL。
- 仪表板报告:
/api/reporting/generate/dashboard/<dashboard-id>
- 可视化库报告:
/api/reporting/generate/visualization/<visualization-id>
- Discover 报告:
/api/reporting/generate/search/<discover-session-id>
在早期版本的 Kibana 中,您可以使用 &sync
参数附加到报告 URL,该 URL 将保持请求打开状态,直到完全生成文档为止。 现在不支持 &sync
参数。 如果您在 Watcher 中使用 &sync
参数,则必须更新该参数。