Bu belgede, Dify uygulamanızı nasıl izlemeye alacağınız gösterilmektedir.
Bileşenlere genel bakış
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.
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.
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.
nginx (ingress gateway): Gelen trafiği dağıtmak için kullanılan Dify giriş ağ geçididir.
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
-
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:
-
Ç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 -
Betiğin sonundaki başlatma bölümüne
aliyun-instrumentkomutunu 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şkentrueolarak 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
Tek bir uygulamayı izlemeye almak için Dify uygulaması için gözlemlenebilirliği etkinleştirin bölümüne bakın ve Dify uygulamanız için ayarları yapılandırın.
Birden çok uygulamayı toplu olarak izlemeye almak için Dify LLM uygulama izlemesi için toplu entegrasyon bölümüne bakın.
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
-
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"]NotINSTGO_EXTRA_RULESseç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ındanINSTGO_EXTRA_RULES="dify_python"ifadesini kaldırın. -
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"
-
-
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.nameveendpoint) gösterilir. -
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_schemasveinvoke_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.
-
build/build_[amd64|arm64].sh dosyasını değiştirin ve ilgili görüntüyü yeniden oluşturun.
-
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 -
go buildkomutundan önceinstgokomutunu 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
-
-
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ı.
-
-
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/runolarak 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/runuç noktası,sandbox-7489d68cd5-xcqv8ana bilgisayar adı ve normal bir durum kodu gösterilir. Nitelikler bölümündenet.protocol.name,component.nameve 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.