Tüm Ürünler
Search
Belge Merkezi

AgentLoop:Dify uygulamasını izlemeye alın

Son Güncelleme:Oct 09, 2026

Bu belgede, Dify uygulamanızı nasıl izlemeye alacağınız gösterilmektedir.

Bileşenlere genel bakış

  1. workflow application (LLM application): Dify görsel arayüzü kullanılarak oluşturulan bir LLM uygulamasıdır; genellikle bir iş akışı veya sohbet robotu olarak bulunur. Uygulamanın mantığını, istemleri, model seçimini, değişken yönetimini, koşullu dallanmayı ve araç çağrılarını tanımlar.

  2. dify-api (execution engine API): Dify'ın temel arka uç hizmetidir. Ön yüz isteklerini alır, verileri yönetir, iş akışı yürütmelerini zamanlar, büyük dil modellerini çağırır, eklenti çağrılarını koordine eder ve sonuçları döndürür.

  3. dify-plugin-daemon (plugin engine): Kullanıcı tanımlı veya resmi eklentileri yalıtılmış bir ortamda güvenli bir şekilde çalıştıran Dify eklenti motorudur.

  4. nginx (ingress gateway): Gelen trafiği dağıtmak için kullanılan Dify giriş ağ geçididir.

Önemli
  • Dify'ı Container Service for Kubernetes (ACK) içindeki ack-dify bileşeni aracılığıyla kullanıyorsanız, Helm grafiğini güncelleyerek tek tıklamayla entegrasyon yapmanızı öneririz. ACK kümenizin Uygulamalar sayfasından ack-dify bileşenini güncelleyebilirsiniz.

Sürüm güncelleme sayfasının parametre yapılandırmasında arms alanını arayın ve enabled değerini true olarak ayarlayın.

Alternatif olarak, ack-dify bileşenini oluştururken ayarları yapılandırarak uygulama izlemeyi etkinleştirebilirsiniz.

YAML düzenleyicinin Parameter Configuration adımında arms.enabled değerini true, appName değerini "dify" ve applicationType değerini "Dify" olarak ayarlayın; ardından oluşturma işlemini tamamlamak için OK seçeneğine tıklayın.

Önkoşullar

  • ack-onepilot 5.1.2 veya üzeri.

  • Python agent 2.2.0 veya üzeri.

Yordam

Adım 1: dify-api bileşenini izlemeye alın

  1. Dify API dağıtımınıza bağlı olarak bir yöntem seçin:

    • (Önerilen) K8s konteynerleri için otomatik izleme: Dify API'nizin Deployment öğesine aşağıdaki etiketleri eklemek için ACK ve ACS için ack-onepilot bileşenini kullanarak Python agent'ı yükleyin bölümündeki talimatları izleyin:

      labels:
        apsara.apm/application-type: Dify
        aliyun.com/app-language: python # Required for Python applications.
        armsPilotAutoEnable: 'on'
        armsPilotCreateAppName: "deployment-name"    # The display name of the application in ARMS.
    • entrypoint.sh başlatma betiğini edinin ve aşağıdaki değişiklikleri yapın:

      1. Çakışan eklentileri kaldırmak ve Python agent'ı yüklemek için betiğin başına aşağıdaki komutları ekleyin.

        python3 -m ensurepip --upgrade# Uninstall conflicting OTel plugins.
        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# Install the Python agent.
        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
      2. Betiğin sonundaki başlatma bölümüne aliyun-instrument komutunu ekleyin.

        # Start with 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
    • Ortam değişkenlerini yapılandırın.


      Parametre








      Değer








      Açıklama








      GEVENT_ENABLE


      true


      Dify, gevent kullanır. Bu değişken true olarak ayarlanmalıdır.


      ARMS_APP_NAME


      dify-api


      Uygulama adı.


      ARMS_REGION_ID


      cn-heyuan


      Bölge kimliğiniz.


      ARMS_LICENSE_KEY


      xxx


      Lisans Anahtarınız.


      APSARA_APM_APP_TYPE


      microservice


      Uygulamayı mikro hizmet olarak tanımlar.

