国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Agentic 時代必備技能:手把手為 Dify 應用構建全鏈路可觀測系統

人工智能
生產級的 Agentic 應用涉及大量動態內容,諸如歷史會話、記憶處理,工具調用、知識庫召回,模型生成,腳本執行和流程控制等環節給 Agentic 應用生成的效果帶來很大不確定性。可觀測性貫穿 Agentic 應用開發調試、運維迭代的全生命周期,并串聯 Agentic 應用執行和上下游系統中的工具、模型和調用方,是支撐 Agentic 應用生產落地的關鍵。

前言

Dify 是時下熱門的低代碼 LLM 應用開發平臺,其豐富的模型支持、Prompt 編排、RAG 引擎、Workflow/Agent 框架以及插件生態大大便利了 Agentic 應用的開發。

生產級的 Agentic 應用涉及大量動態內容,諸如歷史會話、記憶處理,工具調用、知識庫召回,模型生成,腳本執行和流程控制等環節給 Agentic 應用生成的效果帶來很大不確定性。可觀測性貫穿 Agentic 應用開發調試、運維迭代的全生命周期,并串聯 Agentic 應用執行和上下游系統中的工具、模型和調用方,是支撐 Agentic 應用生產落地的關鍵。

圖片圖片

Dify 可觀測的兩個視角丨開發者 & 運維方

對 Dify 這類低代碼平臺的可觀測性需求,有開發者和平臺運維兩個視角。

Agentic 應用開發者使用 Dify SaaS 或自部署的 Dify 服務開發 Workflow 應用,專注于 Workflow 的構建,觀測的主體是 Dify 平臺上運行的一個個 Workflow 應用。關注點在于 Workflow 整體和其中 RAG、Tool、LLM 等各個步驟的執行,開發者依賴可觀測服務監測大模型應用生成效果和性能,追蹤用戶多輪會話的交互體驗。在 Agentic 應用開發構建和上線后的迭代維護階段可觀測能力都是 Agentic 應用持續優化的關鍵。

Dify 平臺運維方關注 Dify 集群中從基礎設施到各個組件的負載和異常情況,管理 Dify 和上下游的服務和依賴,觀測的主體是 Dify 集群及其上下游依賴。Dify 集群包含執行引擎、插件引擎、任務隊列、沙箱環境和存儲服務等十多個組件;同時還涉及調用方、模型服務、工具訪問、外部知識庫等上下游依賴。請求過程的全鏈路可觀測是線上問題追溯,性能瓶頸定位的關鍵工具。

Dify 可觀測現狀 & 痛點

可觀測性一直是 Dify 社區活躍的議題,目前 Dify 原生支持的可觀測能力由三個方面組成。

其一是 Dify 內置的應用監控能力,數據采自 Dify 執行引擎運行過程中生成的執行明細記錄,存儲在 Dify 數據庫內。其特點是和 Dify 自身的集成度最高,在開發調試階段使用非常方便。

圖片圖片

然而內置的應用監控在分析能力和性能兩個方面存在不足。在分析能力上,Workflow 上線后對其觀測數據需要多維度的聚合分析或二次加工,問題排查也需要關鍵字、時間范圍、模糊匹配、錯誤類型等多維度的檢索能力,但 Dify 自帶的監控只能通過會話 ID 和用戶 ID 等有限方式檢索,不能滿足數據分析和問題排查的需要。在性能上,受限于在 DB 中記錄執行日志的數據存儲方式,內置應用監控在大規模應用的生產環境下性能不佳,日志數據加載較慢甚至大量的執行明細數據會拖慢數據庫整體性能,需要在后臺 Celery 任務中配置清理任務周期性清理日志數據。

其二是 Dify 官方集成的第三方應用追蹤服務,包括云監控 / Langfuse 和 LangSmith 等。數據采自 Dify 特有的 OpsTrace 事件機制和 Dify 引擎生成的執行明細記錄,主要采集 Workflow/Agent 層面的大模型、工具、知識庫召回等節點信息。阿里云云監控從 Dify v1.6.0 起也集成了 Dify 官方可觀測能力,提供全托管免運維的可觀測服務。

圖片圖片

第三方集成的追蹤服務痛點在于數據采集粒度受限且缺少全鏈路追蹤能力。Dify 集成的第三方應用追蹤服務主要關注 Agentic 應用開發者視角下的 Wrokflow 執行情況,更多地用于 Prompt 調優、Wrokflow 優化、數據分析等場景,但對于自建 Dify 集群時平臺運維方的集群監控和上下游全鏈路問題排查能提供的幫助就很有限。同時受限于 Dify 的 OpsTrace 機制,能夠采集的數據粒度在 Workflow 節點層面,其他更細粒度的數據支持起來比較困難。

