全部产品
Search
文档中心

:Kumpulkan log dengan menggunakan Simple Log Service CRDs

更新时间:Jun 26, 2025

Topik ini menjelaskan cara menggunakan CustomResourceDefinition (CRD) Simple Log Service untuk mengonfigurasi Simple Log Service agar secara otomatis mengumpulkan log kontainer dari pod berbasis Elastic Container Instance dalam ACK One registered cluster.

Informasi latar belakang

Simple Log Service adalah layanan pencatatan data ujung ke ujung. Anda dapat menggunakan Simple Log Service untuk mengumpulkan, mengonsumsi, mengirimkan, menanyakan, dan menganalisis data log tanpa perlu melakukan pengembangan lebih lanjut. Untuk informasi lebih lanjut, lihat Apa itu Simple Log Service?.

Prasyarat

Simple Log Service harus diaktifkan untuk kluster ACK Serverless. Masuk ke Konsol Simple Log Service. Jika Simple Log Service belum diaktifkan untuk kluster tersebut, Anda akan diminta untuk mengikuti petunjuk di layar guna mengaktifkan layanan.

Catatan penggunaan

Fitur pengumpulan log yang diaktifkan menggunakan Simple Log Service CRD hanya berlaku untuk pod Elastic Container Instance yang dibuat setelah CRD dibuat. Jika Anda ingin mengumpulkan log dari pod yang sudah ada, Anda harus melakukan rilis bergulir untuk pod tersebut.

Konfigurasikan pengumpulan log

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

Terapkan logtail-ds

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

  2. Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih Operations > Add-ons.

  3. Klik tab Logs and Monitoring, temukan kartu logtail-ds, lalu klik Install.

  4. Di pesan yang muncul, klik OK.

