All Products
Search
Document Center

Simple Log Service:Instalasi dan konfigurasi

Last Updated:Aug 26, 2026

LoongCollector adalah agen pengumpulan log generasi berikutnya untuk Alibaba Cloud Simple Log Service (SLS) yang meningkatkan Logtail dengan kemampuan lebih canggih. Anda dapat menginstalnya di kluster Kubernetes dalam mode DaemonSet atau Sidecar.

Prasyarat

Sebelum menginstal LoongCollector, verifikasi konektivitas jaringan antara node kluster dan titik akhir server Simple Log Service. Node harus dapat mencapai titik akhir tersebut agar pengumpulan log dapat melaporkan data.

  1. Dapatkan titik akhir layanan:

    1. Masuk ke Konsol Simple Log Service. Di daftar proyek, klik proyek target.

    2. Klik ikon image di samping nama proyek untuk membuka halaman ikhtisar proyek.

    3. Di bagian Informasi Dasar, temukan titik akhir publik dan internal untuk wilayah proyek tersebut.

  2. Jalankan uji konektivitas: Masuk ke node kluster tempat Anda akan menginstal LoongCollector dan jalankan perintah curl berikut. Ganti ${ProjectName} dan ${SLS_ENDPOINT} dengan nilai aktualnya.

    curl https://${ProjectName}.${SLS_ENDPOINT}
  3. Periksa hasil pengujian:

    • Jika perintah mengembalikan {"Error":{"Code":"OLSInvalidMethod",...}}, artinya node memiliki konektivitas jaringan ke Simple Log Service.

      Catatan

      Pengujian ini hanya memverifikasi konektivitas lapisan jaringan. Respons error tersebut diharapkan karena permintaan tidak menyertakan parameter API yang diperlukan.

    • Jika perintah timeout atau mengembalikan error lapisan jaringan lain seperti Connection refused, periksa konfigurasi jaringan node, aturan security group, atau resolusi DNS.

Metode instalasi

Pilih metode instalasi berdasarkan jenis kluster dan kebutuhan Anda.

Metode instalasi

Kasus Penggunaan

Instal di kluster ACK (mode DaemonSet)

Kumpulkan log dari kluster ACK yang dikelola dan khusus dalam Akun Alibaba Cloud dan wilayah yang sama.

Instal di kluster self-managed (mode DaemonSet)

  • Kumpulkan log dari kluster ACK di berbagai Akun Alibaba Cloud atau wilayah.

  • Kumpulkan log dari kluster Kubernetes di pusat data self-managed.

  • Kumpulkan log dari kluster Kubernetes di penyedia cloud lain.

Instal dalam mode Sidecar

Kumpulkan log dari aplikasi tertentu yang memerlukan:

  • Isolasi resource: Mencegah agen DaemonSet memengaruhi Pod lain di node tersebut.

  • Pengumpulan detail halus: Kemampuan untuk mengonfigurasi sumber pengumpulan, aturan penyaringan, dan tujuan output yang terpisah untuk setiap aplikasi.

Instal di kluster ACK (mode DaemonSet)

Anda dapat menginstal LoongCollector dengan satu klik di Konsol Container Service for Kubernetes (ACK). Secara default, LoongCollector mengumpulkan log kontainer dan mengirimkannya ke Proyek dalam Akun Alibaba Cloud dan wilayah yang sama. Untuk mengumpulkan log lintas akun atau wilayah, lihat Instal di kluster self-managed (mode DaemonSet).

Instal di kluster ACK yang dikelola yang sudah ada

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Components and Add-ons .

  3. Di tab Logs and Monitoring, temukan loongcollector dan klik Install.

  4. Setelah instalasi, Simple Log Service (SLS) secara otomatis membuat resource berikut di wilayah kluster ACK. Anda dapat melihatnya di Konsol Simple Log Service (SLS).

    Jenis resource

    Nama resource

    Tujuan

    Project

    k8s-log-${cluster_id}

    Mengisolasi log dari layanan yang berbeda.

    Machine group

    k8s-group-${cluster_id}

    Kelompok mesin untuk loongcollector-ds, digunakan untuk pengumpulan log.

    k8s-group-${cluster_id}-cluster

    Kelompok mesin untuk loongcollector-cluster, digunakan untuk pengumpulan metrik.

    k8s-group-${cluster_id}-singleton

    Kelompok mesin untuk konfigurasi pengumpulan instans tunggal tertentu.

    Penting

    Komponen LoongCollector tidak membuat LogStore bernama config-operation-log. Jika LogStore ini sudah ada, LoongCollector tidak akan menulis log ke dalamnya.

Instal saat membuat kluster ACK yang dikelola

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Klik Create Cluster. Di halaman Component Configurations, pilih kotak centang Enable Log Service. Anda kemudian dapat memilih Create a new Project atau Use an existing Project.

    Topik ini hanya menjelaskan pengaturan untuk Simple Log Service (SLS). Untuk informasi lebih lanjut tentang item konfigurasi lainnya, lihat Create an ACK managed cluster.
  3. Saat Anda memilih Create Project, Simple Log Service (SLS) secara otomatis membuat resource berikut. Anda dapat melihatnya di Konsol Simple Log Service (SLS).

    Jenis resource

    Nama resource

    Tujuan

    Project

    k8s-log-${cluster_id}

    Mengisolasi log dari layanan yang berbeda.

    Machine group

    k8s-group-${cluster_id}

    Kelompok mesin untuk loongcollector-ds, digunakan untuk pengumpulan log.

    k8s-group-${cluster_id}-cluster

    Kelompok mesin untuk loongcollector-cluster, digunakan untuk pengumpulan metrik.

    k8s-group-${cluster_id}-singleton

    Kelompok mesin untuk konfigurasi pengumpulan instans tunggal tertentu.

    Penting

    Komponen LoongCollector tidak membuat LogStore bernama config-operation-log. Jika LogStore ini sudah ada, LoongCollector tidak akan menulis log ke dalamnya.