其三是對 Dify 集群自身的可觀測性,面向 Dify 集群各組件及上下游依賴的全鏈路可觀測。目前 Dify 原生支持 Sentry 和 OpenTelemetry 兩套可觀測方式。兩者主要采集 Flask、HTTP、DB、Redis、Celery 等框架層面的數據,對 Dify 自身的內部執行邏輯未做埋點。Sentry 由于相對封閉,目前社區 issue 主要轉向更開放的 OTel 生態。

原生 OTel 方式的痛點在于采集的數據非常有限,無法串聯上下游實現全鏈路追蹤且無法與 Workflow 執行明細數據聯動。原生的 OTel 只支持對 Dify 執行引擎和 Celery 任務組件埋點,采集的信息并不完整,同時由于 Dify 架構復雜且存在部分自定義協議,缺少全鏈路可觀測以及和 Workflow 執行明細數據聯動的能力。

Dify 全景可觀測——挑戰與方案

針對現有可觀測方案的痛點,云監控上線了 Dify 全組件無侵入探針 + Dify 官方集成的應用追蹤服務組合的 Dify 全景可觀測解決方案,滿足 Dify Agentic 應用開發者和 Dify 平臺維護者兩個視角對可觀測性的需要,實現對執行引擎、插件引擎、沙箱環境、插件運行時以及 Workflow 應用的全方位監控。在這一過程中,因 Dify 架構復雜迭代迅速,全景可觀測的實現面臨多項挑戰:

1. Dify 組件眾多,執行鏈路復雜

Dify 請求經過網關入口、執行引擎、插件引擎、代碼沙箱、插件運行時等多個組件,關聯 Celery 后臺任務隊列,插件運行時受插件引擎的私有協議管理,鏈路復雜。

云監控為執行引擎、插件運行提供 Python 探針,通過函數 Patch 實現零代碼改動的無侵入埋點;為插件引擎和代碼沙箱提供 Go 探針,通過編譯時插樁實現無侵入注入;為 Nginx 和 Celery 任務隊列提供 OTel 探針的解決方案;對于生命周期受插件引擎管控的插件運行時,通過代碼插樁改造插件拉起流程,引入探針掛載邏輯。最終對 Dify 集群內的各個組件,只需配置環境變量并修改啟動命令即可實現無侵入注入。

2. Dify 迭代迅速,代碼變動頻繁

Dify 社區已有 1000+ 貢獻者,經常一周甚至數天發布一個版本。Dify 實現的頻繁變動給無侵入探針的實現帶來很大挑戰,純無侵入方式很難跟上 Dify 的發版節奏。

云監控團隊和社區積極合作,對接官方提供的第三方集成方式,對于 Dify 內部易變的 Workflow 執行邏輯采用官方方式上報,由社區維護版本更迭引起的改動。同時在無侵入探針中對 Dify 內部方法做最小依賴,僅處理框架層面的埋點和上下文傳遞過程中的斷鏈問題。

3. Dify 官方集成的監測和 OTel 生態難以串聯

Dify 官方集成的第三方應用監控服務使用 Dify 自定義的 OpsTrace 機制,采用異步后聚合的方式上報追蹤數據,這和標準的 OTel 實現存在較大差異。現有的集成方如 Langfuse 等都無法實現官方的應用追蹤和全鏈路追蹤結合。

云監控采用 OTel 格式上報數據,在 Dify 引擎掛載探針時將 traceId 信息透傳到后臺的 Celery 任務,通過 Trace Link 方式關聯 Dify 官方集成方式上報的 Workflow 執行明細數據和無侵入探針上報的全鏈路追蹤數據,實現全景可觀測。

云監控可觀測集成

接入速覽

圖片

云監控給 Dify 的各個組件都提供了可觀測方案,其中 Workflow 應用無需掛載探針,在 Dify 控制臺上為需要監控的應用開啟追蹤即可。其余組件需要掛載探針實現監控,其中 API 和 Plugin-Daemon 是核心的工作流和插件系統執行引擎,推薦優先掛載。Sandbox、Worker、Nginx 按需可選掛載。

版本要求

Python 探針

使用最新版 Python 探針即可,Dify v1.x 版本都可用,因為只采 HTTP/Flask/Redis/DB 等框架層數據,所以 Python 探針對 Dify 版本無強要求。Dify v1.8.0 以后的版本支持通過 Trace Link 方式串聯 Dify 官方集成上報的 Workflow 執行明細數據。

Go 探針

使用最新版本的 Go 探針即可,Dify v1.x 版本都可用,提供對 dify-plugin-damon 的監控,同時支持對插件生命周期進行監控。

Dify 原生監控

從 Dify v1.6.x 開始集成,更高的版本功能更全,推薦使用較新的版本。更新記錄如下:

圖片圖片

Opentelemetry 插件

