Layanan Pemantauan Aplikasi Waktu Nyata (ARMS) memungkinkan Anda memantau aplikasi Dify menggunakan agen Python. Agen Python yang dikembangkan oleh Alibaba Cloud merupakan agen pengumpulan data untuk Python yang menyediakan instrumentasi otomatis berdasarkan standar OpenTelemetry.
Langkah 1: Terapkan aplikasi Dify di kluster kontainer
Buat aplikasi Dify dengan mengikuti petunjuk dalam Buat asisten AI tanya-jawab kustom menggunakan Dify.
Di kluster Container Service for Kubernetes (ACK) tempat aplikasi Dify dijalankan, instal asisten instalasi agen (ack-onepilot), berikan izin akses ke sumber daya ARMS, dan aktifkan Pemantauan Aplikasi. Untuk informasi selengkapnya, lihat Instal agen Python untuk Container Service for Kubernetes (ACK) dan Container Compute Service (ACS) menggunakan komponen ack-onepilot.
Langkah 2: Buat item konfigurasi dify-bootstrap
Buat skrip startup Dify yang mengunduh dan menginstal agen, lalu menjalankan aplikasi Dify.
Ambil skrip dify asli dan lakukan modifikasi berikut:
Tambahkan perintah unduh dan instalasi agen di awal skrip.
python3 -m ensurepip --upgrade 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 installPada bagian startup di akhir skrip, tambahkan perintah startup
aliyun-instrument.
Tambahkan item konfigurasi di konsol ACK.
Masuk ke Konsol Container Service for Kubernetes. Di halaman Daftar Kluster, klik nama kluster target.
Pada panel navigasi di sebelah kiri, pilih . Di namespace dify-system, klik Buat.
Nama Item Konfigurasi: dify-bootstrap (contoh)
Nama: entrypoint.sh
Value: Skrip Dify yang Anda buat pada langkah sebelumnya.
Klik OK untuk menyimpan item konfigurasi.
Langkah 3: Edit ack-dify-api
Di halaman kluster target, arahkan ke namespace dify-system. Temukan ack-dify-api dan klik Edit di kolom Tindakan.

Pada bagian Environment Variables, klik Add dan tambahkan variabel berikut.
Type
Variable Name
Variable
Description
Custom
GEVENT_ENABLE
true
Diperlukan.
Custom
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT
true
Mengumpulkan konten input/output.
Nilai default: true. Pengumpulan diaktifkan secara default.
Jika dinonaktifkan, ketika pengguna mengirim kueri, agen hanya mengumpulkan ukuran bidang seperti input dan output untuk model, alat, dan basis pengetahuan, tetapi tidak mengumpulkan konten bidang tersebut.
Custom
PROFILER_GENAI_SPLITAPP_ENABLE
false
Memisahkan aplikasi model besar.
Nilai default: false. Aplikasi tidak dipisahkan secara default.
Jika diaktifkan, data yang dilaporkan akan dibagi menjadi sub-aplikasi Large Language Model (LLM). Setiap aplikasi model besar, seperti Dify Workflow, Agent, atau Chat App, akan sesuai dengan aplikasi ARMS terpisah.
Custom
OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT
<integer_value>Membatasi panjang konten yang dikumpulkan. Ganti
<integer_value>dengan bilangan bulat yang menentukan panjang maksimum karakter.Nilai default: Tidak diatur. Tidak ada batasan secara default.
Jika diaktifkan, panjang nilai atribut Span yang dilaporkan akan dibatasi. Nilai atribut yang melebihi panjang karakter yang ditentukan akan dipotong.
Di bagian Siklus Hidup, masukkan
["/bin/bash","/app/api/docker/entrypoint.sh"]sebagai Perintah Startup.
Pada bagian Volumes, klik Add Local Storage.
Jenis Volume: Item Konfigurasi
Nama Item Konfigurasi: bootstrap
Sumber Mount: dify-bootstrap
Jalur Kontainer: /app/api/docker

