You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过API或脚本下载Elastic Search Kibana生成的PDF报告

正确下载Kibana生成的PDF报告的方法

你直接用wget请求失败是因为缺少Kibana API要求的鉴权凭证和必要请求头,部分场景下也可能是你发起请求时报告还未生成完成,导致返回非PDF响应。

方法1:使用wget直接下载

根据你的鉴权方式选择对应命令:

  • 基础用户名密码鉴权:
wget --user=<Kibana用户名> --password=<Kibana密码> --header="kbn-xsrf: true" http(s)://<Kibana服务地址>:<端口><你获取到的下载路径>
  • API Key鉴权:
wget --header="Authorization: ApiKey <你生成的Kibana API Key>" --header="kbn-xsrf: true" http(s)://<Kibana服务地址>:<端口><你获取到的下载路径>

注:kbn-xsrf: true是Kibana API强制要求的请求头,不可省略。

方法2:使用curl下载(输出更可控,更推荐)

curl -u <Kibana用户名>:<Kibana密码> -H "kbn-xsrf: true" -o report.pdf http(s)://<Kibana服务地址>:<端口><你获取到的下载路径>

执行后会直接把下载的PDF保存为当前目录下的report.pdf。

方法3:编程方式实现(含状态轮询,适合自动化脚本)

以下是Python示例:

import requests
import time

# 替换为你自己的配置
KIBANA_HOST = "http://你的Kibana地址:5601"
DOWNLOAD_PATH = "/api/.../download/xyzdrfd"
USER = "你的Kibana账号"
PWD = "你的Kibana密码"

headers = {
    "kbn-xsrf": "true"
}

# 先轮询确认报告生成完成
status_path = DOWNLOAD_PATH.replace("/download/", "/status/")
while True:
    resp = requests.get(f"{KIBANA_HOST}{status_path}", auth=(USER, PWD), headers=headers)
    resp_data = resp.json()
    if resp_data["status"] == "completed":
        break
    if resp_data["status"] == "failed":
        raise Exception(f"报告生成失败:{resp_data.get('error', '未知错误')}")
    time.sleep(2)

# 下载保存PDF
download_resp = requests.get(f"{KIBANA_HOST}{DOWNLOAD_PATH}", auth=(USER, PWD), headers=headers)
with open("report.pdf", "wb") as f:
    f.write(download_resp.content)

常见问题补充

  • 如果你的Kibana用了自签名HTTPS证书,wget追加--no-check-certificate参数,curl追加-k参数,Python requests请求追加verify=False参数即可
  • 所用的账号/API Key需要提前配置reporting:download权限,否则会返回403错误

内容的提问来源于stack exchange,提问作者Rahuman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:36:04