推薦首選 Python 探針,阿里云 Python 探針按照 OTel 標準實現,并在探針基座和數據上報上做了增強。Dify 的 Worker、Nginx 可以使用 OTel 方案。Dify 從 v1.3.0 開始支持 OTel 配置,但上報端點存在兼容性問題,從 Dify v1.7.0 以后支持上報到阿里云的云監控2.0/ARMS 后端。

監控 Workflow 應用

使用 Dify 官方集成的云監控可采集 LLM、Tool、RAG 等 Workflow 層面的 Trace 數據,即 Dify 官方集成的監控采集大模型應用數據,一個 Workflow 對應一個大模型應用。

限于 Dify 框架特性,Dify 官方集成的云監控和 Python 探針采集的 Trace 無法直接聯通,但可以通過 Trace Link 方式實現大模型應用和微服務應用的相關關聯,通過 Python 探針和 Dify 原生監控組合實現 API 組件的可觀測。

前提條件

Dify 版本 >= 1.6.0

步驟一:獲取阿里云 Endpoint 和 License Key

方式一)云監控 2.0 且 Dify 版本 >= 1.9.1 的用戶推薦使用云監控 2.0 的上報端點:

1. 登錄云監控 2.0 控制臺,在左側導航欄單擊接入中心。

2. 在應用監控&鏈路追蹤區域單擊 Dify 卡片。

3. 在彈出的接入面板中選擇數據上報地域,點擊獲取 LicenseKey。

4. 記錄生成的 LicenseKey 和 Endpoint。

圖片圖片

方式二)ARMS 用戶或 Dify 版本在 1.6.0~1.9.0 的用戶可以使用 ARMS 的上報端點,數據也會在云監控 2.0 上同步呈現:

1. 登錄 ARMS 控制臺,在左側導航欄單擊接入中心。

2. 在服務端應用區域單擊 OpenTelemetry 卡片。

3. 在彈出的 OpenTelemetry 面板中選擇數據上報地域,上報方式選 gRPC。

4. 記錄生成的 LicenseKey 和 Endpoint,注意 Endpoint 不要帶端口號。

圖片

步驟二:配置應用性能追蹤

1. 登錄 Dify 控制臺,并進入需要監控的 Dify 應用。

2. 在左側導航欄單擊監測。

3. 單擊追蹤應用性能,然后在云監控區域單擊配置。

4. 在彈出的對話框中輸入步驟一獲取的 License Key 和 Endpoint,并自定義 App Name(ARMS 控制臺顯示的應用名稱),然后單擊保存并啟用。

圖片圖片

步驟三:查看 Dify 應用監控數據

配置完畢后在 Dify 控制臺或通過 Dify API 發起幾次請求,稍等 1~2 分鐘即可登錄阿里云控制臺查看上報的數據。

方式一:監控 2.0 用戶在應用中心- AI 應用可觀測處查看

方式二:ARMS 用戶在 LLM 應用監控處查看

應用詳情示例:

圖片圖片

調用鏈詳情示例:

LLM 節點會采集系統/用戶提示詞、模型輸出、模型提供商和型號、token 用量等信息。

圖片圖片

Retriever 節點會采集查詢語句、召回片段、關聯文檔元數據、embbeding 評分等信息。

圖片圖片

Tool 節點會采集工具參數和調用結果、工具提供商和描述等信息。

圖片圖片

其他流程節點也都會采集節點的輸入輸出、會話 ID、用戶 ID 等必要數據。

接入可參考文檔[3][4]。

監控執行引擎 API

API 是 Dify 執行引擎。使用 Python 探針可采集 HTTP/Flask/Redis/DB 等框架層面的 Trace 數據,并關聯上下游調用實現全鏈路追蹤,即 Python 探針采集微服務數據,API 組件對應一個微服務應用。

步驟一:安裝 Python 探針

首先需要卸載沖突的 OTel 插件,下載并安裝 Python 探針。

啟動腳本開頭改動

# 確保pip環境
python -m ensurepip --upgrade


# 卸載沖突的OTel插件
pip3 uninstall -y opentelemetry-instrumentation-celery \
  opentelemetry-instrumentation-flask \
  opentelemetry-instrumentation-redis \
  opentelemetry-instrumentation-requests \
  opentelemetry-instrumentation-logging \
  opentelemetry-instrumentation-wsgi \
  opentelemetry-instrumentation-fastapi \
  opentelemetry-instrumentation-asgi \
  opentelemetry-instrumentation-sqlalchemy


# 安裝Python探針
pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && pip3 config set install.trusted-host mirrors.aliyun.com
pip3 install aliyun-bootstrap && aliyun-bootstrap -a install

提示:

可以通過 Docker 數據卷掛載方式用修改后的啟動腳本替換原腳本(修改源碼并重打鏡像也可以)。即將修改后的腳本作為配置項掛載到容器目錄內,并指定容器從此腳本啟動。例如:

將修改后的腳本 entrypoint.sh 存儲為配置項,并掛載到容器目錄 /app/api/docker。

