ARTICLE DETAIL

资讯详情

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

Langflow 如何用 Grafana + Loki 采集并查询日志?

Langflow 如何用 Grafana + Loki 采集并查询日志? Langflow 如何用 Grafana Loki 采集并查询日志【免费下载链接】langflowLangflow is a powerful tool for building and deploying AI-powered agents and workflows.项目地址: https://gitcode.com/GitHub_Trending/la/langflow当你希望把 Langflow 的结构化 JSON 日志接入日志平台做集中检索和可视化时需要完成三件事让 Langflow 以 JSON 格式把日志写入文件、启动 Loki Promtail Grafana 采集栈、在 Grafana 中查询和查看日志。Langflow 仓库自带一个可直接运行的参考栈位于 deploy/observability/grafana-loki本文按该栈说明完整的采集与查询流程。前提条件文档明确要求克隆 Langflow 仓库以获取参考 Grafana 栈如果你已有自己的 Grafana 和 Loki 实例则不需要克隆已安装 Docker 和 Docker Compose。参考栈提供三个组件见 docker-compose.ymlLoki 3.2 监听:3100、Promtail 3.2 抓取 Langflow 日志目录、Grafana 11.3 监听:3000其中 Loki 数据源和Langflow Logs仪表盘已经预先配置好开箱即用。配置 Langflow 的日志环境变量在 Langflow 应用根目录编辑已有的.env文件或新建一个加入以下变量LANGFLOW_LOG_ENVcontainer LANGFLOW_LOG_LEVELINFO LANGFLOW_LOG_FILE/var/log/langflow/langflow.log LANGFLOW_SERVICE_NAMElangflow LANGFLOW_VERSION1.10.0 LANGFLOW_ENVIRONMENTproduction各变量的作用与适用条件LANGFLOW_LOG_ENVcontainer让 structlog 的终端处理器切换到JSONRenderer写入 stdout或日志文件的每一行都是包含事件消息、级别、时间戳、logger 名、异常结构和服务元数据的 JSON 对象LANGFLOW_LOG_FILE指向具体日志文件。注意它必须落在 Promtail 监控的目录内否则会查不到日志LANGFLOW_LOG_DIR需要设为与LANGFLOW_LOG_FILE相同的目录让日志文件在 Promtail 监控的位置生成。README 强调两处必须指向同一目录否则 Promtail 监控的是空目录仪表盘会一直是空白LANGFLOW_SERVICE_NAME、LANGFLOW_VERSION、LANGFLOW_ENVIRONMENT为每条 JSON 日志记录添加service、version、environment字段供仪表盘按服务/环境/版本维度统计LANGFLOW_LOG_LEVELINFO全局日志级别可选DEBUG、INFO、WARNING、ERROR、CRITICAL默认ERROR。一个容易踩的坑Promtail 抓取的是目录下的*.log文件而不是 stdout且LANGFLOW_LOG_FILE是相对于 Langflow 的工作目录解析的所以务必使用绝对路径。更完整的日志变量列表按 logger 覆盖级别、额外脱敏键、trace 关联等见 Logs 文档。启动参考采集栈进入仓库中的栈目录并启动export的LANGFLOW_LOG_DIR决定 Promtail 容器挂载哪个目录默认值是随栈捆绑的./logscd deploy/observability/grafana-loki export LANGFLOW_LOG_DIR/var/log/langflow docker compose up -dLANGFLOW_LOG_DIR的值要与你.env中LANGFLOW_LOG_FILE所在的目录保持一致。启动后用.env启动 Langflowuv run langflow run --env-file .env然后在 Langflow 里运行一个 flow产生真实的日志流量。不运行 Langflow 也能验证链路文档提供了一个快速冒烟测试向栈自带的./logs目录写入一条示例记录再直接查 Loki 确认链路贯通。副作用说明echo会向logs/langflow.log追加一行示例数据docker compose up -d会启动 Loki、Promtail、Grafana 三个容器mkdir -p logs echo {event:smoke test,level:info,logger:langflow.api.run,timestamp:2026-06-01T00:00:00Z,service:langflow,environment:production,version:1.10.0} logs/langflow.log docker compose up -d # 等 Promtail 抓取几秒然后确认记录已到达 Loki sleep 5 curl -sG http://localhost:3100/loki/api/v1/query_range --data-urlencode query{joblangflow} | grep -q smoke test echo OK: log reached Loki执行成功时终端输出OK: log reached Loki说明 Promtail 抓取到文件并已推入 Loki。在 Grafana 中查询日志打开http://localhost:3000默认账号密码为admin/admin可用环境变量GF_ADMIN_USER和GF_ADMIN_PASSWORD覆盖进入DashboardsLangflow Logs或直接访问http://localhost:3000/d/langflow-prod-logs。该仪表盘已包含以下查询面板可用来核对采集到的日志是否符合预期各面板对应的 LogQL 见 READMEPII leak count (must be 0)匹配sk-do-not-leak|hunter2|Bearer xyz的日志数正常应为 0Errors with structured tracebacks{joblangflow, level~error|critical} | exception | json查看带结构化异常栈的错误Redaction proof{joblangflow} |~ \*\*\*验证 PII 脱敏后***占位符存在Stdlib intercept routing{joblangflow, logger~uvicorn.*|sqlalchemy.*|httpx.*|langchain.*}确认第三方库的 stdlib 日志也被路由进同一个 JSON 流Service / environment / version coverage按service、environment、version三个维度统计日志量。如果仪表盘是空白按文档说明先检查LANGFLOW_LOG_FILE与LANGFLOW_LOG_DIR是否指向同一目录——Promtail 监控空目录时仪表盘不会显示任何内容。查询侧的一个设计约定Promtail 只把level、service、environment、version、logger提升为标签高基数字段user_id、flow_id、trace_id保留在日志正文中需要用| json在 LogQL 里解析后再查询。替代方案与停止栈如果你把 Langflow 跑在容器里可以不用日志文件改为让 Promtail 抓 stdout把 Promtail 配置中static_configs的文件目标替换为docker_sd_configsJSON 结构和标签不变见 promtail/config.ymlcompose 文件、Promtail 配置和仪表盘 JSON 都独立于deploy/的其余部分可以直接搬到你自己的环境如果你的技术栈统一用 Grafana Alloy或日志经由 Fluent Bit、Vector、OTLP 传输只需替换抓取端仪表盘和标签体系不变。停止栈并清理数据时副作用-v会同时删除栈的数据卷docker compose down -v【免费下载链接】langflowLangflow is a powerful tool for building and deploying AI-powered agents and workflows.项目地址: https://gitcode.com/GitHub_Trending/la/langflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表