Instal di kluster self-managed (mode DaemonSet)

Kasus penggunaan

  • Kluster Kubernetes di pusat data self-managed

  • Kluster Kubernetes yang dideploy di penyedia cloud lain

  • Kumpulkan log kontainer dari kluster ACK lintas berbagai Akun Alibaba Cloud atau wilayah

Catatan

Pastikan kluster self-managed Anda menjalankan Kubernetes versi 1.6 atau lebih baru.

Prosedur

  1. Unduh dan ekstrak paket instalasi: Dari mesin yang telah menginstal dan mengonfigurasi kubectl, jalankan perintah yang sesuai dengan wilayah kluster Anda untuk mengunduh LoongCollector beserta dependensinya.

    # Wilayah Tiongkok
    wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.2.6/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh
    # Wilayah luar Tiongkok daratan
    wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.2.6/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh
  2. Ubah file konfigurasi values.yaml: Buka direktori loongcollector-custom-k8s-package dan edit file konfigurasi ./loongcollector/values.yaml.

    Parameter

    values.yaml

    # ===================== Parameter wajib =====================
    # Nama proyek untuk pengumpulan log di kluster ini. Contoh: k8s-log-custom-sd89ehdq
    projectName: ""
    # Wilayah proyek. Contoh untuk Shanghai: cn-shanghai
    region: ""
    # ID Akun Alibaba Cloud yang memiliki proyek. Sertakan ID dalam tanda kutip. Contoh: "123456789"
    aliUid: ""
    # Jaringan yang digunakan. Opsi: Internet (jaringan publik) atau Intranet (jaringan internal). Default: Internet
    net: Internet
    # ID AccessKey dan Rahasia AccessKey dari Akun Alibaba Cloud atau Pengguna RAM.
    accessKeyID: ""
    accessKeySecret: ""
    # ID kluster kustom. ID dapat berisi huruf besar, huruf kecil, angka, dan tanda hubung (-).
    clusterID: ""
    
    # ... Parameter opsional dihilangkan ...

    projectName String (Wajib)

    Nama proyek tempat LoongCollector mengunggah log. Nama harus memenuhi aturan berikut:

    • Hanya boleh berisi huruf kecil, angka, dan tanda hubung (-).

    • Harus dimulai dengan huruf kecil dan diakhiri dengan huruf kecil atau angka.

    • Panjangnya antara 3 hingga 63 karakter.

    region String (Wajib)

    ID wilayah proyek. Untuk daftar ID wilayah, lihat Wilayah.

    aliUid String (Wajib)

    ID Akun Alibaba Cloud yang memiliki proyek.

    net String (Wajib)

    Jenis jaringan untuk transmisi data log.

    • Internet (default): Jaringan publik.

    • Intranet: Jaringan internal.

    accessKeyID  String (Wajib)

    ID AccessKey yang digunakan untuk mengakses proyek. Disarankan menggunakan Pasangan Kunci Akses Pengguna RAM. Berikan kebijakan sistem AliyunLogFullAccess kepada Pengguna RAM tersebut. Untuk informasi selengkapnya tentang RAM, lihat Ikhtisar.

    accessKeySecret String (Wajib)

    Rahasia AccessKey yang sesuai dengan ID AccessKey tersebut.

    clusterID String (Wajib)

    ID kustom untuk kluster. ID hanya boleh berisi huruf besar, huruf kecil, angka, dan tanda hubung (-).

    Penting

    Jangan gunakan ID kluster yang sama untuk kluster Kubernetes yang berbeda.

  3. Jalankan skrip instalasi: Di direktori loongcollector-custom-k8s-package, jalankan perintah berikut untuk menginstal LoongCollector beserta dependensinya.

    bash k8s-custom-install.sh install
  4. Verifikasi instalasi: Setelah instalasi selesai, jalankan perintah berikut untuk memeriksa status pod:

    # Periksa status pod
    kubectl get po -n kube-system | grep loongcollector-ds

    Contoh output:

    loongcollector-ds-gnmnh   1/1     Running   0    63s

    Jika pod gagal dimulai (status bukan Running):

    1. Periksa konfigurasi: Pastikan parameter dalam file values.yaml sudah benar.

    2. Periksa gambar: Jalankan perintah berikut dan tinjau bagian Events pada output untuk memverifikasi bahwa gambar kontainer berhasil ditarik.

      kubectl describe pod loongcollector-ds -n kube-system
  5. Setelah LoongCollector diinstal, Simple Log Service secara otomatis membuat resource berikut. Anda dapat melihatnya di Konsol Simple Log Service.

    Jenis resource

    Nama resource

    Deskripsi

    Project

    Nilai projectName yang ditentukan dalam file values.yaml.

    Unit manajemen resource yang mengisolasi log dari layanan yang berbeda.

    Machine group

    k8s-group-${cluster_id}

    Kelompok mesin yang berisi semua node yang mengumpulkan log.

    k8s-group-${cluster_id}-cluster

    Kelompok mesin untuk loongcollector-cluster. Terutama digunakan untuk pengumpulan metrik.

    k8s-group-${cluster_id}-singleton

    Kelompok mesin instans tunggal untuk konfigurasi pengumpulan tertentu.

    Penting

    LoongCollector tidak membuat LogStore bernama config-operation-log. Jika LogStore ini sudah ada, LoongCollector tidak akan menulis log ke dalamnya.

Instal dalam mode Sidecar

Mode Sidecar bekerja dengan menyuntikkan kontainer LoongCollector (Logtail) khusus ke dalam Pod aplikasi Anda untuk mengumpulkan log secara eksklusif dari Pod tersebut. Pola ini ideal bila Anda memerlukan manajemen log detail halus, isolasi multi-tenant, atau pengikatan erat antara pengumpulan log dan siklus hidup aplikasi. Jika Anda belum mendeploy aplikasi atau ingin menguji prosesnya, Anda dapat menggunakan Lampiran: contoh YAML untuk memverifikasi alur kerja dengan cepat.