指定啟動命令:["/bin/bash","/app/api/docker/entrypoint.sh"]

圖片

步驟二:修改啟動命令

在啟動腳本最后的應用啟動部分做修改,從 aliyun-instrument 啟動:

啟動腳本末尾改動

# 使用aliyun-instrument啟動
exec aliyun-instrument gunicorn \
      --bind "${DIFY_BIND_ADDRESS:-0.0.0.0}:${DIFY_PORT:-5001}" \
      --workers ${SERVER_WORKER_AMOUNT:-1} \
      --worker-class ${SERVER_WORKER_CLASS:-gevent} \
      --worker-connections ${SERVER_WORKER_CONNECTIONS:-10} \
      --timeout ${GUNICORN_TIMEOUT:-200} \
      app:app

同理此步驟也可以通過修改鏡像打包過程或通過掛載 K8S 配置項并替換 Dify 啟動腳本的方式實現。

圖片

步驟三:配置環境變量

配置如下環境變量,應用名、地域和 License Key 根據實際情況填寫。

圖片

步驟四:部署并查看 API 監控數據

進入應用監控列表可以看到 dify-api 應用,應用詳情示例:

圖片

調用鏈會串聯上下游調用信息,示例數據:

圖片

可以參考文檔[5],注意如果直接使用 ack-onepilot 自動注入,會存在 Dify 自帶的 OTel SDK 和 Python 探針沖突的問題,還需要手動改啟動腳本卸載沖突的 OTel 依賴。

監控插件引擎 Dify-Plugin-Daemon

Dify-Plugin-Daemon 是 Dify 的插件管理器,Dify 的 LLM、插件、Agent 策略的執行都依賴 Plugin-Daemon。Go Agent[2]支持監控 Dify-Plugin-Daemon,接入 Go 監控需修改Dockerfile、重新編譯鏡像后配置環境變量開啟。Plugin-Daemon 的 Go 探針同時也會自動為插件運行時掛載 Python 探針。

步驟一:修改 Dockerfile 文件重新編譯對應鏡像

local.dockerfile 修改示例

DockerFile

FROM golang:1.23-alpine AS builder


ARG VERSION=unknown
# copy project
COPY . /app
# set working directory
WORKDIR /app
# using goproxy if you have network issues
# ENV GOPROXY=https://goproxy.cn,direct
# download arms instgo
RUN wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo
RUN chmod 777 instgo
# instgo build
RUN INSTGO_EXTRA_RULES="dify_python" ./instgo go build \
    -ldflags "\
    -X 'github.com/langgenius/dify-plugin-daemon/internal/manifest.Versinotallow=${VERSION}' \
    -X 'github.com/langgenius/dify-plugin-daemon/internal/manifest.BuildTimeX=$(date -u +%Y-%m-%dT%H:%M:%S%z)'" \
    -o /app/main cmd/server/main.go
# copy entrypoint.sh
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh
FROM ubuntu:24.04
WORKDIR /app
# check build args
ARG PLATFORM=local
# Install python3.12if PLATFORM is local
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y curl python3.12 python3.12-venv python3.12-dev python3-pip ffmpeg build-essential \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1;
# preload tiktoken
ENV TIKTOKEN_CACHE_DIR=/app/.tiktoken
# Install dify_plugin to speedup the environment setup, test uv and preload tiktoken
RUN mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.12/EXTERNALLY-MANAGED.bk \
    && python3 -m pip install uv \
    && uv pip install --system dify_plugin \
    && python3 -c "from uv._find_uv import find_uv_bin;print(find_uv_bin());" \
    && python3 -c "import tiktoken; encodings = ['o200k_base', 'cl100k_base', 'p50k_base', 'r50k_base', 'p50k_edit', 'gpt2']; [tiktoken.get_encoding(encoding).special_tokens_set for encoding in encodings]"
ENV UV_PATH=/usr/local/bin/uv
ENV PLATFORM=$PLATFORM
ENV GIN_MODE=release
COPY --from=builder /app/main /app/entrypoint.sh /app/
# run the server, using sh as the entrypoint to avoid process being the root process
# and using bash to recycle resources
CMD ["/bin/bash", "-c", "/app/entrypoint.sh"]

注意 INSTGO_EXTRA_RULES 選項會開啟 Plugin 運行時自動監測功能,如果不需要在 Plugin-Daemon 啟動時拉起對 Plugin 探針,可以去除編譯文件中的INSTGO_EXTRA_RULES="dify_python"。

步驟二:配置環境變量

方式一)ECS 環境

圖片

方式二)容器化 ack-onepilot 環境

在 dify-plugin-daemon 應用的 YAML 配置中將以下 labels 添加到 spec.template.metadata 層級下。

labels:
  aliyun.com/app-language: golang
  armsPilotAutoEnable: 'on'
  armsPilotCreateAppName: "dify-daemon-plugin"
