?nèi)罩荆? alt=)
Langflow 如何用 Grafana Loki 采集并查詢(xún)?nèi)罩尽久赓M(fèi)下載鏈接】langflowLangflow is a powerful tool for building and deploying AI-powered agents and workflows.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/la/langflow當(dāng)你希望把 Langflow 的結(jié)構(gòu)化 JSON 日志接入日志平臺(tái)做集中檢索和可視化時(shí)需要完成三件事讓 Langflow 以 JSON 格式把日志寫(xiě)入文件、啟動(dòng) Loki Promtail Grafana 采集棧、在 Grafana 中查詢(xún)和查看日志。Langflow 倉(cāng)庫(kù)自帶一個(gè)可直接運(yùn)行的參考棧位于 deploy/observability/grafana-loki本文按該棧說(shuō)明完整的采集與查詢(xún)流程。前提條件文檔明確要求克隆 Langflow 倉(cāng)庫(kù)以獲取參考 Grafana 棧如果你已有自己的 Grafana 和 Loki 實(shí)例則不需要克隆已安裝 Docker 和 Docker Compose。參考棧提供三個(gè)組件見(jiàn) docker-compose.ymlLoki 3.2 監(jiān)聽(tīng):3100、Promtail 3.2 抓取 Langflow 日志目錄、Grafana 11.3 監(jiān)聽(tīng):3000其中 Loki 數(shù)據(jù)源和Langflow Logs儀表盤(pán)已經(jīng)預(yù)先配置好開(kāi)箱即用。配置 Langflow 的日志環(huán)境變量在 Langflow 應(yīng)用根目錄編輯已有的.env文件或新建一個(gè)加入以下變量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寫(xiě)入 stdout或日志文件的每一行都是包含事件消息、級(jí)別、時(shí)間戳、logger 名、異常結(jié)構(gòu)和服務(wù)元數(shù)據(jù)的 JSON 對(duì)象LANGFLOW_LOG_FILE指向具體日志文件。注意它必須落在 Promtail 監(jiān)控的目錄內(nèi)否則會(huì)查不到日志LANGFLOW_LOG_DIR需要設(shè)為與LANGFLOW_LOG_FILE相同的目錄讓日志文件在 Promtail 監(jiān)控的位置生成。README 強(qiáng)調(diào)兩處必須指向同一目錄否則 Promtail 監(jiān)控的是空目錄儀表盤(pán)會(huì)一直是空白LANGFLOW_SERVICE_NAME、LANGFLOW_VERSION、LANGFLOW_ENVIRONMENT為每條 JSON 日志記錄添加service、version、environment字段供儀表盤(pán)按服務(wù)/環(huán)境/版本維度統(tǒng)計(jì)LANGFLOW_LOG_LEVELINFO全局日志級(jí)別可選DEBUG、INFO、WARNING、ERROR、CRITICAL默認(rèn)ERROR。一個(gè)容易踩的坑Promtail 抓取的是目錄下的*.log文件而不是 stdout且LANGFLOW_LOG_FILE是相對(duì)于 Langflow 的工作目錄解析的所以務(wù)必使用絕對(duì)路徑。更完整的日志變量列表按 logger 覆蓋級(jí)別、額外脫敏鍵、trace 關(guān)聯(lián)等見(jiàn) Logs 文檔。啟動(dòng)參考采集棧進(jìn)入倉(cāng)庫(kù)中的棧目錄并啟動(dòng)export的LANGFLOW_LOG_DIR決定 Promtail 容器掛載哪個(gè)目錄默認(rèn)值是隨棧捆綁的./logscd deploy/observability/grafana-loki export LANGFLOW_LOG_DIR/var/log/langflow docker compose up -dLANGFLOW_LOG_DIR的值要與你.env中LANGFLOW_LOG_FILE所在的目錄保持一致。啟動(dòng)后用.env啟動(dòng) Langflowuv run langflow run --env-file .env然后在 Langflow 里運(yùn)行一個(gè) flow產(chǎn)生真實(shí)的日志流量。不運(yùn)行 Langflow 也能驗(yàn)證鏈路文檔提供了一個(gè)快速冒煙測(cè)試向棧自帶的./logs目錄寫(xiě)入一條示例記錄再直接查 Loki 確認(rèn)鏈路貫通。副作用說(shuō)明echo會(huì)向logs/langflow.log追加一行示例數(shù)據(jù)docker compose up -d會(huì)啟動(dòng) Loki、Promtail、Grafana 三個(gè)容器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 抓取幾秒然后確認(rèn)記錄已到達(dá) 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執(zhí)行成功時(shí)終端輸出OK: log reached Loki說(shuō)明 Promtail 抓取到文件并已推入 Loki。在 Grafana 中查詢(xún)?nèi)罩敬蜷_(kāi)http://localhost:3000默認(rèn)賬號(hào)密碼為admin/admin可用環(huán)境變量GF_ADMIN_USER和GF_ADMIN_PASSWORD覆蓋進(jìn)入DashboardsLangflow Logs或直接訪問(wèn)http://localhost:3000/d/langflow-prod-logs。該儀表盤(pán)已包含以下查詢(xún)面板可用來(lái)核對(duì)采集到的日志是否符合預(yù)期各面板對(duì)應(yīng)的 LogQL 見(jiàn) READMEPII leak count (must be 0)匹配sk-do-not-leak|hunter2|Bearer xyz的日志數(shù)正常應(yīng)為 0Errors with structured tracebacks{joblangflow, level~error|critical} | exception | json查看帶結(jié)構(gòu)化異常棧的錯(cuò)誤Redaction proof{joblangflow} |~ \*\*\*驗(yàn)證 PII 脫敏后***占位符存在Stdlib intercept routing{joblangflow, logger~uvicorn.*|sqlalchemy.*|httpx.*|langchain.*}確認(rèn)第三方庫(kù)的 stdlib 日志也被路由進(jìn)同一個(gè) JSON 流Service / environment / version coverage按service、environment、version三個(gè)維度統(tǒng)計(jì)日志量。如果儀表盤(pán)是空白按文檔說(shuō)明先檢查L(zhǎng)ANGFLOW_LOG_FILE與LANGFLOW_LOG_DIR是否指向同一目錄——Promtail 監(jiān)控空目錄時(shí)儀表盤(pán)不會(huì)顯示任何內(nèi)容。查詢(xún)側(cè)的一個(gè)設(shè)計(jì)約定Promtail 只把level、service、environment、version、logger提升為標(biāo)簽高基數(shù)字段user_id、flow_id、trace_id保留在日志正文中需要用| json在 LogQL 里解析后再查詢(xún)。替代方案與停止棧如果你把 Langflow 跑在容器里可以不用日志文件改為讓 Promtail 抓 stdout把 Promtail 配置中static_configs的文件目標(biāo)替換為docker_sd_configsJSON 結(jié)構(gòu)和標(biāo)簽不變見(jiàn) promtail/config.ymlcompose 文件、Promtail 配置和儀表盤(pán) JSON 都獨(dú)立于deploy/的其余部分可以直接搬到你自己的環(huán)境如果你的技術(shù)棧統(tǒng)一用 Grafana Alloy或日志經(jīng)由 Fluent Bit、Vector、OTLP 傳輸只需替換抓取端儀表盤(pán)和標(biāo)簽體系不變。停止棧并清理數(shù)據(jù)時(shí)副作用-v會(huì)同時(shí)刪除棧的數(shù)據(jù)卷docker compose down -v【免費(fèi)下載鏈接】langflowLangflow is a powerful tool for building and deploying AI-powered agents and workflows.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/la/langflow創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考