1. Ubah konfigurasi YAML pod

  1. Definisikan volume bersama

    Di spec.template.spec.volumes, tambahkan tiga volume bersama pada level yang sama dengan containers:

    volumes:
      # Direktori log bersama (ditulis oleh kontainer aplikasi, dibaca oleh sidecar)
      - name: ${shared_volume_name} # <-- Nama harus sesuai dengan nama di volumeMounts
        emptyDir: {}
      # Direktori sinyal untuk komunikasi antar-kontainer (untuk mulai mulus/berhenti mulus)
      - name: tasksite
        emptyDir:
          medium: Memory  # Gunakan memori sebagai media untuk performa lebih baik
          sizeLimit: "50Mi"
      # Konfigurasi zona waktu host bersama: Menyinkronkan zona waktu untuk semua kontainer dalam pod
      - name: tz-config # <-- Nama harus sesuai dengan nama di volumeMounts
        hostPath:
          path: /usr/share/zoneinfo/Asia/Shanghai  # Ubah zona waktu sesuai kebutuhan
    
  2. Konfigurasikan pemasangan kontainer aplikasi

    Di bagian volumeMounts kontainer aplikasi Anda, seperti your-business-app-container, tambahkan pemasangan volume berikut:

    Pastikan kontainer aplikasi menulis log ke direktori ${shared_volume_path} agar LoongCollector dapat mengumpulkannya.
    volumeMounts:
      # Pasang volume log bersama ke direktori output log aplikasi
      - name: ${shared_volume_name}
        mountPath: ${shared_volume_path}  # Contoh: /var/log/app
      # Pasang direktori komunikasi
      - name: tasksite
        mountPath: /tasksite  # Direktori bersama untuk komunikasi dengan kontainer LoongCollector
      # Pasang file zona waktu
      - name: tz-config
        mountPath: /etc/localtime
        readOnly: true
    
  3. Suntikkan kontainer sidecar LoongCollector

    Di array spec.template.spec.containers, tambahkan definisi kontainer sidecar berikut:

    - name: loongcollector
      image: aliyun-observability-release-registry.cn-shenzhen.cr.aliyuncs.com/loongcollector/loongcollector:v3.1.1.0-20fa5eb-aliyun
      command: ["/bin/bash", "-c"]
      args:
        - |
          echo "[$(date)] LoongCollector: Starting initialization"
          # Mulai layanan LoongCollector
          /etc/init.d/loongcollectord start
          # Tunggu konfigurasi diunduh dan layanan siap
          sleep 15
          # Verifikasi status layanan
          if /etc/init.d/loongcollectord status; then
            echo "[$(date)] LoongCollector: Service started successfully"
            touch /tasksite/cornerstone
          else
            echo "[$(date)] LoongCollector: Failed to start service"
            exit 1
          fi
          # Tunggu kontainer aplikasi selesai (melalui sinyal file tombstone)
          echo "[$(date)] LoongCollector: Waiting for application container to complete"
          until [[ -f /tasksite/tombstone ]]; do
            sleep 2
          done
          # Beri waktu untuk mengunggah log yang tersisa
          echo "[$(date)] LoongCollector: Business completed, waiting for log transmission"
          sleep 30
          # Hentikan layanan
          echo "[$(date)] LoongCollector: Stopping service"
          /etc/init.d/loongcollectord stop
          echo "[$(date)] LoongCollector: Shutdown complete"
      # Pemeriksaan kesehatan
      livenessProbe:
        exec:
          command: ["/etc/init.d/loongcollectord", "status"]
        initialDelaySeconds: 30
        periodSeconds: 10
        timeoutSeconds: 5
        failureThreshold: 3
      # Konfigurasi resource
      resources:
        requests:
          cpu: "100m"
          memory: "128Mi"
        limits:
          cpu: "2000m"
          memory: "2048Mi"
      # Konfigurasi variabel lingkungan
      env:
        - name: ALIYUN_LOGTAIL_USER_ID
          value: "${your_aliyun_user_id}"
        - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
          value: "${your_machine_group_user_defined_id}"
        - name: ALIYUN_LOGTAIL_CONFIG
          value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json"
        # Aktifkan mode full drain untuk memastikan semua log dikirim sebelum pod dihentikan
        - name: enable_full_drain_mode
          value: "true"  
        # Tambahkan informasi lingkungan pod sebagai tag log
        - name: ALIYUN_LOG_ENV_TAGS
          value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
        # Secara otomatis menyuntikkan metadata pod dan node sebagai tag log
        - name: "_pod_name_"
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: "_pod_ip_"
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: "_namespace_"
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: "_node_name_"
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: "_node_ip_"
          valueFrom:
            fieldRef:
              fieldPath: status.hostIP
      # Pemasangan volume (dibagi dengan kontainer aplikasi)
      volumeMounts:
        # Pemasangan baca-saja untuk direktori log aplikasi
        - name: ${shared_volume_name} # <-- Nama direktori log bersama
          mountPath: ${dir_containing_your_files} # <-- Path ke direktori bersama di sidecar
          readOnly: true
        # Pasang direktori komunikasi
        - name: tasksite
          mountPath: /tasksite
        # Pasang zona waktu
        - name: tz-config
          mountPath: /etc/localtime
          readOnly: true
    

2. Sesuaikan logika siklus hidup kontainer aplikasi

Bergantung pada jenis beban kerja, modifikasi kontainer aplikasi untuk mendukung keluar yang terkoordinasi dengan sidecar:

Tugas berumur pendek (Job/CronJob)

# 1. Tunggu LoongCollector siap
echo "[$(date)] Application: Waiting for LoongCollector to be ready..."
until [[ -f /tasksite/cornerstone ]]; do
  sleep 1
