ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Traefik Log Dashboard REST API参考:8个Agent端点与Bearer认证完整解析(附curl实战示例)

Traefik Log Dashboard REST API参考:8个Agent端点与Bearer认证完整解析(附curl实战示例) Traefik Log Dashboard REST API参考8个Agent端点与Bearer认证完整解析附curl实战示例【免费下载链接】traefik-log-dashboardA real-time dashboard for analyzing Traefik logs in UI with IP geolocation, status code analysis, and service metrics. Built with React (Shadcn UI) and Node.js.项目地址: https://gitcode.com/gh_mirrors/tr/traefik-log-dashboardTraefik Log Dashboard是一个用于实时分析 Traefik 网关日志的可视化面板支持 IP 地理位置定位、状态码分析与服务指标统计。它的核心架构由两大部分组成ReactShadcn UI前端 部署在日志旁的AgentGo 编写的轻量 HTTP 服务。Agent 对外暴露了一组 REST API 端点并采用Bearer Token 认证保护日志数据是二次开发和自动化集成的关键入口。本文带你完整掌握这 8 个端点与认证机制全部配有可直接复制的 curl 实战示例。️ 如何启用 Bearer Token 认证Agent 的认证逻辑非常简洁核心实现在 agent/internal/auth/auth.go 中通过环境变量TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN配置 Token见 agent/internal/config/config.go 第 63 行Token 为空时认证自动关闭所有端点直接放行校验时采用crypto/subtle.ConstantTimeCompare常量时间比较防时序攻击这在开源项目里属于比较少见的安全细节请求头格式固定为Authorization: Bearer 你的Token三种失败场景均返回401 Unauthorized场景响应信息缺少 Authorization 头unauthorized: missing authorization header格式不是Bearer xxxunauthorized: invalid authorization formatToken 不匹配unauthorized: invalid token另外所有端点外层还套了一条中间件链Recovery → 安全头 → 限流 → 恶意模式扫描 → 日志 → CORS其中限流默认为每 IP 300 次/分钟RATE_LIMIT_RPM见 agent/internal/middleware/ratelimit.go超限返回429并附带Retry-After响应头。 8个Agent端点完整清单端点注册集中在 agent/cmd/agent/main.go 的registerRoutes函数第 20-42 行一览无余#方法与路径用途是否需要认证1GET /api/logs/status健康检查与配置状态❌ 免认证2GET /api/logs/access读取访问日志支持增量✅3GET /api/logs/error读取错误日志✅4GET /api/logs/get?filenamexx按文件名读取指定日志✅5GET /api/logs/streamSSE 实时流式推送访问日志✅6GET /api/system/logs列出日志文件及大小统计✅7GET /api/system/resources系统资源监控CPU/内存等✅8POST /api/notifyDiscord/Telegram 通知代理✅ 两个兼容旧版的别名端点/stream等价于/api/logs/stream/resources等价于/api/system/resources。 curl 实战示例以下示例假设 Agent 运行在localhost:5000默认端口PORT环境变量可改Token 为my-secret-token。一键健康检查GET /api/logs/status这是唯一免认证端点适合写进监控系统探针curl -s http://localhost:5000/api/logs/status | jq返回示例结构见 agent/internal/routes/status_handler.go{ status: ok, access_path: /var/log/traefik/access.log, access_path_exists: true, error_path_exists: true, system_monitoring: true, auth_enabled: true }auth_enabled字段能直接告诉你认证是否开启排障时非常实用。增量读取日志GET /api/logs/access这是最核心的端点实现见 agent/internal/routes/logs_handler.go。三个查询参数参数默认值说明position-2-2 从服务端记录的断点续读-1 跳到文件末尾≥0 指定字节偏移lines1000最多返回行数error 端点默认 100tailfalse为true时始终返回文件末尾日志# 从断点增量读取最近 100 行 curl -s -H Authorization: Bearer my-secret-token \ http://localhost:5000/api/logs/access?lines100 | jq # 直接拉取文件末尾 50 行tail 模式 curl -s -H Authorization: Bearer my-secret-token \ http://localhost:5000/api/logs/access?tailtruelines50 | jq响应体是LogResult结构定义在 agent/pkg/logs/types.gologs数组里每条是解析后的 Traefik 日志对象含DownstreamStatus、Duration、RequestHost等 20 字段positions数组里的position值要存下来下次请求带上它即可实现无重复、无遗漏的增量轮询——这正是前端面板useLogFetcher钩子背后的原理。SSE 实时流GET /api/logs/stream对于高频场景Agent 提供 Server-Sent Events 流式推送客户端上限默认 50 个超出返回503单条流最长 300 秒自动结束curl -N -H Authorization: Bearer my-secret-token \ http://localhost:5000/api/logs/stream事件类型共三种event: log—— 单条日志 JSONevent: cursor—— 携带最新position用于断线重连续传event: end—— 流超时正常结束批量大小、刷新间隔默认 500ms、单批最大 512KB 均可通过TRAEFIK_LOG_DASHBOARD_STREAM_*系列环境变量调节。发送通知POST /api/notify浏览器无法直接跨域调用 Discord/Telegram 的 webhook所以 Agent 提供了一个薄代理agent/internal/routes/notify_handler.gocurl -X POST http://localhost:5000/api/notify \ -H Authorization: Bearer my-secret-token \ -H Content-Type: application/json \ -d { type: discord, url: https://discord.com/api/webhooks/xxx/xxx, title: 流量告警, message: 5xx 比例超过阈值 }type支持discord和telegram两种成功返回{success: true}上游失败则返回502。 常见状态码与排障速查状态码常见原因处理建议401未带 Token / Token 错误检查Authorization: Bearer头与 Agent 的TRAEFIK_LOG_DASHBOARD_AUTH_TOKEN是否一致400/api/logs/get缺少filename参数补全查询参数404路径不存在先调/api/logs/status看*_path_exists字段429触发限流默认 300 次/分钟/IP按Retry-After头退避重试500日志文件不可读检查TRAEFIK_LOG_DASHBOARD_ACCESS_PATH配置与文件权限503SSE 并发客户端数超限减少并发流连接或调大STREAM_MAX_CLIENTS 小结8 个端点分工明确status免认证做探活access/error/get负责增量拉取stream做实时推送notify打通消息通知Bearer 认证配置一个环境变量即可开启且内置常量时间比较防时序攻击增量读取的钥匙是响应里的positions正确回传即可实现高效轮询如果你正在做告警集成或自研面板这套 REST API 已经覆盖了从健康检查到实时流的完整链路配合 agent/README.md 里的环境变量清单即可快速上手。【免费下载链接】traefik-log-dashboardA real-time dashboard for analyzing Traefik logs in UI with IP geolocation, status code analysis, and service metrics. Built with React (Shadcn UI) and Node.js.项目地址: https://gitcode.com/gh_mirrors/tr/traefik-log-dashboard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表