All Products
Search
Document Center

Elastic Container Instance:Kumpulkan log menggunakan CRD SLS

Last Updated:Jun 22, 2026

Topik ini menjelaskan cara menggunakan CRD SLS untuk mengonfigurasi pengumpulan log di kluster ACK Serverless, sehingga memungkinkan pengumpulan log kontainer secara otomatis dengan Simple Log Service (SLS).

Informasi latar belakang

Simple Log Service adalah layanan terpadu untuk data log. Layanan ini memungkinkan Anda mengumpulkan, mengonsumsi, mengirimkan, mengkueri, dan menganalisis data log dengan cepat tanpa perlu menulis kode. Untuk informasi selengkapnya, lihat Apa itu Simple Log Service?.

Prasyarat

Pastikan Simple Log Service telah diaktifkan. Jika layanan belum diaktifkan, Anda akan diminta untuk mengaktifkannya saat login ke Konsol Simple Log Service. Ikuti petunjuk di layar untuk menyelesaikan aktivasi.

Catatan

Pengumpulan log yang diaktifkan oleh CRD SLS hanya berlaku untuk Pod ECI yang dibuat setelahnya. Untuk mengumpulkan log dari Pod yang sudah ada, Anda harus melakukan rolling update.

Konfigurasi pengumpulan log

Setelah komponen alibaba-log-controller dideploy di kluster Anda, Anda dapat menggunakan CRD AliyunLogConfig untuk mengonfigurasi pengumpulan log.

Deploy komponen alibaba-log-controller

  1. Login ke Konsol ACK.

  2. Di pojok kiri atas bilah navigasi atas, pilih wilayah.

  3. Pada halaman Clusters, klik nama kluster ACK Serverless target untuk membuka halaman detail kluster.

  4. Deploy komponen alibaba-log-controller di kluster.

    1. Di panel navigasi sebelah kiri halaman detail kluster, pilih Operations > Add-ons.

    2. Klik tab Logs and Monitoring, temukan kartu alibaba-log-controller, lalu klik Install.

    3. Pada kotak dialog yang muncul, klik OK.

      Setelah instalasi selesai, kartu alibaba-log-controller akan menampilkan status Installed di pojok kanan atas.