done
echo "[$(date)] Application: LoongCollector is ready, starting application logic"
# 2. Jalankan logika inti aplikasi (pastikan log ditulis ke direktori bersama)
echo "Hello, World!" >> /app/logs/business.log
# 3. Simpan kode keluar
retcode=$?
echo "[$(date)] Application: Task completed with exit code: $retcode"
# 4. Beri tahu LoongCollector bahwa tugas aplikasi selesai
touch /tasksite/tombstone
echo "[$(date)] Application: Tombstone created, exiting"
exit $retcode

Layanan berumur panjang (Deployment / StatefulSet)

# Definisikan fungsi penanganan sinyal
_term_handler() {
    echo "[$(date)] [nginx-demo] Caught SIGTERM, starting graceful shutdown..."
    # Kirim sinyal QUIT ke Nginx untuk penghentian mulus
    if [ -n "$NGINX_PID" ]; then
        kill -QUIT "$NGINX_PID" 2>/dev/null || true
        echo "[$(date)] [nginx-demo] Sent SIGQUIT to Nginx PID: $NGINX_PID"
        # Tunggu Nginx berhenti secara mulus
        wait "$NGINX_PID"
        EXIT_CODE=$?
        echo "[$(date)] [nginx-demo] Nginx stopped with exit code: $EXIT_CODE"
    fi
    # Beri tahu LoongCollector bahwa kontainer aplikasi telah berhenti
    echo "[$(date)] [nginx-demo] Writing tombstone file"
    touch /tasksite/tombstone
    exit $EXIT_CODE
}
# Daftarkan penanganan sinyal
trap _term_handler SIGTERM SIGINT SIGQUIT
# Tunggu LoongCollector siap
echo "[$(date)] [nginx-demo]: Waiting for LoongCollector to be ready..."
until [[ -f /tasksite/cornerstone ]]; do 
    sleep 1
done
echo "[$(date)] [nginx-demo]: LoongCollector is ready, starting application logic"
# Mulai Nginx
echo "[$(date)] [nginx-demo] Starting Nginx..."
nginx -g 'daemon off;' &
NGINX_PID=$!
echo "[$(date)] [nginx-demo] Nginx started with PID: $NGINX_PID"
# Tunggu proses Nginx
wait $NGINX_PID
EXIT_CODE=$?
# Juga beri tahu LoongCollector jika keluar tidak disebabkan oleh sinyal
if [ ! -f /tasksite/tombstone ]; then
    echo "[$(date)] [nginx-demo] Unexpected exit, writing tombstone"
    touch /tasksite/tombstone
fi
exit $EXIT_CODE

3. Atur periode tenggang penghentian

Di spec.template.spec, atur periode tenggang penghentian yang cukup lama untuk memungkinkan LoongCollector mengunggah semua log yang tersisa.

spec:
  # ... Konfigurasi spec lainnya ...
  template:
    spec:
      terminationGracePeriodSeconds: 600  # Periode berhenti mulus 10 menit

4. Variabel

Parameter

Deskripsi

${your_aliyun_user_id}

ID Akun Alibaba Cloud Anda. Konfigurasikan pengenal pengguna.

${your_machine_group_user_defined_id}

Pengenal kustom yang digunakan untuk membuat kelompok mesin. Contoh: nginx-log-sidecar.

Penting

Pastikan pengenal ini unik dalam wilayah Proyek tersebut.

${your_region_config}

Konfigurasi yang sesuai dengan wilayah Proyek SLS Anda dan jenis akses jaringan. Wilayah layanan.

Contoh: Jika Proyek Anda berada di wilayah Tiongkok (Hangzhou), gunakan cn-hangzhou untuk akses jaringan internal Alibaba Cloud atau cn-hangzhou-internet untuk akses jaringan publik.

${shared_volume_name}

Nama kustom untuk volume bersama.

Penting

name di volumeMounts harus sesuai dengan name di volumes. Ini memastikan kedua kontainer memasang volume bersama yang sama.

${dir_containing_your_files}

Path pemasangan di kontainer LoongCollector tempat log teks berada.

5. Terapkan konfigurasi dan verifikasi

  1. Jalankan perintah berikut untuk menerapkan perubahan:

    kubectl apply -f <YOUR-YAML>
  2. Periksa status pod untuk memastikan kontainer LoongCollector berhasil disuntikkan:

    kubectl describe pod <YOUR-POD-NAME>

    Jika Anda melihat dua kontainer (kontainer aplikasi dan loongcollector) dan statusnya Running, penyuntikan berhasil.

6. Buat kelompok mesin berbasis pengenal kustom

  1. Masuk ke Konsol Simple Log Service, lalu klik proyek target.

  2. Di bilah navigasi kiri, pilih imageResources > Machine Groups, dan klik machine group > Create Machine Group di sebelah kanan Machine Groups.

  3. Di kotak dialog Create Machine Group, konfigurasikan parameter berikut dan klik OK.

    • Name: Nama kelompok mesin. Anda tidak dapat mengubah nama ini setelah pembuatan. Nama harus memenuhi persyaratan berikut:

      • Hanya boleh berisi huruf kecil, angka, tanda hubung (-), dan garis bawah (_).

      • Harus dimulai dan diakhiri dengan huruf kecil atau angka.

      • Panjangnya harus antara 2 hingga 128 karakter.

    • Machine Group Identifier: Pilih Custom Identifier.

    • Custom Identifier: Masukkan nilai variabel lingkungan ALIYUN_LOGTAIL_USER_DEFINED_ID yang Anda tetapkan untuk kontainer LoongCollector di file YAML pada 1. Ubah konfigurasi YAML Pod layanan. Ini harus persis sama. Jika tidak, asosiasi akan gagal.

  4. Untuk memeriksa detak jantung kelompok mesin, klik nama kelompok mesin yang baru dibuat dan temukan area status kelompok mesin.

    • OK: Menunjukkan bahwa LoongCollector berhasil terhubung ke Simple Log Service dan kelompok mesin telah terdaftar.

    • FAIL:

      • Perubahan konfigurasi dapat memakan waktu hingga 2 menit untuk diterapkan. Muat ulang halaman untuk memeriksa lagi.

      • Jika status masih FAIL setelah 2 menit, lihat Pemecahan masalah kelompok mesin Logtail.

