全部产品
Search
文档中心

Container Compute Service:Gunakan AliyunLogConfig untuk mengumpulkan log aplikasi

更新时间:Jun 28, 2025

Container Compute Service (ACS) terintegrasi dengan Simple Log Service (SLS). Saat membuat kluster ACS, Anda dapat mengaktifkan SLS untuk mengumpulkan data log dari kontainer dalam kluster. Data log mencakup stdout dan file teks. Topik ini menjelaskan cara menggunakan jenis resource kustom bernama AliyunLogConfig, yang didefinisikan melalui CustomResourceDefinition (CRD), untuk mengumpulkan log aplikasi dari kluster ACS.

Langkah 1: Instal komponen alibaba-log-controller

Saat membuat kluster ACS, Anda dapat memilih Enable Log Service untuk menginstal komponen alibaba-log-controller. Jika opsi ini tidak dipilih selama pembuatan kluster, Anda dapat menginstal komponen tersebut setelah kluster dibuat dengan mengikuti langkah-langkah berikut:

  1. Masuk ke konsol ACS. Di panel navigasi sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang ingin dikelola, lalu klik ID-nya. Di panel navigasi sebelah kiri halaman detail kluster, pilih Operations > Add-ons.

  3. Temukan alibaba-log-controller di bagian Logs and Monitoring. Klik Install. Di kotak dialog Install alibaba-log-controller, klik OK.

Penting

Jika versi sebelumnya dari komponen alibaba-log-controller sudah terinstal, Anda dapat memperbaruinya. Namun, pembaruan akan mengatur ulang parameter komponen serta menimpa pengaturan dan variabel lingkungan yang ada. Jika Anda telah menyesuaikan pengaturan atau variabel lingkungan, konfigurasikan ulang setelah pembaruan.

Langkah 2: Buat CRD AliyunLogConfig untuk mengonfigurasi pengumpulan log

Anda dapat menggunakan AliyunLogConfig untuk mengumpulkan log stdout dan teks dari aplikasi. Di panel navigasi sebelah kiri halaman detail kluster, pilih Custom Resources > CRDs > Create from YAML untuk membuat AliyunLogConfig. Konfigurasikan parameter-parameter AliyunLogConfig sesuai kebutuhan. Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Deskripsi

Contoh

.metadata.name

Nama AliyunLogConfig. Nama harus unik dalam kluster ACS.

test-stdout

.spec.project

Nama Proyek SLS yang ingin Anda gunakan. Parameter ini opsional. Anda dapat menentukan nama kustom. Kami merekomendasikan agar Anda menentukan nama proyek dalam format k8s-log-<ID kluster ACS>.

k8s-log-c326bc86****

.spec.logstore

Nama penyimpanan log yang ingin Anda gunakan. Parameter ini wajib. Jika penyimpanan log yang Anda tentukan tidak ada, SLS secara otomatis membuat penyimpanan log dengan nama yang ditentukan.

test-stdout

.spec.logtailConfig.inputType

Tipe data sumber yang ingin Anda kumpulkan. Nilai file menunjukkan log teks. Nilai plugin menunjukkan stdout.

plugin

.spec.logtailConfig.configName

Nama konfigurasi Logtail. Nama harus sama dengan nilai metadata.name.

test-stdout

.spec.logtailConfig.inputDetail

Detail konfigurasi Logtail. Konfigurasi Logtail menentukan cara mengumpulkan stdout dan log teks.

plugin:
  inputs:
    - type: service_docker_stdout
      detail:
        Stdout: true
        Stderr: true

Pengaturan contoh menunjukkan bahwa stdout dan stderr dikumpulkan.

.spec.logtailConfig.inputDetail.advanced

Pengaturan lanjutan untuk Logtail. Berikut adalah pengaturan lanjutan terkait K8s:

  • K8sNamespaceRegex: memfilter pod berdasarkan namespace. Anda dapat menentukan ekspresi reguler.

  • K8sContainerRegex: memfilter kontainer berdasarkan nama kontainer. Anda dapat menentukan ekspresi reguler.

  • K8sPodRegex: memfilter pod berdasarkan nama pod. Anda dapat menentukan ekspresi reguler.

  • IncludeK8sLabel: memfilter pod berdasarkan label.

k8s:
  K8sNamespaceRegex: ^(default)$
  K8sContainerRegex: ^(busybox)$
  K8sPodRegex: ^backend.+$
  IncludeK8sLabel:
    app: backend
    application: prod

Pengaturan contoh menunjukkan bahwa log kontainer yang sesuai dengan kondisi berikut dikumpulkan:

  • Pod termasuk dalam namespace default.

  • Nama pod diawali dengan backend.

  • Nama kontainer diawali dengan busybox.

  • Pod memiliki label app: backend dan application: prod.