Di pojok kanan atas, klik Update untuk menyimpan konfigurasi.
Setelah agen diinstal, Anda dapat melihat data pemantauan di halaman di Konsol ARMS. Untuk informasi selengkapnya, lihat Melihat data pemantauan.
PentingPastikan aplikasi Dify sedang menghasilkan data.
Langkah 4: Pantau dify-plugin-daemon
Dify-Plugin-Daemon adalah manajer plugin untuk Dify yang bertanggung jawab menjalankan model bahasa besar (LLM), plugin, dan kebijakan Agent Dify. Anda dapat menggunakan Go Agent untuk memantau Dify-Plugin-Daemon. Untuk mengaktifkan pemantauan Go, Anda harus memodifikasi Dockerfile, mengompilasi ulang citra, dan mengonfigurasi variabel lingkungan. Agen Go untuk Dify-Plugin-Daemon juga dapat memasang agen Python untuk waktu proses plugin jika diperlukan. Untuk menghubungkan agen, lakukan langkah-langkah berikut:
Modifikasi Dockerfile dan kompilasi ulang citra yang sesuai.
Sebagai contoh, lakukan modifikasi berikut pada local.dockerfile:
Jangan pantau plugin Python
Jika Anda tidak perlu memantau plugin Python, modifikasi Dockerfile sebagai berikut:
FROM golang:1.23-alpine AS builder ARG VERSION=unknown # Salin proyek. COPY . /app # Tetapkan direktori kerja. WORKDIR /app # Gunakan goproxy jika Anda mengalami masalah jaringan. # ENV GOPROXY=https://goproxy.cn,direct # Unduh ARMS instgo. RUN wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo RUN chmod 777 instgo # Bangun dengan instgo. RUN ./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 # Salin entrypoint.sh. COPY entrypoint.sh /app/entrypoint.sh RUN chmod +x /app/entrypoint.sh FROM ubuntu:24.04 WORKDIR /app # Periksa argumen build. ARG PLATFORM=local # Instal Python 3.12 jika PLATFORM diatur ke 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; # Pra-muat tiktoken. ENV TIKTOKEN_CACHE_DIR=/app/.tiktoken # Instal dify_plugin untuk mempercepat penyiapan lingkungan, uji uv, dan pra-muat 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/ # Jalankan server. Gunakan sh sebagai entrypoint untuk mencegah proses menjadi proses root. # Gunakan bash untuk mendaur ulang sumber daya. CMD ["/bin/bash", "-c", "/app/entrypoint.sh"]Pantau plugin Python
Untuk memantau plugin Python, modifikasi Dockerfile sebagai berikut:
FROM golang:1.23-alpine AS builder ARG VERSION=unknown # Salin proyek. COPY . /app # Tetapkan direktori kerja. WORKDIR /app # Gunakan goproxy jika Anda mengalami masalah jaringan. # ENV GOPROXY=https://goproxy.cn,direct # Unduh ARMS instgo. RUN wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo RUN chmod 777 instgo # Bangun dengan instgo. 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 # Salin entrypoint.sh. COPY entrypoint.sh /app/entrypoint.sh RUN chmod +x /app/entrypoint.sh FROM ubuntu:24.04 WORKDIR /app # Periksa argumen build. ARG PLATFORM=local # Instal Python 3.12 jika PLATFORM diatur ke 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; # Pra-muat tiktoken. ENV TIKTOKEN_CACHE_DIR=/app/.tiktoken # Instal dify_plugin untuk mempercepat penyiapan lingkungan, uji uv, dan pra-muat 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/ # Jalankan server. Gunakan sh sebagai entrypoint untuk mencegah proses menjadi proses root. # Gunakan bash untuk mendaur ulang sumber daya. CMD ["/bin/bash", "-c", "/app/entrypoint.sh"]Terapkan aplikasi dify-plugin-daemon dan laporkan data pemantauan.
Penerapan berbasis kontainer
Dalam file YAML untuk aplikasi dify-plugin-daemon, tambahkan
labelberikut di bawah path spec.template.metadata.labels: aliyun.com/app-language: golang armsPilotAutoEnable: 'on' armsPilotCreateAppName: "dify-daemon-plugin"Penerapan non-kontainer
Saat menerapkan komponen, tambahkan variabel lingkungan berikut.
ARMS_LICENSE_KEY: xxx // LicenseKey ARMS untuk akun Anda ARMS_REGION_ID: cn-heyuan // ID wilayah ARMS_ENABLE: true ARMS_APP_NAME: dify-plugin-daemonDapatkan LicenseKey dengan memanggil operasi OpenAPI DescribeTraceLicenseKey.

Lihat data pemantauan dify-plugin-daemon.
Di halaman Daftar Aplikasi, arahkan ke aplikasi dify-plugin-daemon. Detail pemantauan ditampilkan sebagai berikut:

Detail jejak:

(Opsional) Langkah 5: Pantau dify-sandbox
Versi Dify 1.0.0 dan yang lebih baru memperkenalkan dify-sandbox untuk mengelola siklus hidup plugin dan panggilan tugas latar belakang. Untuk memantau komponen ini, lakukan langkah-langkah berikut:
Modifikasi file ./build/build_[amd64|arm64].sh.
Tambahkan perintah unduh instgo ke file tersebut.
Berikut adalah contoh perintah unduh. Untuk perintah unduh wilayah dan arsitektur lainnya, lihat Unduh instgo.
wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo chmod 777 instgoTambahkan perintah
instgosebelum perintahgo build.
Berikut adalah contoh skrip yang telah dimodifikasi untuk 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.goKompilasi citra.
Sebagai contoh, untuk amd64:
docker build -t sandbox:0.2.9 -f docker/amd64/dockerfile .Terapkan aplikasi dify-sandbox dan laporkan data pemantauan.
Penerapan berbasis kontainer
Dalam file YAML untuk aplikasi dify-sandbox, tambahkan
labelberikut di bawah path spec.template.metadata.labels: aliyun.com/app-language: golang armsPilotAutoEnable: 'on' armsPilotCreateAppName: "dify-sandbox"Penerapan non-kontainer
Saat Anda menerapkan komponen, tambahkan variabel lingkungan berikut.
ARMS_LICENSE_KEY: xxx // LicenseKey ARMS untuk akun Anda ARMS_REGION_ID: cn-heyuan // ID wilayah ARMS_ENABLE: true ARMS_APP_NAME: dify-sandboxDapatkan LicenseKey dengan memanggil operasi OpenAPI DescribeTraceLicenseKey.

Lihat data pemantauan dify-sandbox.
Di halaman Daftar Aplikasi, arahkan ke aplikasi dify-sandbox. Detail pemantauan ditampilkan sebagai berikut:

Detail jejak:

Referensi
Untuk informasi selengkapnya tentang cara menentukan versi agen Python, lihat Cara menginstal agen versi tertentu di wilayah tertentu.