2. dify-api bileşeni için izleme verilerini görüntülemek üzere Uygulama İzleme listesinde dify-api uygulamasını bulun. Application Overview sayfasında aşağıdaki izleme verileri görüntülenir:

  • Özet ölçüm kartları: istekler, hatalar, ortalama gecikme süresi, örnekler ve gün bazında değişimler

  • Zaman serisi grafikleri: İstekler/1dk, Hatalar/1dk ve hata oranı, Gecikme/1dk, CPU kullanımı

  • İlk 5 sıralaması: istek sayısı, hata sayısı, ortalama gecikme süresi

İzleme, yukarı ve aşağı yönlü çağrılarla ilgili bilgileri gösterir.

İzleme ayrıntıları sayfasının üst kısmında TraceID, toplam süre, uygulama sayısı ve span sayısı gösterilir. Orta bölümde, her bir span'in süre dağılımını gösteren bir span zaman çizelgesi Gantt grafiği bulunur. Sol alttaki çağrı ağacı, /console/api ağ geçidi girişinden Dify API uç noktalarına ve veritabanı sorgularına kadar olan tam çağrı yolunu hiyerarşik bir yapıda görüntüler. Sağ taraftaki span ayrıntıları panelinde ise uygulama adı, uç nokta, IP adresi, spanId, parentSpanId ve durum kodu gibi nitelikler gösterilir.

Adım 2: Dify iş akışını izlemeye alın

1.6.0 < dify-api sürümü < 1.11.2

dify-api sürümü <= 1.6.0 veya sürüm >= 1.11.2

Dify iş akışı uygulaması için ek yapılandırma gerekmez. Önceki adımda dify-api bileşenini izlemeye aldıysanız iş akışından gelen izleme verileri otomatik olarak toplanır ve ilişkilendirilir.

dify-api sürümü >= 1.13.0

Dify için OTel'i Yapılandırma bölümüne bakın ve dify-worker bileşeninde gerekli ortam değişkenlerini ayarlayın. OTel uç noktasını edinmek için Önkoşullar bölümüne bakın.

İş akışı izleme verilerini görüntüleme

Uygulama ayrıntıları sayfasında şu sekmeler bulunur: Overview, Performance Analysis, Token Analysis, LLM Operations, Provided Services, Dependent Services, Trace Analysis, Exception Analysis ve Session Analysis. Overview sekmesinde aşağıdaki izleme verileri görüntülenir:

  • Temel ölçüm kartları: Model Calls, Token Usage (gün bazında karşılaştırmalı), Traces, Spans, Sessions ve Users

  • İşlem türü dağılımı pasta grafiği (TASK, TOOL, CHAIN, LLM, RETRIEVER)

  • İstek başına ortalama LLM çağrıları, istek sayısı eğilimi ve oturum sayısı eğilimi için çizgi grafikler

  • Model Call Ranking (Top 5) çubuk grafiği ve Request Count User Ranking (Top 5) tablosu

İzleme ayrıntısı örneği: İzleme ayrıntıları, LLM çağrıları, alma ve araç çağırma gibi düğüm bilgilerini içerir.

İzleme ayrıntıları sayfasında sol tarafta, adım düğümlerini (türler arasında CHAIN, TOOL, TASK, LLM ve RETRIEVER bulunur) ve her biri için bir Gantt grafiği zaman çubuğunu gösteren bir şelale grafiği görüntülenir. Sağ taraftaki panelde, seçili düğümle ilgili uygulama adı, uç nokta, ana bilgisayar adı, spanId, parentSpanId ve durum kodu gibi ayrıntılı bilgiler gösterilir. Alt kısımdaki Additional Information bölümünde, uyarı analizi ve kök neden analizi sonuçları için JSON girişi gibi düğümün giriş ve çıkış mesaj içeriğini görüntüleyebilirsiniz.

