全部产品
Search
文档中心

Application Real-Time Monitoring Service:Menghubungkan aplikasi Dify ke Pemantauan Aplikasi ARMS

更新时间:Nov 13, 2025

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

  1. Buat aplikasi Dify dengan mengikuti petunjuk dalam Buat asisten AI tanya-jawab kustom menggunakan Dify.

  2. 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.

  1. Ambil skrip dify asli dan lakukan modifikasi berikut:

    1. 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 install
    2. Pada bagian startup di akhir skrip, tambahkan perintah startup aliyun-instrument.

      Klik untuk melihat contoh skrip lengkap

      #!/bin/bash
      
      set -e
      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 install
      
      mkdir -p logs
      
      if [[ "${MODE}" == "worker" ]]; then
      
        # Dapatkan jumlah core CPU yang tersedia
        if [ "${CELERY_AUTO_SCALE,,}" = "true" ]; then
          # Tetapkan MAX_WORKERS ke jumlah core yang tersedia jika tidak ditentukan
          AVAILABLE_CORES=$(nproc)
          MAX_WORKERS=${CELERY_MAX_WORKERS:-$AVAILABLE_CORES}
          MIN_WORKERS=${CELERY_MIN_WORKERS:-1}
          CONCURRENCY_OPTION="--autoscale=${MAX_WORKERS},${MIN_WORKERS}"
        else
          CONCURRENCY_OPTION="-c ${CELERY_WORKER_AMOUNT:-1}"
        fi
      
        exec celery -A app.celery worker -P ${CELERY_WORKER_CLASS:-gevent} $CONCURRENCY_OPTION --loglevel ${LOG_LEVEL} \
          -Q ${CELERY_QUEUES:-dataset,generation,mail,ops_trace,app_deletion}
      
      else
        if [[ "${DEBUG}" == "true" ]]; then
          exec flask run --host=${DIFY_BIND_ADDRESS:-0.0.0.0} --port=${DIFY_PORT:-5001} --debug
        else
          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} \
            --timeout ${GUNICORN_TIMEOUT:-200} \
            --access-logfile logs/gunicorn_access.log \
            --error-logfile logs/gunicorn_error.log \
            --access-logformat '%(h)s|%(l)s|%(u)s|%(t)s|%(r)s|%(s)s|%(b)s|%(f)s|%(a)s|DURATION:%(L)s' \
            --log-level info \
            app:app
        fi
      fi
  2. Tambahkan item konfigurasi di konsol ACK.

    1. Masuk ke Konsol Container Service for Kubernetes. Di halaman Daftar Kluster, klik nama kluster target.

    2. Pada panel navigasi di sebelah kiri, pilih Configuration Management > Configuration Items. Di namespace dify-system, klik Buat.

      • Nama Item Konfigurasi: dify-bootstrap (contoh)

      • Nama: entrypoint.sh

      • Value: Skrip Dify yang Anda buat pada langkah sebelumnya.

    3. Klik OK untuk menyimpan item konfigurasi.

Langkah 3: Edit ack-dify-api

  1. Di halaman Workloads > Stateless kluster target, arahkan ke namespace dify-system. Temukan ack-dify-api dan klik Edit di kolom Tindakan.image.png

  2. 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.

  3. Di bagian Siklus Hidup, masukkan ["/bin/bash","/app/api/docker/entrypoint.sh"] sebagai Perintah Startup.image.png

  4. Pada bagian Volumes, klik Add Local Storage.

    • Jenis Volume: Item Konfigurasi

    • Nama Item Konfigurasi: bootstrap

    • Sumber Mount: dify-bootstrap

    • Jalur Kontainer: /app/api/docker

    image.png

  5. Di pojok kanan atas, klik Update untuk menyimpan konfigurasi.

    Setelah agen diinstal, Anda dapat melihat data pemantauan di halaman LLM Application Monitoring > Application List di Konsol ARMS. Untuk informasi selengkapnya, lihat Melihat data pemantauan.

    Penting

    Pastikan 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:

  1. 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"]
  2. Terapkan aplikasi dify-plugin-daemon dan laporkan data pemantauan.

    Penerapan berbasis kontainer

    Dalam file YAML untuk aplikasi dify-plugin-daemon, tambahkan label berikut 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-daemon

    Dapatkan LicenseKey dengan memanggil operasi OpenAPI DescribeTraceLicenseKey.

    2025-08-11_16-43-22

  3. Lihat data pemantauan dify-plugin-daemon.

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

    image.png

    Detail jejak:

    2025-08-11_18-23-04

(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:

  1. Modifikasi file ./build/build_[amd64|arm64].sh.

    1. 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 instgo
    2. Tambahkan perintah instgo sebelum perintah go 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.go
  2. Kompilasi citra.

    Sebagai contoh, untuk amd64:

    docker build -t sandbox:0.2.9  -f docker/amd64/dockerfile .
  3. Terapkan aplikasi dify-sandbox dan laporkan data pemantauan.

    Penerapan berbasis kontainer

    Dalam file YAML untuk aplikasi dify-sandbox, tambahkan label berikut 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-sandbox

    Dapatkan LicenseKey dengan memanggil operasi OpenAPI DescribeTraceLicenseKey.

    2025-08-19_17-30-58

  4. Lihat data pemantauan dify-sandbox.

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

    image

    Detail jejak:

    2025-08-19_18-25-44

Referensi

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