全部产品
Search
文档中心

Elastic Container Instance:Kumpulkan log menggunakan CRD SLS

更新时间:Dec 25, 2025

Topik ini menjelaskan cara menggunakan Custom Resource Definition (CRD) Simple Log Service (SLS) di kluster serverless Alibaba Cloud Container Service for Kubernetes (ACK) untuk mengonfigurasi dan mengotomatiskan pengumpulan log kontainer.

Informasi latar belakang

Alibaba Cloud Simple Log Service (SLS) adalah layanan terpadu untuk data log yang memungkinkan Anda mengumpulkan, mengonsumsi, mengirimkan, mengkueri, dan menganalisis data log tanpa perlu pengembangan tambahan. Untuk informasi selengkapnya, lihat Apa itu Simple Log Service?.

Prasyarat

Pastikan Simple Log Service telah diaktifkan. Jika layanan belum diaktifkan saat Anda masuk ke Konsol Simple Log Service, sebuah prompt akan muncul. Ikuti petunjuk di layar untuk mengaktifkan layanan tersebut.

Catatan penggunaan

Pengumpulan log yang diaktifkan oleh CRD SLS hanya berlaku untuk Pod Elastic Container Instance (ECI) yang dibuat setelah CRD dikonfigurasi. Untuk mengumpulkan log dari Pod yang sudah ada, Anda harus melakukan penyebaran bergulir.

Konfigurasi pengumpulan log

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

Terapkan komponen alibaba-log-controller

  1. Masuk ke Konsol Container Service for Kubernetes (ACK).

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

  3. Pada halaman Clusters, klik nama kluster ACK serverless target untuk membuka halaman manajemennya.

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

    1. Di panel navigasi sebelah kiri, pilih Operations & Management > Add-ons.

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

    3. Pada kotak dialog yang muncul, klik Confirm.

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