步驟三:部署并查看 dify-plugin-daemon 監控

在應用列表頁面進入 dify-plugin-daemon 應用,監控詳情如下:

圖片

調用鏈詳情:

圖片

步驟四:查看 Plugin 監控

掛載探針后,Plugin-Daemon 會自動拉起插件運行時的探針。每個插件運行時對應一個可觀測應用,應用名為 {plugin_daemon_name}_plugin_{plugin_name}_{plugin_version}。例如,Plugin-Daemon 配置的應用名為 local-dify-plugin-daemon,安裝了 tongyi 的 version 0.0.53 插件時,會自動生成應用 local-dify-plugin-daemon_plugin_tongyi_0.0.53。

插件監控概覽頁示例:

圖片

(可選) 監控代碼沙箱 Sandbox

Sandbox 是 Dify 代碼沙箱引擎,負責執行 Workflow 中的 Python/Node.js 代碼。Go 探針支持監控 Sandbox,需修改 Dockerfile、重新編譯鏡像后配置環境變量開啟。

步驟一:修改 Dockerfile 文件重新編譯對應鏡像

修改 ./build/build_[amd64|arm64].sh 文件。

a. 添加 instgo 下載命令。

下載命令示例如下,其他地域和架構的下載命令請參見下載 instgo。

(https://help.aliyun.com/zh/arms/application-monitoring/developer-reference/instgo-tool-introduction#9b94bbe8a62ra)

wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo
chmod 777 instgo

b. 在 go build 前添加 instgo 命令。

以 amd64 為例,修改示例如下:

rm -f internal/core/runner/python/python.so
rm -f internal/core/runner/nodejs/nodejs.so
rm -f /tmp/sandbox-python/python.so
rm -f /tmp/sandbox-nodejs/nodejs.so
wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo
chmod 777 instgo
echo "Building Python lib"
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 ./instgo go build -o internal/core/runner/python/python.so -buildmode=c-shared -ldflags="-s -w" cmd/lib/python/main.go &&
echo "Building Nodejs lib" &&
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 ./instgo go build -o internal/core/runner/nodejs/nodejs.so -buildmode=c-shared -ldflags="-s -w" cmd/lib/nodejs/main.go &&
echo "Building main" &&
GOOS=linux GOARCH=amd64 ./instgo go build -o main -ldflags="-s -w" cmd/server/main.go
echo "Building env"
GOOS=linux GOARCH=amd64 ./instgo go build -o env -ldflags="-s -w" cmd/dependencies/init.go
步驟二:配置環境變量

方式一)無 ack-onepilot 環境

圖片

方式二)容器化 ack-onepilot 環境

在 dify-plugin-daemon 應用的 YAML 配置中將以下 labels 添加到 spec.template.metadata 層級下。

labels:
  aliyun.com/app-language: golang
  armsPilotAutoEnable: 'on'
  armsPilotCreateAppName: "dify-daemon-plugin"

步驟三:部署并查看 sandbox 監控

在應用列表頁面進入 dify-sandbox 應用,監控詳情如下:

圖片

調用鏈詳情:

圖片

參考文檔:

監控 Go 應用

https://help.aliyun.com/zh/arms/application-monitoring/user-guide/monitoring-the-golang-applications/

https://help.aliyun.com/zh/arms/application-monitoring/user-guide/connect-a-dify-application-to-arms-application-monitoring(步驟五)

(可選) 監控任務隊列 Worker

Worker 是 Dify 后臺任務組件,知識庫構建和周期性清理任務依賴 Worker 執行。按普通 Python Celery 應用方式接入即可。這里給出使用 Dify 內置的 OTel 插件上報數據的示例:

步驟一:修改 Worker 環境變量

OTel 插件是 Dify 內置功能,直接修改環境變量即可。注意要求 Dify 1.7.0 以上版本。

圖片

步驟二:部署并查看 Worker 監控

進入應用監控/ OpenTelemetry 監控頁面查看上報的數據。

Worker 執行的后臺任務 Trace 詳情示例:

圖片

(可選) 監控入口網關 Nginx

Nginx 是 Dify 的入口網關,一些超時問題和知識庫/插件/Workflow 的文件上傳問題可能和 Nginx 配置有關。

直接使用 Opentelemetry 方式上報即可,推薦使用預構建的 Nginx-OTel 鏡像方式。

步驟一:下載預構建 Docker 鏡像

前往 Docker 官網,搜索并拉取帶有 -otel 后綴的 Nginx 鏡像(如 nginx:1.29.0-otel),通過標準容器啟動流程部署服務。

步驟二:獲取 gRPC 接入點和鑒權 Token 信息

登錄可觀測鏈路 OpenTelemetry 版控制臺,在接入中心選取 OpenTelemetry 卡片,選擇 gRPC 協議上報數據。

