自动生成报表编辑

要自动生成 PDF 和 CSV 报表,请生成一个 POST URL,然后使用 Watcher 或脚本提交 HTTP POST 请求。

创建 POST URL编辑

创建触发报表生成 PDF 和 CSV 报表的 POST URL。

要创建 PDF 报表的 POST URL

  1. 打开主菜单,然后单击 仪表盘可视化库画布
  2. 打开要作为报表查看的仪表盘、可视化或 画布 工作区。
  3. 从工具栏中,单击 共享 > PDF 报表,然后选择一个选项

    • 如果您使用的是 仪表盘可视化库,请单击 复制 POST URL
    • 如果您使用的是 画布,请单击 高级选项 > 复制 POST URL

要创建 CSV 报表的 POST URL

  1. 打开主菜单,然后单击 发现
  2. 打开要共享的已保存搜索。
  3. 在工具栏中,单击 共享 > CSV 报表 > 复制 POST URL

使用 Watcher编辑

要配置一个 watch 以通过电子邮件发送报表,请在 email 操作中使用 reporting 附件类型。有关更多信息,请参阅 配置电子邮件帐户

例如,以下 watch 每小时生成一个 PDF 报表并通过电子邮件发送报表

PUT _watcher/watch/error_report
{
  "trigger" : {
    "schedule": {
      "interval": "1h"
    }
  },
  "actions" : {
    "email_admin" : { 
      "email": {
        "to": "'Recipient Name <[email protected]>'",
        "subject": "Error Monitoring Report",
        "attachments" : {
          "error_report.pdf" : {
            "reporting" : {
              "url": "http://0.0.0.0:5601/api/reporting/generate/printablePdf?jobParams=...", 
              "retries":40, 
              "interval":"15s", 
              "auth":{ 
                "basic":{
                  "username":"elastic",
                  "password":"changeme"
                }
              }
            }
          }
        }
      }
    }
  }
}

配置至少一个电子邮件帐户以使 Watcher 能够发送电子邮件。有关更多信息,请参阅 配置电子邮件帐户

一个示例 POST URL。您可以复制和粘贴任何报表的 URL。

可选,默认值为 40

可选,默认值为 15s

具有访问 Kibana 和报表功能权限的用户的用户凭据。有关更多信息,请参阅 配置报表

报表 仅作为电子邮件附件类型与 Watcher 集成。

报表生成 URL 可能包含会导致 watch 失败并出现 parse_exception 的日期数学表达式。为了避免 watch 失败,请从日期数学表达式中删除花括号 { } 并对字符进行 URL 编码。例如,...(range:(%27@timestamp%27:(gte:now-15m%2Fd,lte:now%2Fd))))...

有关配置 watch 的更多信息,请参阅 Watcher 的工作原理

使用脚本编辑

要从脚本自动生成报表,请向 POST URL 发送请求。该请求将返回一个 JSON,其中包含一个 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-* 索引中所见。

HTTP 响应代码编辑

报表 API 使用 HTTP 响应代码提供反馈。在自动化中,这有助于外部系统跟踪各种可能的作业状态

  • 200 (OK): 如预期,Kibana 在对排队或下载报表的成功请求的响应中返回 200 状态。

    Kibana 将通过 POST URL 成功排队报表作业时发送 200 响应状态。即使作业在稍后以某种方式失败,这也是正确的,因为报表生成是异步发生的,与排队无关。

  • 400 (错误请求): 当向 POST URL 发送请求时,如果您没有使用 POST 作为 HTTP 方法,或者您的请求缺少 kbn-xsrf 标头,Kibana 将为该请求返回代码 400 状态响应。
  • 503 (服务不可用): 当使用 path 请求下载时,如果报表生成尚未完成,您将收到 503 状态响应。该响应将包含一个 Retry-After 标头。您可以将脚本设置为等待 Retry-After 标头中的秒数,然后根据需要重复,直到报表完成。
  • 500 (内部服务器错误): 当使用 path 请求下载时,如果由于生成报表时出错而导致报表不可用,您将收到 500 状态响应。有关更多信息,请访问 管理 > Kibana > 报表

已弃用的报表 URL编辑

如果您在升级 Kibana 后遇到已弃用的报表 URL 问题,请重新生成报表的 POST URL。

  • 仪表盘 报表:/api/reporting/generate/dashboard/<dashboard-id>
  • 可视化库 报表:/api/reporting/generate/visualization/<visualization-id>
  • 发现 已保存搜索报表:/api/reporting/generate/search/<saved-search-id>

重要提示:在早期的 Kibana 版本中,您可以使用 &sync 参数附加到保持请求打开直到文档完全生成的报表 URL。现在不支持 &sync 参数。如果您在 Watcher 中使用 &sync 参数,则必须更新该参数。