Buat konfigurasi pengumpulan Logtail

  1. Sambungkan ke kluster ACK serverless.

  2. Anda dapat membuat file YAML untuk CRD konfigurasi pengumpulan log.

    Penting

    Setelah membuat CRD AliyunLogConfig, Anda dapat melihat Logstore dan konfigurasi Logtail yang dihasilkan di Konsol Simple Log Service. Namun, modifikasi yang dilakukan di konsol tidak disinkronkan ke CRD. Untuk memperbarui konfigurasi, ubah resource CRD secara langsung. Jangan ubah konfigurasi di konsol karena dapat menyebabkan ketidakkonsistenan.

    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 umum. Untuk informasi selengkapnya tentang pengaturan parameter, lihat Kelola konfigurasi pengumpulan menggunakan AliyunLogConfig.

    • Parameter dasar

      Parameter

      Tipe

      Wajib

      Deskripsi

      project

      string

      Tidak

      Nama proyek. Nilai default adalah proyek yang ditentukan saat Anda menginstal komponen Logtail.

      Untuk membuat proyek baru, masukkan nama kustom. Jika proyek tidak ada, sistem akan membuatnya secara otomatis.

      logstore

      string

      Ya

      Nama penyimpanan log. Jika penyimpanan log yang ditentukan tidak ada, sistem akan membuatnya secara otomatis.

      logstoreMode

      string

      Tidak

      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

      Tidak

      Jumlah shard. Nilai default: 2. Rentang nilai: 1 hingga 10.

      lifeCycle

      int

      Tidak

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

      machineGroups

      array

      Tidak

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

      logtailConfig

      object

      Ya

      Konfigurasi Logtail. Termasuk parameter berikut:

      • configName: Nama konfigurasi Logtail. Harus sama dengan metadata.name.

      • inputType: Metode input log. Nilai yang valid:

        • plugin: Mengumpulkan log, seperti data binary logging (Binlog) MySQL, menggunakan plugin Logtail.

        • file: Mengumpulkan log dari file teks dalam mode tetap, seperti mode regex atau mode pemisah.

      • inputDetail: Konfigurasi untuk input log.

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

      • outputDetail: Konfigurasi untuk output log.

      • logSample: Contoh log.

      Untuk deskripsi parameter lengkap, lihat Konfigurasi Logtail (Legacy).

    • Filtering kontainer

      • Untuk versi Logtail sebelum 1.0.34, Anda hanya dapat memfilter kontainer menggunakan variabel lingkungan dan label kontainer.

        Namespace Kubernetes dan nama kontainer dipetakan ke label kontainer io.kubernetes.pod.namespace dan io.kubernetes.container.name. Disarankan menggunakan dua label ini untuk memfilter kontainer. Jika tidak memenuhi kebutuhan Anda, gunakan daftar hitam dan daftar putih variabel lingkungan untuk memfilter kontainer.

      • Untuk Logtail 1.0.34 dan versi lebih baru, Anda dapat menggunakan informasi tingkat Kubernetes—seperti nama pod, namespace, nama kontainer, dan label kontainer—untuk memfilter kontainer.

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

        • IncludeK8sLabel: Daftar putih label Kubernetes. Menentukan kontainer dari mana log dikumpulkan.

        • ExcludeK8sLabel: Daftar hitam label Kubernetes. Menentukan kontainer dari mana log tidak dikumpulkan.

        • K8sNamespaceRegex: Menentukan namespace.

        • K8sPodRegex: Menentukan nama pod.

        • K8sContainerRegex: Menentukan nama kontainer.

    Contoh YAML CRD AliyunLogConfig

    Contoh YAML CRD log teks

    Simpan konten berikut sebagai log-file.yaml.

    apiVersion: log.alibabacloud.com/v1alpha1  # Gunakan nilai default. Anda tidak perlu mengubah parameter ini.
    kind: AliyunLogConfig                      # Gunakan nilai default. Anda tidak perlu mengubah parameter ini.
    metadata:
      name: test-file                  # Nama resource, yang harus unik di 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. Nilai file menunjukkan log teks, dan nilai plugin menunjukkan output standar.
        configName: test-file          # Nama konfigurasi Logtail. Harus sama dengan nama resource (metadata.name).
        inputDetail:                   # Detail konfigurasi Logtail.
          logType: common_reg_log      # Mengumpulkan log teks dalam mode simple.
          logPath: /log/               # Jalur tempat file log disimpan.
          filePattern: "*.log"         # Nama file log. Karakter wildcard, seperti tanda bintang (*) dan tanda tanya (?), didukung. Contoh: log_*.log.
          dockerFile: true             # Mengumpulkan file dari kontainer. Atur dockerFile ke true.
          advanced:                    # Menetapkan kondisi filter kontainer.
            k8s:
              K8sNamespaceRegex: ^(default)$
              K8sPodRegex: '^(eci-sls-demo.*)$'

    Contoh YAML CRD output standar

    Simpan konten berikut sebagai log-stdout.yaml.

    apiVersion: log.alibabacloud.com/v1alpha1   # Gunakan nilai default. Anda tidak perlu mengubah parameter ini.
    kind: AliyunLogConfig                       # Gunakan nilai default. Anda tidak perlu mengubah parameter ini.
    metadata:
      name: test-stdout               # Nama resource, yang harus unik di 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. Nilai default: 2. Rentang nilai: 1 hingga 10.
      lifeCycle: 90                   # Opsional. Periode retensi log di penyimpanan log, dalam satuan hari. Parameter ini hanya berlaku saat penyimpanan log baru dibuat. Nilai default: 90. Rentang nilai: 1 hingga 3650. Nilai 3650 menunjukkan retensi permanen.
      logtailConfig:                  # Konfigurasi Logtail.
        inputType: plugin             # Jenis sumber data. Nilai file menunjukkan log teks, dan nilai plugin menunjukkan output standar.
        configName: test-stdout       # Nama konfigurasi Logtail. Harus sama dengan nama resource (metadata.name).
        inputDetail:                  # Detail konfigurasi Logtail.
          plugin:
            inputs:
              - type: service_docker_stdout
                detail:
                  Stdout: true
                  Stderr: true
    #              IncludeEnv:
    #                aliyun_logs_test-stdout: "stdout"
  3. Buat CRD AliyunLogConfig.

    Jalankan perintah yang sesuai untuk membuat CRD AliyunLogConfig. Setelah konfigurasi Logtail berlaku, Logtail mulai mengumpulkan output standar atau log teks dari setiap kontainer 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 menganalisisnya di penyimpanan log. Untuk informasi selengkapnya, lihat Buat indeks.

Uji pengumpulan log

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

  1. Buat aplikasi.

    File YAML berikut adalah contoh cara membuat Penyebaran. Dalam contoh ini, setelah kontainer dimulai, ia menjalankan perintah yang terus-menerus mencetak output standar 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 konten YAML di atas sebagai test-sls-crd.yaml dan jalankan perintah berikut untuk membuat aplikasi.

    kubectl create -f test-sls-crd.yaml
  2. Periksa 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. Masuk ke Konsol Simple Log Service.

    2. Klik nama proyek target.

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

      Log teks

      日志crd1

      Output standar

      日志crd0

Nonaktifkan pengumpulan log

Setelah membuat CRD AliyunLogConfig, sistem secara otomatis mengumpulkan log dari semua Pod yang memenuhi kondisi yang ditentukan. Untuk mencegah pengumpulan log dari Pod tertentu, tambahkan anotasi k8s.aliyun.com/eci-sls-enable: "false" ke metadata Pod. Praktik ini mencegah pemborosan resource akibat pembuatan otomatis konfigurasi Logtail.

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

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

Kode berikut memberikan contoh konfigurasi:

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