記錄接入點和鑒權 Token 備用。

在開源框架區域單擊,在彈出的 OpenTelemetry 面板中選擇數據需要上報的地域。

步驟三:啟用 Nginx OTel 模塊

修改 Nginx 配置文件 nginx.conf.template:

Nginx 配置文件

load_module modules/ngx_otel_module.so; # 加載 ngx_otel_module
...
http {
    ...


    otel_exporter {
        endpoint "${GRPC_ENDPOINT}"; # 前提條件中獲取的 gRPC 接入點
        header Authentication "${GRPC_TOKEN}"; # 前提條件中獲取的鑒權 Token
    }


    otel_trace on;                     # 開啟鏈路追蹤
    otel_service_name ${SERVICE_NAME};  # 應用名
    otel_trace_context propagate;         # 向下游服務注入Trace上下文
    ...
}

圖片圖片

可參考文檔[6]接入 Nginx 監控。

實踐指南

關聯 LLM Trace 和微服務 Trace:

Dify 的 Workflow 執行數據通過官方集成方式上報 Trace,而 Dify-api、Dify-Worker、Dify-Plugin-Daemon 等基礎設施通過無侵入探針按 OTel 標準上報 Trace。這兩套割裂的體系無法直接融合,阿里云提供了 Trace Link 能力,將應用層和基礎設施層的兩條 Trace 串聯。

從 LLM Trace 跳轉微服務 Trace:

進入一條 LLM Trace 的詳情,可以看到完整的 Workflow 執行數據,但如何找到基礎設施組件的 span 和上下游串聯數據?

圖片

選中一個 span,在 span 右側的附加信息面板選擇 Links 標簽頁,可以看到和此 LLM Trace 相關聯的基礎設施 Trace 的信息。

圖片

點擊“查詢關聯的調用鏈”,可以直接跳轉到關聯的基礎設施 Trace:

圖片

從 微服務 Trace 跳轉 LLM Trace:

在基礎設施的微服務 Trace 上,可以看到 nginx、dify-api、dify-plugin-daemon、dify-sandbox 等各個組件的 Trace 數據,是否可以將它關聯到 Dify 官方集成的 Trace 數據上?

圖片

點擊調用鏈上方的篩選功能,用 span 名稱篩選,找到名稱為 AdvancedChatAppRunner.run 或 WorkflowAppRunner.run 的 span。(取決于 Dify Workflow 的類型,如果調用了子 Workflow 可能會有多個這樣的 span)。

如果對應的 Workflow 開啟了云監控追蹤,在 span 附加信息的 Links 頁簽可以看到關聯的 LLM Trace Id,點擊“查詢關聯的調用鏈”可跳轉到相應 LLM Trace。

圖片

分析執行引擎異常根因

工作流層面的異常通常在 LLM Trace 或 Dify 日志追蹤里可以看到直觀的報錯信息,但還有一類錯誤是底層 Dify 引擎的配置不當或內部 bug 引起的。無侵入探針提供了對這類錯誤的定位分析能力。

如圖的示例場景,在 Dify Workflow 的某次執行中發現知識檢索的輸出總是為空,但是 Dify 控制臺上又沒有報錯信息:

圖片圖片

此時,可以根據 Dify 對話 ID、用戶 ID 等信息在云監控上定位對應的 LLM Trace:

圖片

進入會話詳情,找到對應 Trace 和相關 Span,首先嘗試在 Span 詳情中查找相關信息:

圖片

這個 Case 的問題不在 Wrokflow 層面,所以只能觀察到輸出異常,要定位具體原因,可以通過上一節介紹的 Links 功能,跳轉到對應的 Dify infra 層 Trace:

圖片

可以觀察到 Trace 上存在部分錯誤 Span,通過快捷篩選直接定位錯誤 Span:

圖片

在錯誤 Span 的 Details 和 Events 中,可以看到錯誤信息和異常堆棧。并定位到根因是 Weaviate 向量存儲配置引起的問題。

圖片

定位插件慢調用

Dify 社區提供了豐富的插件生態,但管理插件的 Dify-Plugin-Daemon 和插件運行時卻是難以定位故障的黑盒。在 Dify 控制臺上能清晰地看到各個工作流節點的運行記錄,但對于流程節點之下 Dify infra 設施的故障卻無從分析。一次 Workflow 調用鏈路涉及 Nginx、API、Plugin-Daemon、Plugin 運行時和模型網關等多個組件,阿里云云監控提供的全鏈路追蹤能力可以串聯上下游的完整鏈路,定位插件內的錯慢異常。

如圖示例中“查詢 SLS 日志”是一個 Dify 插件,正常調用只需 200 ms,但在這個 Trace 中卻有 5s 多的慢調用。僅看 LLM Trace 或 Dify 執行日志,無法判斷慢請求是因為 Dify-Api 引擎、Dify-Plugin-Daemon 插件引擎、Dify-Plugin 運行時或者 SLS 日志服務本身導致的。

