All Products
Search
Document Center

Container Service for Kubernetes:Kumpulkan log teks dari kluster Kubernetes (deploy Logtail dalam mode Sidecar)

Last Updated:Sep 09, 2025

Simple Log Service menyediakan dua metode untuk menerapkan Logtail guna mengumpulkan log Kubernetes: DaemonSet dan Sidecar. Untuk detail perbedaan antara keduanya, lihat Instal Logtail untuk Mengumpulkan Log dari Kluster Kubernetes. Topik ini menjelaskan cara menerapkan Logtail menggunakan mode Sidecar untuk mengumpulkan log teks dari kluster Kubernetes.

Prasyarat

  • Sebuah proyek dan logstore telah dibuat.

  • Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, pastikan bahwa kubectl telah terinstal.

Prosedur

Topik ini menggunakan kluster ACK yang dikelola sebagai contoh untuk menjelaskan langkah-langkah pengumpulan log teks dalam mode Sidecar:

  1. Injeksikan kontainer Logtail ke dalam pod aplikasi: Setiap pod menjalankan kontainer Logtail untuk mengumpulkan log dari semua kontainer dalam pod tersebut. Pengumpulan log dari setiap pod diisolasi.

  2. Buat kelompok mesin dengan pengenal kustom: Buat kelompok mesin untuk setiap pod. Simple Log Service mengelola semua kontainer yang perlu mengumpulkan log melalui Logtail dengan menggunakan kelompok mesin.

  3. Buat konfigurasi Logtail: Setelah konfigurasi Logtail dibuat, Logtail mengumpulkan log tambahan berdasarkan konfigurasi tersebut, lalu memproses dan mengunggah log yang dikumpulkan ke logstore yang telah dibuat.

  4. Kueri dan analisis log: Lihat data log di logstore.

Langkah 1: Injeksikan kontainer Logtail ke dalam pod aplikasi