Untuk informasi lebih lanjut tentang parameter Logtail, lihat Konfigurasi Logtail.

Skenario 1: Mengumpulkan stdout dari aplikasi tertentu

Untuk mengumpulkan stdout dan stderr dari pod atau kontainer tertentu, tambahkan kondisi filter ke bidang detail bagian logtailConfig dalam konfigurasi AliyunLogConfig. Setelah menerapkan AliyunLogConfig di kluster, stdout dan stderr dari pod atau kontainer yang sesuai dengan kondisi filter akan dikumpulkan.

apiVersion: log.alibabacloud.com/v1alpha1      
kind: AliyunLogConfig                         
metadata:
  name: test-stdout               
spec:
  project: k8s-log-c326bc86****    # Ganti nilainya dengan nama proyek sebenarnya.
  logstore: test-stdout                           
  shardCount: 2                                           
  lifeCycle: 90                    
  logtailConfig:                   
    inputType: plugin                                             
    configName: test-stdout        
    inputDetail:                   
      plugin:
        inputs:
          - type: service_docker_stdout
            detail:
              Stdout: true
              Stderr: true
              K8sNamespaceRegex: ^(default)$    
              K8sContainerRegex: ^(busybox)$    
              K8sPodRegex: ^backend.+$          
              IncludeK8sLabel:                  
                app: backend
                application: prod

Skenario 2: Mengumpulkan log teks dari aplikasi tertentu

Untuk mengumpulkan log teks dari pod atau kontainer tertentu, tambahkan kondisi filter ke bidang advanced bagian logtailConfig dalam konfigurasi AliyunLogConfig. Setelah menerapkan AliyunLogConfig di kluster, log teks dari pod atau kontainer yang sesuai dengan kondisi filter akan dikumpulkan.

apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
  name: test-file                  
spec:
  project: k8s-log-c326bc86****    # Ganti nilainya dengan nama proyek sebenarnya.
  logstore: test-file                 
  logtailConfig:                   
    inputType: file                
    configName: test-file           
    inputDetail:                  
      logType: common_reg_log      
      logPath: /log/               
      filePattern: "*.log"         
      dockerFile: true             
      advanced:
        k8s:
          K8sNamespaceRegex: ^(default)$    
          K8sContainerRegex: ^(busybox)$    
          K8sPodRegex: ^backend.+$          
          IncludeK8sLabel:                  
            app: backend
            application: prod
Catatan

Berkas untuk AliyunLogConfigs dalam skenario di atas diberi nama test-stdout dan test-file. Setelah membuat berkas tersebut, Anda dapat melanjutkan ke Langkah 4: Lihat Log di Konsol SLS untuk memeriksa apakah penyimpanan log yang ditentukan telah dibuat. Jika belum, tinjau Konfigurasi Logtail dan modifikasi parameter yang relevan.

image

Langkah 3: Buat aplikasi

Setelah membuat CRD AliyunLogConfig, Simple Log Service secara otomatis mengumpulkan log pod yang dibuat kemudian. Anda dapat membuat aplikasi berikut untuk menguji pengumpulan log.

  1. Contoh ini membuat Deployment. File YAML berikut memberikan contoh. Sistem menjalankan perintah terkait setelah kontainer dimulai. Stdout dan log teks kontainer dicetak secara terus-menerus.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: backend-busybox
      labels:
        app: backend
        application: prod
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: backend
          application: prod
      template:
        metadata:
          name: backend-busybox
          labels:
            app: backend
            application: prod
        spec:
          containers:
          - args:
            - -c
            - mkdir -p /log; while true; do echo hello world; date; echo hello sls >> /log/busybox.log; sleep 1; done
            command:
            - /bin/sh
            image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28
            imagePullPolicy: Always
            name: busybox

Langkah 4: Lihat log menggunakan konsol SLS

Log aplikasi uji disimpan di SLS. Anda dapat masuk ke konsol SLS untuk melihat log yang dikumpulkan dari kontainer aplikasi.

  1. Masuk ke konsol Simple Log Service.

  2. Di bagian Projects, temukan proyek yang sesuai dengan kluster ACS (default: k8s-log-{ID kluster ACS}), lalu klik nama proyek untuk masuk ke tab Logstore.

  3. Dalam daftar Penyimpanan Log, klik nama Penyimpanan Log yang ditentukan dalam konfigurasi pengumpulan log. Di halaman yang muncul, lihat log.

    Dalam contoh ini, Anda dapat melihat stdout (test-stdout) dan log teks (test-file) di dalam kontainer aplikasi pada halaman kueri log.

    image

    image

Referensi

Untuk informasi lebih lanjut tentang cara menyelesaikan kesalahan pengumpulan log, lihat Apa yang harus saya lakukan jika terjadi kesalahan saat menggunakan Logtail untuk mengumpulkan log?