圖片

通過 Links 找到關聯的 Infra 層調用,可以看到 Trace 詳情:

圖片

Dify 引擎會做大量 DB 和 Redis 訪問,排查非 DB/Redis 類問題時,可以在組件標簽處點選并濾去 sqlalchemy 和 redis 組件的 Span 以便排查。

圖片

可以看到 dify 執行引擎(local-dify-api)發起了對 dify 插件引擎(local-dify-plugin-daemon)的 POST 調用,插件引擎調用插件運行時(local-dify-plugin-daemon_plugin_cms_0.0.1)并轉發請求給 SLS 服務端口。整個鏈路上耗時最長的是 dify_plugin_execute,這是插件運行時內部的入口方法,我們正是在此處注入了故障模擬的慢調用。

歡迎大家加入我們的釘釘群,共同構建更好的 Dify 全鏈路監控能力。

  • LoongSuite Python 開源交流群:101925034286
  • LoongSuite Go Agent 開源交流群:102565007776
  • ARMS 多語言應用監控產品交流群:159215000379

參考:

[1] 獲取 LicenseKeyhttps://help.aliyun.com/zh/arms/application-monitoring/developer-reference/api-arms-2019-08-08-describetracelicensekey-apps

[2] ARMS 應用監控支持的 Go 組件和框架

https://help.aliyun.com/zh/arms/application-monitoring/developer-reference/go-components-and-frameworks-supported-by-arms-application-monitoring

[3] Dify 官方監控接入

https://help.aliyun.com/zh/arms/tracing-analysis/untitled-document-1750672984680

[4] 集成阿里云云監控

https://docs.dify.ai/zh-hans/guides/monitoring/integrate-external-ops-tools/integrate-aliyun

[5] Dify Python 探針接入

https://help.aliyun.com/zh/cms/cloudmonitor-2-0/user-guide/monitor-dify-applications

[6] 使用 OpenTelemetry 對 Nginx 進行鏈路追蹤

https://help.aliyun.com/zh/opentelemetry/user-guide/use-opentelemetry-to-perform-tracing-analysis-on-nginx

責任編輯:武曉燕 來源: 阿里云云原生
相關推薦

2022-11-18 16:02:11

博睿數據可觀測性APM

2025-06-12 10:27:02

2022-06-07 13:48:25

可觀測性架構系統開發

2022-02-18 14:07:48

移動開發技術

2023-07-07 07:27:14

全鏈路虎牙APM

2012-01-11 13:40:35

移動應用云服務

2010-09-16 14:08:13

無線雙網

2022-01-04 17:08:02

全鏈路觀測平臺

2021-12-28 08:38:26

Linux 中斷喚醒系統Linux 系統

2025-05-26 00:00:00

DifyAI 應用工具

2021-06-23 07:16:06

buildroot Linux內核根文件系統

2022-01-08 20:04:20

攔截系統調用

2025-10-11 01:00:00

2024-01-26 08:16:48

Exporter開源cprobe

2022-11-26 09:49:07

分布式鏈路追蹤技術

2023-07-04 07:37:20

AzureOpenAI操作手冊

2025-09-02 01:40:00

2021-05-24 15:48:38

高德打車系統可觀測性

2025-05-07 00:31:30

點贊
收藏

51CTO技術棧公眾號