Metode login berbeda antara kluster yang dikelola sendiri dan kluster ACK, tetapi semua langkah lainnya sama.

  1. Masuk ke Konsol Layanan Kontainer untuk Kubernetes. Di panel navigasi di sebelah kiri, klik Clusters, klik More di kolom Actions dari kluster target, lalu klik Manage ACK clusters.processed_6

  2. Tambahkan yang berikut ini ke YAML kontainer aplikasi yang ada:

    Konfigurasi YAML yang Diperlukan untuk Menginjeksikan Kontainer Logtail

    ...
        #  containers:
          #  Tambahkan konten berikut di bawah tag kontainer dalam YAML Anda untuk memasang direktori log kontainer aplikasi ke volume bersama, yang dibagikan dengan kontainer Logtail.
              volumeMounts: 
                - name: ${shared_volume_name} 
                  mountPath: ${shared_volume_path} # Pasang volume bersama ke direktori log kontainer.
                - mountPath: /tasksite # Direktori bersama untuk berkomunikasi dengan kontainer Logtail.
                  name: tasksite
            # Tambahkan kontainer sidecar Logtail.
            - name: logtail
              image: ${logtail_image}
              command: ["/bin/sh", "-c"]
              args:
                - /etc/init.d/ilogtaild start;
                  sleep 10; # Tunggu hingga konfigurasi Logtail diunduh.
                  touch /tasksite/cornerstone;
                  until [[ -f /tasksite/tombstone ]]; do sleep 1; done;
                  sleep 10; # Tunggu hingga Logtail selesai mengirim log.
                  /etc/init.d/ilogtaild stop;
              livenessProbe:
                exec:
                  command:
                    - /etc/init.d/ilogtaild
                    - status
                initialDelaySeconds: 30
                periodSeconds: 30
              env:
                # Tentukan zona waktu dalam format Region/City berdasarkan wilayah tempat kluster Kubernetes berada. Jika kluster berada di daratan Tiongkok, Anda dapat menetapkan zona waktu menjadi Asia/Shanghai.
                # Jika zona waktu yang ditentukan tidak valid, label waktu log mentah dan log yang diproses mungkin tidak cocok. Akibatnya, log mungkin diarsipkan berdasarkan titik waktu yang salah.
                - name: TZ   
                  value: "${timezone}"
                - 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"
                # Tentukan informasi lingkungan pod sebagai label 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
              volumeMounts:
                # Pasang direktori log kontainer Logtail ke volume bersama.
                - name: ${shared_volume_name}
                  mountPath: ${dir_containing_your_files}
                # Buat target pemasangan untuk berinteraksi dengan kontainer aplikasi.
                - mountPath: /tasksite
                  name: tasksite
          volumes:
            # Definisikan volume bersama kosong untuk penyimpanan log.
            - name: ${shared_volume_name}
              emptyDir: {}
            # Definisikan volume untuk komunikasi antar kontainer.
            - name: tasksite
              emptyDir:
                medium: Memory

    Parameter Utama

    Variabel

    Deskripsi

    ${timezone}

    Zona waktu kontainer.

    ${your_aliyun_user_id}

    ID akun Alibaba Cloud Anda. Untuk informasi lebih lanjut, lihat Konfigurasikan pengenal pengguna.

    ${your_machine_group_user_defined_id}

    Pengenal kustom kelompok mesin Anda. Sebagai contoh, nginx-log-sidecar.

    Penting

    Pengenal harus unik di wilayah tempat proyek Anda berada.

    ${your_region_config}

    Tentukan nilai berdasarkan ID wilayah tempat proyek Anda berada dan jenis jaringan untuk proyek Anda.

    • Contoh: Jika proyek Anda termasuk dalam wilayah Singapura, nilainya adalah ap-southeast-1 untuk jaringan internal dan ap-southeast-1-internet untuk Internet.

    ${logtail_image}

    Alamat gambar Logtail. Sebagai contoh, registry.cn-hangzhou.aliyuncs.com/log-service/logtail:latest.

    ${shared_volume_name}

    Nama volume.

    Penting

    Parameter name di bawah node volumeMounts harus sama dengan parameter name di bawah node volumes. Ini memastikan bahwa kontainer Logtail dan kontainer aplikasi dipasang ke volume yang sama.

    ${dir_containing_your_files}

    Path pemasangan. Tentukan direktori log teks kontainer yang ingin Anda kumpulkan.

    Jika Anda tidak memiliki kontainer aplikasi yang ada atau ingin menguji prosedur ini, topik ini juga menyediakan contoh YAML: Cukup ubah ALIYUN_LOGTAIL_USER_ID dalam contoh menjadi ID akun Alibaba Cloud Anda, dan pastikan wilayah ${region_id} di ALIYUN_LOGTAIL_CONFIG sama dengan wilayah proyek Simple Log Service Anda. Untuk nilainya, lihat Wilayah yang Didukung dan gantinya.

    Contoh YAML

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      annotations:
        deployment.kubernetes.io/revision: '1'
      labels:
        app: deployment-file
        cluster_label: CLUSTER-LABEL-A
      name: deployment-file
      namespace: default
    spec:
      progressDeadlineSeconds: 600
      replicas: 1
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: deployment-file
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          labels:
            app: deployment-file
            cluster_label: CLUSTER-LABEL-A
        spec:
          containers:
            - name: timestamp-test
              image: 'mirrors-ssl.aliyuncs.com/busybox:latest'
              args:
                - >-
                  while true; mkdir -p /root/log; do date '+%Y-%m-%d %H:%M:%S'
                  >>/root/log/timestamp.log; echo 1 >>/root/log/timestamp.log; echo
                  2 >>/root/log/timestamp.log; echo 3 >>/root/log/timestamp.log;
                  echo 4 >>/root/log/timestamp.log; echo 5
                  >>/root/log/timestamp.log; echo 6 >>/root/log/timestamp.log;
                  echo 7 >>/root/log/timestamp.log; echo 8
                  >>/root/log/timestamp.log; echo 9 >>/root/log/timestamp.log;
                  sleep 10; done
              command:
                - /bin/sh
                - '-c'
                - '--'
              env:
                - name: cluster_id
                  value: CLUSTER-A
              imagePullPolicy: IfNotPresent
              resources: {}
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
              volumeMounts:
                # Pasang direktori log kontainer aplikasi ke volume bersama.
                - name: test-logs
                  mountPath: /root/log
                 # Buat target pemasangan untuk berinteraksi dengan kontainer Logtail.
                - mountPath: /tasksite
                  name: tasksite
                - name: tz-config
                  mountPath: /etc/localtime
                  readOnly: true
            # Kontainer sidecar Logtail
            - name: logtail
              image: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:v1.8.7.0-aliyun
              command: ["/bin/sh", "-c"]
              args:
                - /etc/init.d/ilogtaild start;
                  sleep 10;
                  touch /tasksite/cornerstone;
                  until [[ -f /tasksite/tombstone ]]; do sleep 1; done;
                  sleep 10;
                  /etc/init.d/ilogtaild stop;
              livenessProbe:
                exec:
                  command:
                    - /etc/init.d/ilogtaild
                    - status
                initialDelaySeconds: 30
                periodSeconds: 30
              resources:
                limits:
                  cpu: 500m
                  memory: 512Mi
                requests:
                  cpu: 10m
                  memory: 30Mi
              env:
                # Tentukan zona waktu dalam format Region/City berdasarkan wilayah tempat kluster Kubernetes berada. Jika kluster berada di daratan Tiongkok, Anda dapat menetapkan zona waktu menjadi Asia/Shanghai.
                # Jika zona waktu yang ditentukan tidak valid, label waktu log mentah dan log yang diproses mungkin tidak cocok. Akibatnya, log mungkin diarsipkan berdasarkan titik waktu yang salah.
                - name: TZ
                  value: "Asia/Shanghai"
                # Ganti variabel lingkungan dengan nilai aktual.
                - name: ALIYUN_LOGTAIL_USER_ID
                  value: "12************80"
                - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
                  value: "nginx-log-sidecar"
                - name: ALIYUN_LOGTAIL_CONFIG
                  value: "/etc/ilogtail/conf/${region_id}-internet/ilogtail_config.json"
                # Tentukan informasi lingkungan pod sebagai label 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
              volumeMounts:
                # Pasang direktori log kontainer Logtail ke volume bersama.
                - name: test-logs
                  mountPath: /root/log
          volumes:
            # Definisikan volume bersama kosong untuk penyimpanan log.
            - name: test-logs
              emptyDir: {}
              # Definisikan volume untuk komunikasi antar kontainer.
            - name: tasksite
              emptyDir:
                medium: Memory
            - name: tz-config
              hostPath:
                path: /usr/share/zoneinfo/Asia/Shanghai  # Tentukan file zona waktu di server Anda.
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
  3. Jalankan kubectl apply -f untuk menerapkan konfigurasi.

  4. Jalankan kubectl describe pod untuk mendapatkan informasi berikut, yang menunjukkan bahwa kontainer Logtail berhasil diinjeksikan.image