Buat konfigurasi Logtail

  1. Buat file konfigurasi YAML dari CRD AliyunLogConfig.

    Penting

    Setelah Anda membuat CRD AliyunLogConfig, Anda dapat melihat Logstore dan konfigurasi Logtail yang dihasilkan di Konsol Simple Log Service. Jika Anda menggunakan CRD untuk membuat konfigurasi Logtail dan memodifikasi konfigurasi di Konsol Simple Log Service, modifikasi tersebut tidak disinkronkan ke CRD. Jika Anda ingin memperbarui konfigurasi Logtail, ubah sumber daya CRD AliyunLogConfig. Hindari operasi di Konsol Simple Log Service untuk mencegah ketidaksesuaian konfigurasi.

    Template 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:                               
          ...
    • Parameter Dasar

      Parameter

      Tipe

      Diperlukan

      Deskripsi

      project

      string

      Tidak

      Nama proyek. Nilai defaultnya adalah nama proyek yang Anda gunakan untuk menginstal komponen Logtail.

      Jika Anda ingin membuat proyek, tentukan nama untuk proyek tersebut. Jika proyek tidak ada, sistem akan otomatis membuat proyek tersebut.

      logstore

      string

      Ya

      Nama Logstore. Jika Logstore yang ditentukan tidak ada, sistem akan otomatis membuat Logstore.

      logstoreMode

      string

      Tidak

      Tipe Logstore. Parameter ini hanya berlaku saat Anda membuat Logstore. Nilai valid:

      • query: Logstore untuk query

      • standard: Logstore Standar

      Untuk informasi lebih lanjut, lihat Kelola Logstore.

      shardCount

      int

      Tidak

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

      lifeCycle

      int

      Tidak

      Periode penyimpanan data di Logstore. Nilai valid: 1 hingga 3650. Nilai default: 90. Unit: hari. Nilai 3650 menandakan bahwa data disimpan secara permanen di Logstore. Parameter ini hanya berlaku saat Anda membuat Logstore.

      machineGroups

      array

      Tidak

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

      logtailConfig

      object

      Ya

      Konfigurasi Logtail. Konfigurasi ini mencakup parameter berikut:

      • configName: nama konfigurasi Logtail. Nama tersebut harus sama dengan nama yang ditentukan di metadata.name.

      • inputType: tipe input log. Nilai valid:

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

        • file: mengumpulkan log teks dalam mode tetap, seperti mode ekspresi reguler dan mode pemisah.

      • inputDetail: konfigurasi untuk input log.

      • outputType: tipe output log. Atur nilainya ke LogService. Log hanya dapat diunggah ke Simple Log Service.

      • outputDetail: konfigurasi untuk output log.

      • logSample: contoh log.

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

    • Penyaringan Kontainer

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

        Namespace kluster Kubernetes dan nama kontainer dalam kluster Kubernetes dapat dipetakan ke label kontainer. Nilai parameter Label Name untuk namespace adalah io.kubernetes.pod.namespace. Nilai parameter Label Name untuk nama kontainer adalah io.kubernetes.container.name. Kami merekomendasikan Anda menggunakan dua label kontainer tersebut untuk menyaring kontainer. Jika label kontainer tidak memenuhi persyaratan bisnis Anda, Anda dapat menggunakan daftar putih variabel lingkungan atau daftar hitam variabel lingkungan untuk menyaring kontainer.

      • Jika Anda menggunakan Logtail versi 1.0.34 atau yang lebih baru, Anda dapat menyaring kontainer berdasarkan informasi tingkat Kubernetes, seperti nama pod, namespace, nama kontainer, dan label kontainer.

        Parameter penyaringan kontainer harus dikonfigurasi di bidang logtailConfig.inputDetail.advanced.k8s. Parameter yang didukung:

        • IncludeK8sLabel: daftar putih label Kubernetes yang menentukan kontainer dari mana Anda ingin mengumpulkan data.

        • ExcludeK8sLabel: daftar hitam label Kubernetes yang menentukan kontainer dari mana Anda tidak mengumpulkan data.

        • K8sNamespaceRegex: namespace.

        • K8sPodRegex: nama pod.

        • K8sContainerRegex: nama kontainer.

    Untuk informasi lebih lanjut, lihat Kumpulkan log teks dari kontainer Kubernetes dalam mode DaemonSet dan Kumpulkan stdout dan stderr dari kontainer Kubernetes dalam mode DaemonSet (versi lama).

    File Konfigurasi YAML Sampel untuk CRD AliyunLogConfig

    File konfigurasi YAML sampel untuk CRD yang digunakan untuk mengumpulkan log teks

    Buat file bernama log-file.yaml dan salin template berikut ke dalam file.

    apiVersion: log.alibabacloud.com/v1alpha1  # Gunakan nilai default. Anda tidak perlu memodifikasi parameter ini. 
    kind: AliyunLogConfig                      # Gunakan nilai default. Anda tidak perlu memodifikasi parameter ini. 
    metadata:
      name: test-file                  # Nama sumber daya, yang unik di kluster Kubernetes saat ini. 
    spec:
      project: k8s-log-c326bc86****    # Opsional. Nama proyek. Jika proyek tidak ada, sistem secara otomatis membuat proyek.
      logstore: test-file              # Diperlukan. Nama Logstore. Jika Logstore tidak ada, sistem secara otomatis membuat Logstore.   
      logtailConfig:                   # Konfigurasi Logtail.
        inputType: file                # Tipe sumber data. Nilai file menentukan log teks, dan nilai plugin menentukan log stdout.
        configName: test-file          # Nama konfigurasi Logtail. Nama tersebut harus sama dengan nama yang ditentukan di metadata.name. 
        inputDetail:                   # Detail konfigurasi Logtail.
          logType: common_reg_log      # Kumpulkan log teks dalam mode sederhana.
          logPath: /log/               # Jalur file log.
          filePattern: "*.log"         # Nama file log. Nama tersebut dapat berisi tanda bintang (*) dan tanda tanya (?). Contoh: log_*.log. 
          dockerFile: true             # Tentukan apakah akan mengumpulkan log dari kontainer docker.
          advanced:                    # Konfigurasikan kondisi filter untuk kontainer.
            k8s:
              K8sNamespaceRegex: ^(default)$
              K8sPodRegex: '^(eci-sls-demo.*)$'

    File konfigurasi YAML sampel untuk CRD yang digunakan untuk mengumpulkan log stdout

    Buat file bernama log-stdout.yaml dan salin template berikut ke dalam file.

    apiVersion: log.alibabacloud.com/v1alpha1   # Gunakan nilai default. Anda tidak perlu memodifikasi parameter ini. 
    kind: AliyunLogConfig                       # Gunakan nilai default. Anda tidak perlu memodifikasi parameter ini. 
    metadata:
      name: test-stdout               # Nama sumber daya. Nama tersebut harus unik di kluster Kubernetes saat ini. 
    spec:
      project: k8s-log-c326bc86****   # Opsional. Nama proyek. Jika proyek tidak ada, sistem secara otomatis membuat proyek.
      logstore: test-stdout           # Diperlukan. Nama Logstore. Jika Logstore tidak ada, sistem secara otomatis membuat Logstore.                  
      shardCount: 2                   # Opsional. Jumlah shard. Nilai default: 2. Nilai valid: 1, 2, 3, 4, 5, 6, 7, 8, 9, dan 10.                         
      lifeCycle: 90                   # Opsional. Periode penyimpanan log di Logstore. Parameter ini hanya berlaku saat Anda membuat Logstore. Nilai valid: 1 hingga 3650. Nilai default: 90. Unit: hari. Nilai 3650 menandakan bahwa log disimpan secara permanen.
      logtailConfig:                  # Konfigurasi Logtail.
        inputType: plugin             # Tipe sumber data. Nilai file menentukan log teks. Nilai plugin menentukan log stdout.                                
        configName: test-stdout       # Nama konfigurasi Logtail. Nama tersebut harus sama dengan nama sumber daya yang ditentukan di metadata.name. 
        inputDetail:                  # Detail konfigurasi Logtail.
          plugin:
            inputs:
              - type: service_docker_stdout
                detail:
                  Stdout: true
                  Stderr: true
    #              IncludeEnv:
    #                aliyun_logs_test-stdout: "stdout"
  2. Buat CRD AliyunLogConfig.

    Kode berikut memberikan contoh perintah. Setelah konfigurasi Logtail diterapkan, Logtail mengumpulkan log stdout atau teks dari setiap kontainer, lalu mengirimkan log yang dikumpulkan ke Simple Log Service.

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

    Setelah log dikumpulkan, Anda harus membuat indeks. Kemudian, Anda dapat menanyakan dan menganalisis log di Logstore. Untuk informasi lebih lanjut, lihat Buat Indeks.