Buat konfigurasi Logtail

  1. Sambungkan ke kluster ACK Serverless.

  2. Buat file konfigurasi YAML untuk CRD AliyunLogConfig.

    Penting

    Untuk menghindari deviasi konfigurasi, selalu perbarui konfigurasi dengan memodifikasi resource CRD. Perubahan yang dilakukan langsung di Konsol tidak akan disinkronkan kembali ke CRD.

    Templat YAML CRD AliyunLogConfig

    apiVersion: log.alibabacloud.com/v1alpha1     
    kind: AliyunLogConfig                         
    metadata:
      name: simple-stdout-example                 
    spec:
      project: k8s-my-project                      
      logstore: k8s-stdout                         
      logstoreMode: standard                       
      shardCount: 2                               
      lifeCycle: 90                               
      logtailConfig:                            
        inputType: plugin                          
        configName: simple-stdout-example          
        inputDetail:                               
          ...

    Tabel berikut menjelaskan parameter dasar. Untuk informasi selengkapnya tentang parameter tersebut, lihat Gunakan AliyunLogConfig untuk mengelola konfigurasi pengumpulan.

    • Parameter dasar

      Parameter

      Type

      Required

      Description

      project

      string

      No

      Nama proyek. Parameter ini secara default menggunakan proyek yang ditentukan saat Anda menginstal komponen Logtail.

      Jika proyek yang ditentukan tidak ada, proyek tersebut akan dibuat secara otomatis.

      logstore

      string

      Yes

      Nama penyimpanan log. Jika penyimpanan log yang ditentukan tidak ada, penyimpanan log tersebut akan dibuat secara otomatis.

      logstoreMode

      string

      No

      Jenis penyimpanan log. Parameter ini hanya berlaku saat penyimpanan log baru dibuat. Nilai yang valid:

      • query: Query Logstore

      • standard: Standard Logstore

      Untuk informasi selengkapnya, lihat Kelola penyimpanan log.

      shardCount

      int

      No

      Jumlah shard. Nilai default: 2. Nilai yang valid: 1 hingga 10.

      lifeCycle

      int

      No

      Periode retensi data dalam penyimpanan log, dalam satuan hari. Nilai default: 90. Nilai yang valid: 1 hingga 3650. Nilai 3650 menunjukkan penyimpanan permanen. Parameter ini hanya berlaku saat penyimpanan log baru dibuat.

      machineGroups

      array

      No

      Kelompok mesin. Saat Anda menginstal komponen Logtail, Simple Log Service secara otomatis membuat kelompok mesin bernama k8s-group-${your_k8s_cluster_id}.

      logtailConfig

      object

      Yes

      Konfigurasi Logtail. Parameter berikut termasuk di dalamnya:

      • configName: Nama konfigurasi Logtail. Nama ini harus sama dengan metadata.name.

      • inputType: Metode input log. Nilai yang valid:

        • plugin: mengumpulkan log seperti MySQL Binlog menggunakan plug-in Logtail.

        • file: mengumpulkan log dari file teks menggunakan mode tetap, seperti mode ekspresi reguler atau mode pembatas.

      • inputDetail: Pengaturan konfigurasi untuk input log.

      • outputType: Metode output log. Hanya LogService yang didukung, artinya data hanya dapat diunggah ke Simple Log Service.

      • outputDetail: Pengaturan konfigurasi untuk output log.

      • logSample: Contoh log.

      Untuk informasi selengkapnya tentang parameter tersebut, lihat Konfigurasi Logtail (legacy).

    • Filtering kontainer

      • Untuk versi Logtail sebelum 1.0.34, filtering kontainer hanya didukung melalui variabel lingkungan dan label kontainer.

        Namespace Kubernetes dan nama kontainer dipetakan ke label kontainer io.kubernetes.pod.namespace dan io.kubernetes.container.name, masing-masing. Kami menyarankan Anda menggunakan label ini untuk memfilter kontainer. Jika label ini tidak memenuhi kebutuhan Anda, gunakan daftar izin (allowlist) dan daftar larang (denylist) variabel lingkungan untuk memfilter kontainer.

      • Untuk Logtail 1.0.34 dan versi setelahnya, Anda dapat menggunakan informasi tingkat Kubernetes, seperti nama pod, namespace, nama kontainer, dan label kontainer, untuk filtering kontainer.

        Konfigurasikan parameter filtering kontainer di bidang logtailConfig.inputDetail.advanced.k8s. Parameter yang didukung adalah sebagai berikut:

        • IncludeK8sLabel: Daftar izin label Kubernetes. Hanya kontainer dengan label yang sesuai yang menjadi target pengumpulan log.

        • ExcludeK8sLabel: Daftar larang label Kubernetes. Pengumpulan log dilewati untuk kontainer dengan label yang sesuai.

        • K8sNamespaceRegex: Ekspresi reguler untuk mencocokkan namespace.

        • K8sPodRegex: Ekspresi reguler untuk mencocokkan nama pod.

        • K8sContainerRegex: Ekspresi reguler untuk mencocokkan nama kontainer.

    Contoh file YAML CRD AliyunLogConfig

    Log teks

    Simpan konten berikut sebagai log-file.yaml.

    apiVersion: log.alibabacloud.com/v1alpha1  # Gunakan nilai default. Jangan ubah.
    kind: AliyunLogConfig                      # Gunakan nilai default. Jangan ubah.
    metadata:
      name: test-file                  # Nama resource, unik dalam kluster Kubernetes saat ini.
    spec:
      project: k8s-log-c326bc86****    # Opsional. Nama proyek. Jika proyek tidak ada, sistem akan membuatnya secara otomatis.
      logstore: test-file              # Wajib. Nama penyimpanan log. Jika penyimpanan log tidak ada, sistem akan membuatnya secara otomatis.  
      logtailConfig:                   # Konfigurasi Logtail
        inputType: file                # Jenis sumber data. file = log teks. plugin = stdout.
        configName: test-file          # Nama konfigurasi Logtail. Harus sesuai dengan nama resource (metadata.name).
        inputDetail:                   # Pengaturan detail Logtail
          logType: common_reg_log      # Kumpulkan log teks dalam mode simple.
          logPath: /log/               # Path ke file log.
          filePattern: "*.log"         # Pola nama file. Karakter wildcard seperti tanda bintang (*) dan tanda tanya (?) didukung. Contoh: log_*.log.
          dockerFile: true             # Untuk mengumpulkan log dari file dalam kontainer, atur dockerFile ke true.
          advanced:                    # Pengaturan filtering kontainer.
            k8s:
              K8sNamespaceRegex: ^(default)$
              K8sPodRegex: '^(eci-sls-demo.*)$'

    Output standar

    Simpan konten berikut sebagai log-stdout.yaml.

    apiVersion: log.alibabacloud.com/v1alpha1   # Gunakan nilai default. Jangan ubah.
    kind: AliyunLogConfig                       # Gunakan nilai default. Jangan ubah.
    metadata:
      name: test-stdout               # Nama resource, unik dalam kluster Kubernetes saat ini.
    spec:
      project: k8s-log-c326bc86****   # Opsional. Nama proyek. Jika proyek tidak ada, sistem akan membuatnya secara otomatis.
      logstore: test-stdout           # Wajib. Nama penyimpanan log. Jika penyimpanan log tidak ada, sistem akan membuatnya secara otomatis.                 
      shardCount: 2                   # Opsional. Jumlah shard. Default: 2. Nilai yang valid: 1 hingga 10.                         
      lifeCycle: 90                   # Opsional. Periode retensi log dalam satuan hari (berlaku untuk penyimpanan log baru). Default: 90. Rentang: 1–3650 (3650 berarti permanen).
      logtailConfig:                  # Konfigurasi Logtail
        inputType: plugin             # Jenis sumber data. file = log teks. plugin = stdout.                                
        configName: test-stdout       # Nama konfigurasi Logtail. Harus sesuai dengan nama resource (metadata.name).
        inputDetail:                  # Pengaturan detail Logtail
          plugin:
            inputs:
              - type: service_docker_stdout
                detail:
                  Stdout: true
                  Stderr: true
    #              IncludeEnv:
    #                aliyun_logs_test-stdout: "stdout"
  3. Buat CRD AliyunLogConfig.

    Jalankan perintah berikut untuk menerapkan konfigurasi. Setelah konfigurasi Logtail berlaku, Logtail mulai mengumpulkan log stdout atau log teks dari kontainer yang sesuai dan mengirimkannya ke Simple Log Service.

    kubectl apply -f log-file.yaml
    kubectl apply -f log-stdout.yaml
    Penting

    Setelah log dikumpulkan, Anda harus membuat indeks sebelum dapat mengkueri dan menganalisis log di penyimpanan log. Untuk informasi selengkapnya, lihat Buat Indeks.