Setiap Pod memiliki instans LoongCollector khusus. Kami menyarankan Anda menggunakan pengenal kustom yang berbeda untuk aplikasi atau lingkungan yang berbeda guna manajemen detail halus.

FAQ

Bagaimana cara mengubah konfigurasi LoongCollector kluster ACK yang dikelola untuk mengumpulkan log lintas akun atau wilayah?

Jika Anda menginstal loongcollector dari Konsol ACK Alibaba Cloud, secara default log kontainer dikumpulkan ke Proyek Simple Log Service dalam Akun Alibaba Cloud yang sama. Untuk mengumpulkan log lintas akun atau wilayah, gunakan salah satu metode berikut:

Metode 1: Uninstal dan instal ulang

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Components and Add-ons .

  3. Di tab Logs and Monitoring, temukan loongcollector dan klik Uninstall.

  4. Instal ulang komponen seperti yang dijelaskan di Instal di kluster self-managed (mode DaemonSet).

Metode 2: Perbarui konfigurasi Helm dan redeploy loongcollector

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, pilih Apply > Helm.

  2. Di halaman manajemen aplikasi Helm, temukan loongcollector, lalu di kolom Tindakan, klik Update. Di halaman Update Release, ubah konfigurasi sesuai tabel berikut, biarkan konfigurasi lain tidak berubah, lalu klik OK.

    Kluster dan proyek

    Parameter

    Akun sama, wilayah berbeda

    region: ID Wilayah tempat Proyek tujuan berada.

    net: Atur nilainya ke Internet. Data tidak dapat ditransfer antar-wilayah melalui jaringan internal.

    Akun berbeda, wilayah sama

    aliUid: ID akun Alibaba Cloud pemilik Proyek tujuan. Pisahkan beberapa ID akun dengan koma.

    net: Atur nilainya ke Intranet. Disarankan menggunakan jaringan internal untuk transfer data dalam wilayah yang sama.

    Akun berbeda, wilayah berbeda

    aliUid: ID akun Alibaba Cloud pemilik Proyek tujuan. Pisahkan beberapa ID akun dengan koma.

    region: ID Wilayah tempat Proyek tujuan berada.

    net: Atur nilainya ke Internet. Data tidak dapat ditransfer antar-wilayah melalui jaringan internal.

  3. Buat kelompok mesin:

    1. Masuk ke Konsol Simple Log Service, lalu klik Proyek target.

    2. Di panel navigasi kiri, pilih imageResources > >  > Machine Groups. Di sebelah kanan Machine Groups, klik machine group > >  > Create Machine Group.

    3. Di kotak dialog Create Machine Group, konfigurasikan parameter berikut, lalu klik OK.

      1. Masukkan nama untuk kelompok mesin.

      2. Untuk Machine Group Identifier, pilih Custom Identifier.

      3. Untuk Custom Identifier, masukkan k8s-group-${cluster_id}. Ganti ${cluster_id} dengan nilai clusterID kluster Anda.

    4. Setelah kelompok mesin dibuat, temukan di daftar dan klik namanya. Di bagian Machine Group Configurations > >  > Machine Group Status, periksa status Heartbeat. Status OK menunjukkan koneksi berhasil. Jika heartbeat gagal, verifikasi bahwa pengenal pengguna dan pengenal kustom benar.

  4. Setelah mengubah konfigurasi, klik Update.


Bagaimana cara mengumpulkan log kontainer dari kluster ACK Edge, ACK One, ACS, dan ACK Serverless?

Bagaimana cara mengubah parameter projectName komponen LoongCollector?

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, pilih Applications > Helm.

  2. Di halaman manajemen aplikasi Helm, temukan loongcollector dan klik Update di kolom Tindakan untuk membuka halaman pembaruan rilis.

  3. Di bagian konfigurasi parameter (Values) Helm Chart target, ubah parameter projectName (field tingkat root), lalu klik OK.

Catatan

Saat mengonfigurasi variabel lingkungan, jika ALICLOUD_LOG_PROJECT tidak secara eksplisit ditentukan, sistem akan menggunakan parameter Project yang diteruskan dalam perintah instalasi sebagai nilai default dan secara otomatis membuat konfigurasi terkait LoongCollector serta kelompok mesin default untuk kluster di bawah Proyek tersebut.

Langkah selanjutnya

Setelah menginstal LoongCollector, baca Panduan Pengumpulan Log Kontainer dari Kluster Kubernetes untuk memahami prinsip inti, proses, dan praktik terbaik pengumpulan log kontainer. Selanjutnya, buat konfigurasi pengumpulan menggunakan salah satu metode berikut:

Lampiran: contoh YAML

Contoh berikut menunjukkan konfigurasi Deployment Kubernetes lengkap yang mencakup kontainer aplikasi (Nginx) dan kontainer sidecar LoongCollector, digunakan untuk mengumpulkan log kontainer dalam mode sidecar.

Sebelum menggunakan konfigurasi ini, lakukan penggantian berikut:

  1. Ganti ${your_aliyun_user_id} dengan UID Akun Alibaba Cloud Anda.

  2. Ganti ${your_machine_group_user_defined_id} dengan ID kustom kelompok mesin yang Anda buat di Langkah 3. ID tersebut harus persis sama.

  3. Ganti ${your_region_config} dengan nama konfigurasi yang sesuai dengan wilayah dan jenis jaringan proyek Simple Log Service (SLS) Anda.

    Contoh: Jika proyek Anda berada di wilayah Tiongkok (Hangzhou), gunakan cn-hangzhou untuk akses jaringan internal atau cn-hangzhou-internet untuk akses jaringan publik.