Adım 3: dify-plugin-daemon bileşenini izlemeye alın

  1. Dockerfile'ı değiştirin ve ilgili görüntüyü yeniden oluşturun. Aşağıdaki kod, değiştirilmiş bir local.dockerfile örneğini göstermektedir:

    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.VersionX=${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.12 if 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"]
    Not

    INSTGO_EXTRA_RULES seçeneği, eklenti çalışma zamanının otomatik izlenmesini etkinleştirir. Eklenti aracısının plugin-daemon ile birlikte başlatılmasını önlemek için derleme dosyasından INSTGO_EXTRA_RULES="dify_python" ifadesini kaldırın.

  2. Ortam değişkenlerini yapılandırın:

    • ECS ortamları için:


      Parametre


      Değer


      Açıklama


      ARMS_LICENSE_KEY


      xxx@xxx


      Lisans Anahtarınız.


      ARMS_REGION_ID


      cn-heyuan


      Bölge kimliğiniz.


      ARMS_ENABLE


      true


      Ajanı etkinleştirir veya devre dışı bırakır.


      ARMS_APP_NAME


      dify-plugin-daemon


      Uygulama adı.

    • Konteynerleştirilmiş ack-onepilot ortamları için: dify-plugin-daemon uygulamasının YAML yapılandırmasında, spec.template.metadata altına aşağıdaki etiketleri ekleyin.

      labels:
        aliyun.com/app-language: golang
        armsPilotAutoEnable: 'on'
        armsPilotCreateAppName: "dify-daemon-plugin"
  3. dify-plugin-daemon için dağıtımı yapın ve izleme verilerini görüntüleyin. Uygulama listesi sayfasında dify-plugin-daemon uygulamasına gidin. Uygulama genel bakış sayfasında aşağıdaki izleme bilgileri görüntülenir:

    • Ölçüm kartları: Requests, Errors, Average Latency ve Instances; gün bazında ve hafta bazında değişimlerle birlikte

    • Eğilim grafikleri: Requests/1dk çubuk grafiği, Errors/1dk çizgi grafiği, Latency/1dk çizgi grafiği (P99, P90 ve P75 yüzdellikleriyle birlikte) ve Peak CPU Utilization halka grafiği

    • İlk 5 sıralama panelleri: Request Count, Error Count, Average Latency ve Peak CPU Utilization by Instance

    İzleme şelale grafiği, insight-agent-plugin-daemon çağrı zinciri ayrıntılarını gösterir. Temel span'ler şunlardır:

    • GET (python/redis, 1,95 ms)

    • connect (python/sqlalchemy)

    • SELECT dify (sqlalchemy, 34,95 ms)

    • /v1/sandbox/run çok katmanlı çağrılar (POST httpx → SERVER go net_http_server → INTERNAL, yaklaşık 28–30 ms)

    • UPDATE dify (sqlalchemy, 2,38 ms)

    Sağ taraftaki ayrıntılar panelinde, seçili span için ana bilgisayar adı, başlangıç zamanı, bitiş zamanı, spanId, parentSpanId, durum kodu ve bir Nitelikler listesi (örneğin net.protocol.name, component.name ve endpoint) gösterilir.

  4. Eklentiler için izleme verilerini görüntüleyin. Ajanı yükledikten sonra plugin-daemon, eklenti çalışma zamanı için ajanı otomatik olarak başlatır. Her eklenti çalışma zamanı, {plugin_daemon_name}_plugin_{plugin_name}_{plugin_version} biçiminde adlandırılan ayrı bir gözlemlenebilir uygulamaya karşılık gelir. Örneğin, plugin-daemon uygulamanızın adı local-dify-plugin-daemon ise ve tongyi eklentisinin 0.0.53 sürümünü yüklediyseniz local-dify-plugin-daemon_plugin_tongyi_0.0.53 adında bir uygulama otomatik olarak oluşturulur. Eklenti izleme genel bakış sayfasında aşağıdaki bilgiler görüntülenir:

    • Üst sekmeler: Application Overview, Application Topology, Provided Services, Dependent Services, Trace Analysis, Instance Monitoring, Scenario Analysis ve Application Configuration

    • Temel ölçüm kartları: istekler, hatalar, ortalama gecikme süresi ve örnekler (gün bazında ve hafta bazında değişimlerle birlikte)

    • Zaman serisi grafikleri: istek sayısı, hata sayısı, gecikme süresi ve en yüksek CPU kullanımı eğilimleri

    • İlk 5 sıralaması: istek sayısı, hata sayısı ve ortalama gecikme süresi; eklenti uç noktası düzeyindeki çağrıları gösterir (örneğin invoke_llm, get_ai_model_schemas ve invoke_rerank)

(İsteğe Bağlı) Adım 4: Kod alan kutusunu izleyin

Kod alan kutusu, bir iş akışı içinde Python/Node.js kodunu çalıştıran Dify'ın kod yürütme motorudur. Alan kutusunu izlemek için Go ajanını kullanabilirsiniz. Bunun için Dockerfile'ı değiştirin, görüntüyü yeniden oluşturun ve ortam değişkenlerini yapılandırın.

  1. build/build_[amd64|arm64].sh dosyasını değiştirin ve ilgili görüntüyü yeniden oluşturun.

    1. instgo'yu indirmek için komutu ekleyin. Aşağıdaki kod bir örneği göstermektedir. Diğer bölgeler ve mimariler için indirme komutları hakkında bilgi edinmek için instgo'yu indirin bölümüne bakın.

      wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo
      chmod 777 instgo
    2. go build komutundan önce instgo komutunu ekleyin. Aşağıdaki kod, amd64 mimarisi için bir örneği göstermektedir:

      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
      
  2. Ortam değişkenlerini yapılandırın.

    • K8s konteyner dağıtımları için: dify-plugin-daemon uygulamasının YAML yapılandırmasında, spec.template.metadata altına aşağıdaki etiketleri ekleyin.

      labels:
        aliyun.com/app-language: golang
        armsPilotAutoEnable: 'on'
        armsPilotCreateAppName: "dify-daemon-plugin"
      
    • Manuel entegrasyon için:


      Parametre


      Değer


      Açıklama


      ARMS_LICENSE_KEY


      xxx


      Lisans Anahtarınız.


      ARMS_REGION_ID


      cn-heyuan


      Bölge kimliğiniz.


      ARMS_ENABLE


      true


      Ajanı etkinleştirir veya devre dışı bırakır.


      ARMS_APP_NAME


      dify-plugin-daemon


      Uygulama adı.

  3. Alan kutusu için dağıtımı yapın ve izleme verilerini görüntüleyin. Uygulama listesi sayfasında dify-sandbox uygulamasına gidin. Application Overview sekmesinde aşağıdaki özet ölçümler görüntülenir:

    • İstekler: 3.051,00 (%1,60 gün bazında değişim)

    • Hatalar: 0,00 (%0 gün bazında değişim)

    • Ortalama Gecikme Süresi: 47,7 ms (%1,36 gün bazında değişim)

    • Örnekler: 9 (%0 hafta bazında değişim)

    Zaman serisi grafikleri İstekler/1dk, Hatalar/1dk, Gecikme/1dk (P99, P90 ve P75 eğrileriyle birlikte) ve CPU kullanımını gösterir. İlk 5 Sağlanan Hizmetler sıralaması, 3.051 istek, 0 hata ve 47,7 ms ortalama gecikme süresiyle birincil istek yolunu /v1/sandbox/run olarak gösterir.

    ARMS izleme ayrıntıları sayfasında, toplam süresi 8,7 saniye olan, 5 uygulamayı ve 1.039 uç noktayı kapsayan ve algılanan anormallikleri içeren bir izleme gösterilir. Bileşen etiketleri arasında redis (575), sqlalchemy (337), net_http_server (16) ve httpx (14) bulunur. Span şelale grafiği, SELECT dify öğesinden /v1/sandbox/run POST 200 öğesine kadar olan çok katmanlı çağrı zincirini göstererek Dify'ın alan kutusunu çağırmasının tam yolunu açıklar. Span ayrıntıları panelinde insight-agent-sandbox uygulama adı, /v1/sandbox/run uç noktası, sandbox-7489d68cd5-xcqv8 ana bilgisayar adı ve normal bir durum kodu gösterilir. Nitelikler bölümünde net.protocol.name, component.name ve diğer ayrıntılı bilgiler gibi alanlar gösterilir.

(İsteğe Bağlı) Adım 5: Nginx giriş ağ geçidini izleyin

Nginx, Dify'ın giriş ağ geçididir. Nginx yapılandırma sorunları, bilgi tabanı, eklentiler ve iş akışları için zaman aşımlarına ve dosya yükleme hatalarına neden olabilir. Nginx'i izlemek için OpenTelemetry ile Nginx'i İzleyin bölümüne bakın ve verileri bildirmek için OpenTelemetry yöntemini kullanın.

Yapılandırma

Giriş/çıkış içeriği toplama

Varsayılan: True (varsayılan olarak etkindir).

Devre dışı bırakıldığında etkisi: Kullanıcı sorguları için modellerin, araçların ve bilgi tabanının girişi ve çıkışı gibi ayrıntılı alanların yalnızca boyutu toplanır, içerikleri toplanmaz.

Nasıl yapılandırılır: OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=False ortam değişkenini ayarlayın.

LLM uygulamalarını bölme

Varsayılan: False (varsayılan olarak devre dışıdır).

Etkinleştirildiğinde etkisi: Bildirilen veriler LLM alt uygulamalarına bölünür. Dify iş akışı, ajan veya sohbet robotu gibi her bir LLM uygulaması, ARMS'de ayrı bir uygulamaya karşılık gelir.

Nasıl yapılandırılır: PROFILER_GENAI_SPLITAPP_ENABLE=True ortam değişkenini ayarlayın.

Desteklenen bölgeler: Çin (Heyuan), Singapur.

Mesaj içeriği uzunluk sınırı

Varsayılan: 4.000 karakter.

Etkinleştirildiğinde etkisi: input veya output gibi her bir LLM mesajı içerik alanının uzunluğunu sınırlar. Belirtilen uzunluğu aşan mesaj içeriği kısaltılır.

Uygulanabilir eklentiler: Bu ayar şu anda yalnızca Dify ve LangChain tarafından desteklenmektedir.

Nasıl yapılandırılır: Ajan sürümünüz 1.8.3 veya üzeriyse OTEL_INSTRUMENTATION_GENAI_MESSAGE_CONTENT_MAX_LENGTH=<integer_value> ortam değişkenini ayarlayın. <integer_value> ifadesini istediğiniz karakter sınırıyla değiştirin.

Span niteliği değeri uzunluk sınırı

Varsayılan: Sınır yok.

Etkinleştirildiğinde etkisi: gen_ai.agent.description gibi bildirilen span niteliği değerlerinin uzunluğunu sınırlar. Belirtilen uzunluğu aşan nitelik değerleri kısaltılır.

Uygulanabilir eklentiler: Bu yapılandırma, LangChain, DashScope ve Dify gibi OpenTelemetry uyumlu tüm eklentiler için geçerlidir.

Nasıl yapılandırılır: OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT=<integer_value> ortam değişkenini ayarlayın. <integer_value> ifadesini istediğiniz karakter sınırıyla değiştirin.