Langkah 2: Buat kelompok mesin dengan pengenal kustom

Penting

${your_machine_group_user_defined_id} dalam YAML adalah pengenal kustom. Dalam contoh ini, nilainya adalah nginx-log-sidecar.

  1. Masuk ke Konsol Simple Log Service. Di bagian Projects, klik yang Anda inginkan.

  2. Di panel navigasi di sebelah kiri, pilih Resources > Machine Groups. Dalam daftar Machine Groups, pilih 机器组 > Create Machine Group.image

  3. Di panel Create Machine Group, masukkan informasi berikut dan klik OK.

    Parameter

    Deskripsi

    Name

    Nama kelompok mesin harus memenuhi persyaratan berikut:

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

    • Dimulai dan diakhiri dengan huruf kecil atau angka.

    • Panjangnya 2 hingga 128 karakter.

    Penting

    Setelah Anda membuat kelompok mesin, Anda tidak dapat mengubah namanya. Lanjutkan dengan hati-hati.

    Machine Group Identifier

    Pilih Custom Identifier.

    Machine Group Topic

    Opsional. Topik digunakan untuk mengidentifikasi log yang dihasilkan oleh server yang berbeda.

    Custom Identifier

    Masukkan pengenal kustom yang dikonfigurasi di Langkah 1, seperti nginx-log-sidecar.