Tugas berumur pendek (Job/CronJob)

apiVersion: batch/v1
kind: Job
metadata:
  name: demo-job
spec:
  backoffLimit: 3                   
  activeDeadlineSeconds: 3600        
  completions: 1                     
  parallelism: 1                    
  template:
    spec:
      restartPolicy: Never         
      terminationGracePeriodSeconds: 300 
      containers:
        # Kontainer aplikasi
        - name: demo-job
          image: debian:bookworm-slim
          command: ["/bin/bash", "-c"]
          args:
            - |
              # Tunggu LoongCollector siap.
              echo "[$(date)] Business: Waiting for LoongCollector to be ready..."
              until [[ -f /tasksite/cornerstone ]]; do 
                sleep 1
              done
              echo "[$(date)] Business: LoongCollector is ready, starting business logic"
              # Jalankan logika aplikasi.
              echo "Hello, World!" >> /app/logs/business.log
              # Simpan kode keluar.
              retcode=$?
              echo "[$(date)] Business: Task completed with exit code: $retcode"
              # Beri tahu LoongCollector bahwa tugas selesai.
              touch /tasksite/tombstone
              echo "[$(date)] Business: Tombstone created, exiting"
              exit $retcode
          # Permintaan dan batas resource
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "500"
              memory: "512Mi"
          # pemasangan volume
          volumeMounts:
            - name: app-logs
              mountPath: /app/logs
            - name: tasksite
              mountPath: /tasksite
        # Kontainer sidecar LoongCollector
        - name: loongcollector
          image: aliyun-observability-release-registry.cn-hongkong.cr.aliyuncs.com/loongcollector/loongcollector:v3.1.1.0-20fa5eb-aliyun
          command: ["/bin/bash", "-c"]
          args:
            - |
              echo "[$(date)] LoongCollector: Starting initialization"
              # Mulai layanan LoongCollector.
              /etc/init.d/loongcollectord start
              # Tunggu konfigurasi diunduh dan layanan siap.
              sleep 15
              # Verifikasi status layanan.
              if /etc/init.d/loongcollectord status; then
                echo "[$(date)] LoongCollector: Service started successfully"
                touch /tasksite/cornerstone
              else
                echo "[$(date)] LoongCollector: Failed to start service"
                exit 1
              fi
              # Tunggu kontainer aplikasi selesai.
              echo "[$(date)] LoongCollector: Waiting for business container to complete"
              until [[ -f /tasksite/tombstone ]]; do 
                sleep 2
              done
              echo "[$(date)] LoongCollector: Business completed, waiting for log transmission"
              # Beri waktu cukup untuk mengirim log yang tersisa.
              sleep 30
              echo "[$(date)] LoongCollector: Stopping service"
              /etc/init.d/loongcollectord stop
              echo "[$(date)] LoongCollector: Shutdown complete"
          # pemeriksaan kesehatan
          livenessProbe:
            exec:
              command: ["/etc/init.d/loongcollectord", "status"]
            initialDelaySeconds: 30
            periodSeconds: 10
            timeoutSeconds: 5
            failureThreshold: 3
          # Permintaan dan batas resource
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "500m"
              memory: "512Mi"
          # variabel lingkungan
          env:
            - name: ALIYUN_LOGTAIL_USER_ID
              value: "your-user-id"
            - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
              value: "your-user-defined-id"
            - name: ALIYUN_LOGTAIL_CONFIG
              value: "/etc/ilogtail/conf/cn-hongkong/ilogtail_config.json"
            - name: ALIYUN_LOG_ENV_TAGS
              value: "_pod_name_|_pod_ip_|_namespace_|_node_name_"
            # Suntikkan metadata pod.
            - name: "_pod_name_"
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: "_pod_ip_"
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: "_namespace_"
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: "_node_name_"
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
          # pemasangan volume
          volumeMounts:
            - name: app-logs
              mountPath: /app/logs
              readOnly: true
            - name: tasksite
              mountPath: /tasksite
            - name: tz-config
              mountPath: /etc/localtime
              readOnly: true
      # Definisi volume
      volumes:
        - name: app-logs
          emptyDir: {}
        - name: tasksite
          emptyDir:
            medium: Memory
            sizeLimit: "10Mi"
        - name: tz-config
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai

Layanan berumur panjang (Deployment / StatefulSet)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-demo
  namespace: production
  labels:
    app: nginx-demo
    version: v1.0.0
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1      
      maxSurge: 1          
  selector:
    matchLabels:
      app: nginx-demo
  template:
    metadata:
      labels:
        app: nginx-demo
        version: v1.0.0    
    spec:
      terminationGracePeriodSeconds: 600  # Periode shutdown mulus 10 menit
      containers:
        # Kontainer aplikasi - Aplikasi web
        - name: nginx-demo
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6          
          # Perintah startup dan penanganan sinyal
          command: ["/bin/sh", "-c"]
          args:
            - |
              # Definisikan penanganan sinyal.
              _term_handler() {
                  echo "[$(date)] [nginx-demo] Caught SIGTERM, starting graceful shutdown..."
                  # Kirim sinyal QUIT ke Nginx untuk penghentian mulus.
                  if [ -n "$NGINX_PID" ]; then
                      kill -QUIT "$NGINX_PID" 2>/dev/null || true
                      echo "[$(date)] [nginx-demo] Sent SIGQUIT to Nginx PID: $NGINX_PID"
                      # Tunggu Nginx berhenti secara mulus.
                      wait "$NGINX_PID"
                      EXIT_CODE=$?
                      echo "[$(date)] [nginx-demo] Nginx stopped with exit code: $EXIT_CODE"
                  fi
                  # Beri tahu LoongCollector bahwa kontainer aplikasi telah berhenti.
                  echo "[$(date)] [nginx-demo] Writing tombstone file"
                  touch /tasksite/tombstone
                  exit $EXIT_CODE
              }
              # Daftarkan penanganan sinyal.
              trap _term_handler SIGTERM SIGINT SIGQUIT
              # Tunggu LoongCollector siap.
              echo "[$(date)] [nginx-demo]: Waiting for LoongCollector to be ready..."
              until [[ -f /tasksite/cornerstone ]]; do 
                sleep 1
              done
              echo "[$(date)] [nginx-demo]: LoongCollector is ready, starting business logic"
              # Mulai Nginx.
              echo "[$(date)] [nginx-demo] Starting Nginx..."
              nginx -g 'daemon off;' &
              NGINX_PID=$!
              echo "[$(date)] [nginx-demo] Nginx started with PID: $NGINX_PID"
              # Tunggu proses Nginx keluar.
              wait $NGINX_PID
              EXIT_CODE=$?
              # Jika proses keluar tanpa sinyal, beri tahu LoongCollector.
              if [ ! -f /tasksite/tombstone ]; then
                  echo "[$(date)] [nginx-demo] Unexpected exit, writing tombstone"
                  touch /tasksite/tombstone
              fi
              exit $EXIT_CODE
          # Permintaan dan batas resource
          resources:
            requests:
              cpu: "200m"
              memory: "256Mi"
            limits:
              cpu: "1000m"
              memory: "1Gi"
          # pemasangan volume
          volumeMounts:
            - name: nginx-logs
              mountPath: /var/log/nginx
            - name: tasksite
              mountPath: /tasksite
            - name: tz-config
              mountPath: /etc/localtime
              readOnly: true
        # Kontainer sidecar LoongCollector
        - name: loongcollector
          image: aliyun-observability-release-registry.cn-shenzhen.cr.aliyuncs.com/loongcollector/loongcollector:v3.1.1.0-20fa5eb-aliyun
          command: ["/bin/bash", "-c"]
          args:
            - |
              echo "[$(date)] LoongCollector: Starting initialization"
              # Mulai layanan LoongCollector.
              /etc/init.d/loongcollectord start
              # Tunggu konfigurasi diunduh dan layanan siap.
              sleep 15
              # Verifikasi status layanan.
              if /etc/init.d/loongcollectord status; then
                echo "[$(date)] LoongCollector: Service started successfully"
                touch /tasksite/cornerstone
              else
                echo "[$(date)] LoongCollector: Failed to start service"
                exit 1
              fi
              # Tunggu kontainer aplikasi selesai.
              echo "[$(date)] LoongCollector: Waiting for business container to complete"
              until [[ -f /tasksite/tombstone ]]; do 
                sleep 2
              done
              echo "[$(date)] LoongCollector: Business completed, waiting for log transmission"
              # Beri waktu cukup untuk mengirim log yang tersisa.
              sleep 30
              echo "[$(date)] LoongCollector: Stopping service"
              /etc/init.d/loongcollectord stop
              echo "[$(date)] LoongCollector: Shutdown complete"
          # pemeriksaan kesehatan
          livenessProbe:
            exec:
              command: ["/etc/init.d/loongcollectord", "status"]
            initialDelaySeconds: 30
            periodSeconds: 10
            timeoutSeconds: 5
            failureThreshold: 3
          # Permintaan dan batas resource
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "2000m"
              memory: "2048Mi"
          # variabel lingkungan
          env:
            - name: ALIYUN_LOGTAIL_USER_ID
              value: "${your_aliyun_user_id}"
            - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
              value: "${your_machine_group_user_defined_id}"
            - name: ALIYUN_LOGTAIL_CONFIG
              value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json"
            # Aktifkan mode full drain untuk mengirim semua log saat pod berhenti.
            - name: enable_full_drain_mode
              value: "true"
            # Tambahkan informasi lingkungan pod sebagai tag log.
            - name: "ALIYUN_LOG_ENV_TAGS"
              value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
            # Dapatkan informasi pod dan node.
            - name: "_pod_name_"
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: "_pod_ip_"
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: "_namespace_"
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: "_node_name_"
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
            - name: "_node_ip_"
              valueFrom:
                fieldRef:
                  fieldPath: status.hostIP
          # pemasangan volume
          volumeMounts:
            - name: nginx-logs
              mountPath: /var/log/nginx
              readOnly: true
            - name: tasksite
              mountPath: /tasksite
            - name: tz-config
              mountPath: /etc/localtime
              readOnly: true
      # Definisi volume
      volumes:
        - name: nginx-logs
          emptyDir: {}
        - name: tasksite
          emptyDir:
            medium: Memory
            sizeLimit: "50Mi"
        - name: tz-config
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai

Referensi

Wilayah

  1. Masuk ke Konsol Simple Log Service. Di daftar proyek, klik proyek tujuan.

  2. Klik ikon image di samping nama proyek untuk membuka halaman ikhtisar proyek.

  3. Di bagian Informasi Dasar, lihat nama wilayah proyek saat ini. Tabel berikut memetakan nama wilayah ke ID Wilayah yang sesuai.

    Wilayah adalah lokasi geografis pusat data fisik untuk layanan cloud. ID Wilayah adalah pengenal uniknya.

    Nama wilayah

    ID Wilayah

    Tiongkok (Qingdao)

    cn-qingdao

    Tiongkok (Beijing)

    cn-beijing

    Tiongkok (Zhangjiakou)

    cn-zhangjiakou

    Tiongkok (Hohhot)

    cn-huhehaote

    Tiongkok (Ulanqab)

    cn-wulanchabu

    Tiongkok (Hangzhou)

    cn-hangzhou

    Tiongkok (Shanghai)

    cn-shanghai

    Tiongkok (Nanjing - Local Region - Decommissioning)

    cn-nanjing

    Tiongkok (Fuzhou - Local Region - Decommissioning)

    cn-fuzhou

    Tiongkok (Shenzhen)

    cn-shenzhen

    Tiongkok (Heyuan)

    cn-heyuan

    Tiongkok (Guangzhou)

    cn-guangzhou

    Filipina (Manila)

    ap-southeast-6

    Korea Selatan (Seoul)

    ap-northeast-2

    Malaysia (Kuala Lumpur)

    ap-southeast-3

    Jepang (Tokyo)

    ap-northeast-1

    Thailand (Bangkok)

    ap-southeast-7

    Tiongkok (Chengdu)

    cn-chengdu

    Singapura

    ap-southeast-1

    Indonesia (Jakarta)

    ap-southeast-5

    Tiongkok (Hong Kong)

    cn-hongkong

    Jerman (Frankfurt)

    eu-central-1

    AS (Virginia)

    us-east-1

    AS (Silicon Valley)

    us-west-1

    Inggris (London)

    eu-west-1

    UEA (Dubai)

    me-east-1

    SAU (Riyadh)

    me-central-1

