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

无需登录分享Kibana Dashboard到站点的Python实现方案咨询

基于Python实现Kibana仪表盘免登录嵌入的可行方案

核心实现逻辑

  • 无需修改Kibana/Elasticsearch服务端配置,通过Python实现一层轻量代理,自动在请求中注入Kibana认证凭证,前端直接调用代理地址即可免登录访问仪表盘
  • 方案仅需要基础Python运行环境,操作门槛极低,适合ELK栈入门用户使用

操作步骤

1. 生成Kibana访问凭证

登录Kibana后台,点击右上角个人头像 > 管理API密钥 > 创建API密钥,自定义名称后可设置永久有效期,生成后复制完整API密钥字符串保存,该密钥仅显示一次。

2. 安装Python依赖

执行命令安装需要的第三方库:
pip install fastapi uvicorn httpx

3. 编写代理服务代码

新建main.py文件,填入以下代码,按注释替换成你自己的配置信息:

from fastapi import FastAPI, Request, Response
from fastapi.middleware.cors import CORSMiddleware
import httpx

app = FastAPI()

# 生产环境请替换为你自有网站的实际域名,不要使用*
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# 配置项替换为你的实际信息
KIBANA_HOST = "http://你的Kibana服务地址:5601"
# 认证头格式固定为ApiKey+空格+你刚才复制的API密钥
KIBANA_AUTH_HEADER = "ApiKey 替换为你生成的Kibana API密钥"

# 捕获所有路径请求做转发
@app.api_route("/{path:path}", methods=["GET", "POST", "PUT", "DELETE", "OPTIONS"])
async def proxy(path: str, request: Request, response: Response):
    kibana_url = f"{KIBANA_HOST}/{path}"
    headers = dict(request.headers)
    # 注入认证信息
    headers["Authorization"] = KIBANA_AUTH_HEADER
    headers.pop("host", None)

    async with httpx.AsyncClient() as client:
        resp = await client.request(
            method=request.method,
            url=kibana_url,
            headers=headers,
            content=await request.body(),
            params=request.query_params
        )
        # 透传Kibana返回的响应头和状态码
        for key, value in resp.headers.items():
            if key.lower() not in ["content-length", "transfer-encoding", "connection"]:
                response.headers[key] = value
        response.status_code = resp.status_code
        return resp.content

4. 启动代理服务

执行命令启动服务:
uvicorn main:app --host 0.0.0.0 --port 8000

5. 网站嵌入仪表盘

将原有Kibana仪表盘地址的服务地址部分替换为你的Python代理服务地址,直接放入iframe即可:

<iframe src="http://你的Python代理服务地址:8000/app/dashboards#/view/你的仪表盘ID" width="100%" height="800" frameborder="0"></iframe>

注意事项

  • 生产环境务必将跨域配置中的allow_origins改为自有网站的实际域名,避免未授权访问
  • 生成API密钥时请配置最小权限,仅开放仪表盘只读权限,禁止分配数据修改权限
  • 访问量较大时可将服务通过gunicorn部署,或挂载到Nginx后提升性能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 12:36:10