国产在线一区二区| 一区视频网站| 国产在线一区二| 日韩欧美中文在线| 91九色精品国产一区二区| 天堂a√中文在线| caoporen国产精品| 欧美日韩在线免费视频| 日韩午夜高潮| 国产三区在线观看| 三区精品视频观看| 亚洲人精选亚洲人成在线| 风间由美一区二区三区在线观看| 制服诱惑亚洲| 欧美三级午夜理伦三级| 91po在线观看91精品国产性色| 亚洲女同ⅹxx女同tv| 久久国产亚洲| 黄色免费在线看| 中文字幕免费高| 亚洲欧美精品伊人久久| 成人午夜av在线| 日韩激情欧美| 一级特黄特色的免费大片| 亚洲qvod图片区电影| 欧美一区二区三区在线看| 国产麻豆成人传媒免费观看| 日本99精品| 黄页网址大全在线播放| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 亚洲伊人久久大香线蕉av| 欧美夫妻性生活| 国产精品一区免费视频| 成人影院网站ww555久久精品| 成人网18入口| 激情伦成人综合小说| 亚洲人成在线一二| 亚洲少妇屁股交4| 国产精品普通话对白| 日本黄色一区| 天堂在线视频| 视频一区二区综合| 欧美日韩成人在线播放| 岛国精品视频在线播放| 日本欧美在线看| 一区二区三区在线免费看| 污视频在线看操| 欧美日韩亚洲国产成人| 韩国19禁主播vip福利视频| 精品视频在线免费| 久久亚洲一级片| 欧美激情视频一区二区三区在线播放 | 五月天婷婷在线视频| 潘金莲一级淫片aaaaa免费看| 91精品国产91久久| 欧美蜜桃一区二区三区| 久久九九久久九九| 亚洲日韩成人| 黑色丝袜福利片av久久| 人人澡人人添人人爽一区二区| 一道本在线免费视频| 日产精品高清视频免费| 人人澡人人澡人人看欧美| 亚洲国产精久久久久久| 亚洲国产一二三| 国产suv精品一区二区6| 自产国语精品视频| 麻豆精品一区| 日本乱理伦在线| 日本按摩中出| 蜜臀av无码一区二区三区| 国产99在线播放| 午夜精品一区二区三区av| 亚洲大胆人体在线| 欧美日韩亚洲精品内裤| 久久久亚洲高清| 青草国产精品久久久久久| 久久看人人摘| 97久久综合区小说区图片区| av激情在线| 一本到av在线| 国产黄色一级网站| 欧美极品一区二区| 国产精品欧美日韩久久| 久久天天躁狠狠躁夜夜躁| 日韩免费高清视频| 欧美日韩国产页| 国产蜜臀av在线一区二区三区| 麻豆91在线观看| 7777久久香蕉成人影院| 欧洲精品99毛片免费高清观看| 成人免费观看在线观看| 福利视频在线导航| 导航福利在线| 波多结衣在线观看| www.avtt| 日韩欧美亚洲在线| 91九色露脸| 国产精品扒开腿爽爽爽视频 | 久久综合久久综合九色| 免费一区二区视频| 欧美午夜久久| 夜夜春成人影院| 免费精品一区| 春暖花开亚洲一区二区三区| 毛片网站在线免费观看| 天堂影院在线| 成人福利免费网站| 国产又大又黄又猛| 久久精品无码中文字幕| 先锋在线资源一区二区三区| 国产日韩亚洲精品| 成人黄色中文字幕| 日韩av免费在线| 午夜精品久久久久久久99热| 久久久久999| 最新亚洲国产精品| 亚洲精品综合久久中文字幕| 日韩精品一区二区三区视频播放| 欧美专区日韩专区| 岛国av一区二区在线在线观看| 成人免费一区二区三区在线观看| 久久奇米777| av午夜精品一区二区三区| 国产一区二区视频在线播放| 久久狠狠亚洲综合| 青草国产精品久久久久久| 狂野欧美性猛交xxxx巴西| 亚洲午夜在线| 亚洲特级毛片| 亚洲精品乱码| 亚洲欧洲另类| 亚洲精品一级| 国产视频一区在线观看一区免费| 激情欧美日韩一区| 在线成人h网| 欧美亚洲一区二区三区| 久久福利一区| 蜜臀av在线播放一区二区三区| 日本免费新一区视频| 麻豆91在线观看| 国产精品正在播放| 99久久久免费精品国产一区二区| 99久久99久久精品免费观看| 99re热这里只有精品免费视频| 91视频一区二区三区| 国产午夜精品在线观看| 国产精品乱码一区二三区小蝌蚪| 亚洲视频你懂的| 黄色成人在线播放| 欧美视频三区在线播放| 91精品国产综合久久精品麻豆| 精品免费日韩av| 亚洲男人天堂2024| 久久久国产精品亚洲一区| 欧美成人午夜免费视在线看片| 国语自产偷拍精品视频偷| 国产97在线|日韩| 91高跟黑色丝袜呻吟在线观看| 久久av免费一区| 亚洲成年人专区| 四虎永久在线精品无码视频| 疯狂做受xxxⅹ高潮视频免费| 日本视频三区| 黄色av网址在线免费观看| 中文字幕在线播放网址| 日日av拍夜夜添久久免费| 国语精品视频| 日本久久综合| 一区二区日本视频| 国产乱码一区二区三区| 国产亚洲一本大道中文在线| 亚洲一区二区精品久久av| 欧美中文一区二区三区| 亚洲国产天堂久久综合| 久久中文精品视频| 国产精品直播网红| 日韩欧美手机在线| 欧美精品一区二区三区三州| qvod激情图片| 麻豆传媒视频在线观看| 毛片无码国产| 日韩成人动漫在线观看| 99精品在线观看| 免费观看日韩av| 国产精品热久久久久夜色精品三区| 黑人巨大精品欧美一区免费视频| 精品国产免费视频| 欧美国产第一页| wwwxx欧美| 丁香六月激情婷婷| 国产视频一二三| www.久久久久.com| 激情不卡一区二区三区视频在线| 99成人在线视频| 国产真实乱子伦精品视频| 亚洲乱码国产乱码精品精的特点| 欧美一区二区视频网站| 欧美激情亚洲视频| 国产不卡一区二区在线观看|