Langkah 3: Buat konfigurasi Logtail

  1. Masuk ke Konsol Simple Log Service.

  2. Di bagian Quick Data Import, klik Import Data. Di kotak dialog Import Data, klik kartu Kubernetes - File.

    image

  3. Pilih proyek dan logstore target, lalu klik Next.

  4. Di halaman Machine Group Configurations, lakukan operasi berikut. Untuk informasi tentang kelompok mesin, lihat Kelompok Mesin.

    1. Atur Scenario ke Kubernetes Clusters dan Deployment Method ke Sidecar.

    2. Pastikan kelompok mesin target muncul dalam daftar Applied Server Groups, lalu klik Next. Kelompok mesin tersebut adalah yang dibuat di Langkah 2.

      Jika status detak jantung kelompok mesin adalah GAGAL atau tidak ada informasi mesin, klik Automatic Retry. Jika statusnya masih GAGAL, periksa apakah wilayah di ALIYUN_LOGTAIL_CONFIG dalam YAML sama dengan wilayah proyek.

      Jika masalah tetap ada, lihat Bagaimana cara saya menangani kesalahan yang terkait dengan kelompok mesin Logtail di lingkungan host?

  5. Buat konfigurasi Logtail dan klik Next. Simple Log Service mulai mengumpulkan log.

    Catatan

    Dibutuhkan sekitar 3 menit untuk membuat konfigurasi Logtail.

    Bagian ini hanya menjelaskan konfigurasi yang diperlukan. Untuk informasi tentang semua konfigurasi, lihat Konfigurasi Logtail.

    • Global Configurations

      Configuration Name: Nama konfigurasi Logtail. Nama tersebut harus unik dalam proyek tempat konfigurasi Logtail berada. Setelah dibuat, Anda tidak dapat mengubah namanya.

      image

    • Input Configurations

      • Logtail Deployment Mode: Pilih Sidecar.

      • File Path: Nama direktori dan nama file dapat berupa path lengkap atau path yang berisi karakter wildcard. Karakter wildcard termasuk tanda bintang (*) dan tanda tanya (?). Dalam contoh ini, nilai direktori adalah ${dir_containing_your_files} dalam YAML.

        • /apsara/nuwa/**/*.log menunjukkan file dengan ekstensi .log di folder /apsara/nuwa (termasuk subdirektori rekursifnya).

      image

    • Processor Configurations

      • Log Sample: Anda bisa memasukkan beberapa log. Kami sarankan memasukkan contoh log untuk membantu mengonfigurasi parameter pemrosesan dan mengurangi kompleksitas.

      • Multi-line Mode: Dalam contoh ini, log multi-baris dikumpulkan. Aktifkan fitur ini.

        • Type: Pilih Custom.

        • Processing Method If Splitting Fails: Pilih Retain Single Line.

      • Regex to Match First Line: Tentukan ekspresi reguler dan klik Validate, atau klik Generate dan Automatically Generate.

      • Processing Method: Pilih None. Untuk informasi lebih lanjut, lihat Ikhtisar Plugin Logtail untuk Pemrosesan Data.

  6. Buat indeks dan pratinjau data, lalu klik Next. Secara default, Full-text Index diaktifkan untuk Simple Log Service. Anda juga dapat secara manual membuat indeks bidang berdasarkan log yang dikumpulkan, atau klik Automatic Index Generation untuk menghasilkan indeks bidang secara otomatis. Untuk informasi lebih lanjut, lihat Buat Indeks.

Penting

Untuk menanyakan semua bidang dalam log, gunakan indeks teks penuh. Untuk menanyakan yang spesifik, gunakan indeks bidang untuk mengurangi lalu lintas indeks. Untuk analisis bidang (pernyataan SELECT), buat indeks bidang.

Langkah 4: Kueri dan analisis log

  1. Di bagian Projects konsol Simple Log Service, klik proyek yang ingin Anda kelola untuk masuk ke halaman detailnya.

    image

  2. Temukan logstore yang ingin Anda kelola, arahkan kursor ke logstore, klik ikon 图标, lalu pilih Search & Analysis untuk melihat log kluster Kubernetes Anda.

    image

Bidang log K8s

Tabel berikut menjelaskan bidang default yang termasuk dalam setiap log teks kontainer di Kubernetes.

Bidang

Deskripsi

__tag__:__hostname__

Nama host kontainer.

__tag__:__path__

Path file log dalam kontainer.

__tag__:_container_ip_

Alamat IP kontainer.

__tag__:_image_name_

Nama gambar yang digunakan oleh kontainer.

Catatan

Jika ada beberapa gambar dengan hash yang sama tetapi nama atau tag yang berbeda, konfigurasi pengumpulan akan memilih satu nama berdasarkan hash untuk pengumpulan. Tidak dapat dipastikan bahwa nama yang dipilih sesuai dengan yang didefinisikan dalam file YAML.

__tag__:_pod_name_

Nama pod.

__tag__:_namespace_

Namespace tempat pod berada.

__tag__:_pod_uid_

Pengenal unik (UID) dari pod.

Referensi