Uji pengumpulan log

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

  1. Buat aplikasi.

    File YAML sampel berikut menjelaskan cara membuat Deployment. Dalam contoh ini, perintah relevan dijalankan untuk terus menampilkan stdout dan file log setelah kontainer dimulai.

    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

    Buat file bernama test-sls-crd.yaml dan salin template file YAML sebelumnya ke dalam file. Jalankan perintah berikut untuk membuat aplikasi:

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

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

    3. Temukan Logstore tempat log kontainer Anda disimpan. Klik nama Logstore untuk melihat log.

      Pengumpulan log teks

      日志crd1

      Pengumpulan log stdout

      日志crd0

Nonaktifkan pengumpulan log

Setelah Anda membuat CRD AliyunLogConfig, sistem secara otomatis mengumpulkan log semua pod yang memenuhi syarat. Jika Anda tidak ingin mengumpulkan log pod tertentu, Anda dapat menambahkan anotasi k8s.aliyun.com/eci-sls-enable: "false" ke bagian metadata pod untuk menonaktifkan pengumpulan log. Ini mencegah pemborosan sumber daya yang disebabkan oleh pembuatan otomatis konfigurasi Logtail.

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

  • Untuk menggunakan fitur Elastic Container Instance, Anda hanya dapat menambahkan anotasi saat membuat pod berbasis Elastic Container Instance. Jika Anda menambahkan atau memodifikasi anotasi saat memperbarui pod, anotasi tersebut tidak berlaku.

Konfigurasi sampel:

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"    # Menonaktifkan 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