Uji pengumpulan log

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

  1. Buat aplikasi.

    Contoh berikut menggunakan Penyebaran (Deployment). Setelah dijalankan, kontainer terus-menerus mencetak log ke stdout dan file log.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: eci-sls-demo
      labels:
        app: sls
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sls
      template:
        metadata:
          name: sls-test
          labels:
            app: sls
            alibabacloud.com/eci: "true" 
        spec:
          containers:
          - args:
            - -c
            - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;done
            command:
            - /bin/sh
            image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30
            imagePullPolicy: Always
            name: busybox

    Simpan file YAML di atas sebagai test-sls-crd.yaml dan jalankan perintah berikut untuk membuat aplikasi.

    kubectl create -f test-sls-crd.yaml
  2. Verifikasi status aplikasi.

    kubectl get pod

    Output yang diharapkan:

    NAME                            READY   STATUS    RESTARTS   AGE
    eci-sls-demo-7bf8849b9f-cgpbn   1/1     Running   0          2m14s
  3. Lihat log.

    1. Login ke Konsol Simple Log Service.

    2. Klik nama proyek tujuan.

    3. Temukan penyimpanan log tujuan dan klik namanya untuk melihat log.

      Log teks

      Di Konsol Simple Log Service, pilih penyimpanan log test-file untuk melihat log file yang dikumpulkan. Entri log mencakup bidang kunci seperti __container_name__ dengan nilai sls, __image_name__ dengan nilai registry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30, __namespace__ dengan nilai default, dan content dengan nilai hello sls, yang mengonfirmasi bahwa log dari kontainer busybox berhasil dikumpulkan.

      Output standar

      Di Konsol Simple Log Service, pilih penyimpanan log test-stdout dari daftar di sebelah kiri untuk melihat log stdout yang dikumpulkan. Entri log berisi bidang seperti _container_name_ (nilai: sls), _image_name_ (URL image busybox), _namespace_ (default), dan _source_ (stdout). Bidang content menampilkan output kontainer, seperti hello world.

Nonaktifkan pengumpulan log

Setelah Anda membuat CRD konfigurasi pengumpulan log, sistem secara otomatis mengumpulkan log dari semua Pod yang sesuai. Untuk Pod yang tidak ingin Anda kumpulkan log-nya, Anda dapat menambahkan anotasi k8s.aliyun.com/eci-sls-enable: "false" untuk menonaktifkan pengumpulan log. Hal ini mencegah sistem membuat instans Logtail secara otomatis dan menghindari pemborosan sumber daya.

Penting
  • Anotasi harus ditambahkan ke metadata dalam file konfigurasi pod. Misalnya, saat membuat Deployment, Anda harus menambahkan anotasi di bagian spec.template.metadata.

  • Anotasi terkait Elastic Container Instance hanya diterapkan saat pod dibuat. Menambahkan atau memodifikasi anotasi ini pada pod yang sudah ada tidak akan berpengaruh.

Contoh:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eci-sls-demo2
  labels:
    app: sls
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sls
  template:
    metadata:
      name: sls-test
      labels:
        app: sls
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-sls-enable: "false"    # Nonaktifkan pengumpulan log.
    spec:
      containers:
      - args:
        - -c
        - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;
          done
        command:
        - /bin/sh
        image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
        imagePullPolicy: Always
        name: busybox