Jenis transmisi jaringan Loongcollector

Titik akhir adalah nama domain akses untuk SLS, yaitu URL yang digunakan untuk mengakses proyek dan data log-nya. Titik akhir bersifat spesifik terhadap wilayah tempat proyek berada. SLS menyediakan titik akhir pribadi, titik akhir publik, dan titik akhir akselerasi transfer. Untuk melihat titik akhir:

  1. Masuk ke Konsol SLS. Di daftar proyek, klik proyek target.

  2. Klik ikon image di sebelah kanan nama proyek untuk membuka halaman ikhtisar proyek.

  3. Di bagian Access Endpoints, lihat informasi titik akhir untuk proyek saat ini. Setiap metode transmisi jaringan memiliki titik akhir yang berbeda. Memilih metode transmisi jaringan yang tepat membantu memastikan transmisi data log yang lebih cepat dan stabil.

Jenis jaringan

Jenis titik akhir yang sesuai

Deskripsi

Skenario

Jaringan internal Alibaba Cloud

Titik akhir pribadi

Jaringan internal Alibaba Cloud adalah jaringan bersama gigabit. Mengirim data log melalui jaringan internal lebih cepat dan lebih stabil daripada melalui internet publik. Jaringan internal mencakup VPC dan jaringan klasik.

Instance ECS dan proyek SLS berada di wilayah yang sama, atau Anda telah menghubungkan server lokal Anda ke jaringan internal.

Catatan

Buat proyek SLS di wilayah yang sama dengan instance ECS Anda. Ini memungkinkan Anda mengumpulkan log dari instance ECS melalui jaringan internal Alibaba Cloud tanpa mengonsumsi bandwidth publik.

Internet publik

Titik akhir publik

Saat Anda mentransfer data log melalui internet publik, kecepatan dan stabilitas pengumpulan data dapat dipengaruhi oleh batas bandwidth, fluktuasi jaringan, latensi, dan kehilangan paket.

Transfer data melalui internet publik dalam dua kasus berikut.

  • Instance ECS dan proyek SLS berada di wilayah yang berbeda.

  • Server di-host oleh penyedia cloud lain atau di pusat data lokal Anda.

Akselerasi transfer

Titik akhir akselerasi transfer

Menggunakan node edge CDN Alibaba Cloud untuk mempercepat pengumpulan log menawarkan keunggulan signifikan dalam latensi dan stabilitas jaringan dibandingkan pengumpulan melalui internet publik, tetapi lalu lintasnya dikenai biaya tambahan.

Jika server aplikasi dan proyek SLS Anda masing-masing berada di wilayah Tiongkok dan internasional, mentransfer data melalui internet publik dapat menyebabkan latensi tinggi dan ketidakstabilan. Gunakan akselerasi transfer untuk mentransfer data dalam kasus ini. Untuk informasi lebih lanjut, lihat Akselerasi transfer.

Mode operasi Loongcollector

Atribut

Mode DaemonSet

Sidecar mode

Metode deployment

Men-deploy satu kontainer pengumpulan di setiap node.

Men-deploy satu kontainer pengumpulan di setiap pod.

Konsumsi resource

Rendah (resource node dibagi)

Lebih tinggi (setiap pod mengonsumsi resource secara independen)

Kasus penggunaan

Pengumpulan log terpadu tingkat node

Pengumpulan log terisolasi untuk aplikasi tertentu

Isolasi

Berbagi tingkat node

Kemandirian tingkat pod

Cara kerja mode DaemonSet

Men-deploy agen LoongCollector di setiap node untuk mengumpulkan log dari semua kontainer di node tersebut. Mode ini menawarkan operasi sederhana, konsumsi resource rendah, dan konfigurasi fleksibel, tetapi memiliki isolasi tenant yang lebih lemah.

  • Dalam mode DaemonSet, Kubernetes menjalankan tepat satu kontainer LoongCollector di setiap node untuk mengumpulkan log dari semua kontainer di node tersebut.

  • Kubernetes secara otomatis membuat dan menghancurkan kontainer LoongCollector saat node bergabung atau meninggalkan kluster, sehingga tidak diperlukan manajemen instans manual.

Cara kerja mode Sidecar

Menyuntikkan sidecar LoongCollector bersama kontainer aplikasi di setiap pod. Direktori log aplikasi dibagi melalui volume Kubernetes (emptyDir, hostPath, atau PVC), memungkinkan LoongCollector membaca file log secara langsung. Mode ini memberikan isolasi tenant yang kuat dan performa tinggi, tetapi mengonsumsi lebih banyak resource.

  • Dalam mode sidecar, setiap pod menjalankan kontainer LoongCollector khusus. Pengumpulan log diisolasi antar-pod.

  • Volume bersama harus dipasang ke kontainer aplikasi dan LoongCollector untuk akses file log.

  • Saat volume log pod melebihi kapasitas DaemonSet, mode sidecar memungkinkan Anda mengalokasikan resource khusus untuk LoongCollector.

  • Lingkungan serverless tidak memiliki node, sehingga DaemonSet tidak dapat diterapkan. Mode sidecar terintegrasi langsung dengan arsitektur serverless.