自动生成报表

编辑

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

创建 POST URL

编辑

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

创建 PDF 报表的 POST URL

  1. 转到 仪表盘可视化库画布
  2. 打开要以报表形式查看的仪表盘、可视化或 画布 工作区。

    • 如果您使用的是 仪表盘可视化库,请从工具栏中单击 共享 > 导出,选择 PDF 选项,然后单击 复制 POST URL
    • 如果您使用的是 画布,请从工具栏中单击 共享 > PDF 报表,然后单击 高级选项 > 复制 POST URL

创建 CSV 报表的 POST URL

  1. 转到 发现
  2. 打开要共享的已保存搜索。
  3. 在工具栏中,单击 共享 > 导出 > 复制 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/printablePdfV2?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 字符进行 URL 编码。例如,...(range:(%27@timestamp%27:(gte:now-15m%2Fd,lte:now%2Fd))))...

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

使用脚本

编辑

要从脚本自动生成报表,请向 POST URL 发出请求。该请求返回一个 JSON,其中包含一个 path 属性,您可以使用该属性的 URL 下载报表。在 HTTP 请求中使用 GET 方法来下载报表。

使用 cURL 将 CSV 报表生成排队,使用 POST URL

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 (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 > 报表

已弃用的报表 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,该 URL 会使请求保持打开状态,直到文档完全生成。现在不支持 &sync 参数。如果您在 Watcher 中使用 &sync 参数,则必须更新该参数。