All Products
Search
Document Center

Simple Log Service:Kumpulkan log kluster Kubernetes melalui sidecar Logtail

Last Updated:Mar 26, 2026

Layanan Log Sederhana mendukung dua mode penyebaran Logtail untuk pengumpulan log Kubernetes: DaemonSet dan Sidecar. Dalam mode Sidecar, setiap Pod menjalankan kontainer Logtail khusus yang hanya mengumpulkan log dari kontainer dalam Pod tersebut, sehingga pengumpulan terisolasi per Pod. Topik ini memandu Anda menyebar Logtail dalam mode Sidecar untuk mengumpulkan log teks dari kluster ACK yang dikelola.

Untuk perbandingan antara mode DaemonSet dan Sidecar, lihat Instal Logtail untuk mengumpulkan log dari kluster Kubernetes.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Cara kerja

Menyiapkan pengumpulan log berbasis Sidecar melibatkan empat langkah:

  1. Sisipkan kontainer Logtail ke setiap Pod aplikasi. Logtail berjalan sebagai sidecar bersama kontainer aplikasi Anda, berbagi volume untuk mengakses file log. Pengumpulan diisolasi per Pod.

  2. Buat kelompok mesin dengan pengenal kustom. Layanan Log Sederhana menggunakan kelompok mesin untuk mengelola instans Logtail yang mengumpulkan log. Setiap Pod mendaftarkan dirinya menggunakan pengenal kustom yang Anda definisikan dalam YAML.

  3. Create a Logtail configuration. Setelah konfigurasi diterapkan, Logtail mengumpulkan data log inkremental dan mengunggahnya ke Logstore.

  4. Kueri dan analisis log. Lihat serta cari log yang telah dikumpulkan di Konsol Layanan Log Sederhana.

Dua nilai dibagikan di seluruh langkah dan harus sesuai secara eksak:
ALIYUN_LOGTAIL_USER_DEFINED_ID yang Anda atur dalam YAML (Langkah 1) harus sesuai dengan Custom Identifier yang Anda masukkan saat membuat kelompok mesin (Langkah 2).
Jalur pemasangan ${dir_containing_your_files} dalam YAML (Langkah 1) harus sesuai dengan File Path yang Anda konfigurasi dalam konfigurasi Logtail (Langkah 3).

Langkah 1: Sisipkan kontainer Logtail ke dalam Pod aplikasi

Metode login berbeda antara kluster yang dikelola sendiri dan kluster ACK. Semua langkah lainnya sama.
  1. Login ke Konsol Container Service for Kubernetes. Di panel navigasi kiri, klik Clusters, klik More di kolom Actions kluster target, lalu klik Manage ACK clusters.processed_6

  2. Tambahkan cuplikan berikut ke YAML kontainer aplikasi yang sudah ada. Konfigurasi ini menyisipkan kontainer sidecar logtail dan menyiapkan dua volume bersama: satu untuk file log dan satu lagi untuk koordinasi siklus hidup antara kontainer aplikasi dan Logtail.

    PlaceholderDeskripsiContoh
    ${timezone}Zona waktu kontainer, dalam format Region/City. Zona waktu yang tidak valid menyebabkan perbedaan antara timestamp log mentah dan log yang diproses, sehingga log diarsipkan pada waktu yang salah.Asia/Shanghai
    ${your_aliyun_user_id}ID akun Alibaba Cloud Anda. Lihat Konfigurasikan pengenal pengguna.12************80
    ${your_machine_group_user_defined_id}Pengenal kustom untuk kelompok mesin Anda. Harus unik dalam wilayah proyek Anda. Nilai ini harus sesuai dengan Custom Identifier yang Anda masukkan di Langkah 2.nginx-log-sidecar
    ${your_region_config}Diturunkan dari wilayah proyek Layanan Log Sederhana Anda dan jenis jaringan. Untuk jaringan internal, gunakan ID wilayah langsung (misalnya, ap-southeast-1). Untuk Internet, tambahkan -internet (misalnya, ap-southeast-1-internet).ap-southeast-1
    ${logtail_image}Gambar kontainer Logtail.registry.cn-hangzhou.aliyuncs.com/log-service/logtail:latest
    ${shared_volume_name}Nama volume. name di bawah volumeMounts dan name di bawah volumes harus identik, sehingga kontainer aplikasi dan Logtail memasang volume yang sama.test-logs
    ${dir_containing_your_files}Jalur pemasangan di dalam kontainer Logtail. Atur ke direktori yang berisi log teks yang ingin Anda kumpulkan. Nilai ini harus sesuai dengan File Path yang Anda konfigurasi di Langkah 3./root/log
    ...
    #  containers:
      #  Tambahkan konten berikut di bawah tag containers 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 komunikasi 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 Tiongkok daratan, Anda dapat mengatur zona waktu ke 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 titik 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 agar kontainer dapat berkomunikasi satu sama lain.
        - name: tasksite
          emptyDir:
            medium: Memory

    Ganti placeholder berikut dengan nilai aktual Anda. Jika Anda tidak memiliki aplikasi yang sudah ada atau ingin menguji penyiapan secara end-to-end, gunakan contoh YAML lengkap berikut. Ganti ALIYUN_LOGTAIL_USER_ID dengan ID akun Alibaba Cloud Anda dan perbarui ${region_id} dalam ALIYUN_LOGTAIL_CONFIG agar sesuai dengan wilayah proyek Layanan Log Sederhana Anda. Lihat Wilayah yang didukung untuk nilai yang valid.

    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 titik 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 Tiongkok daratan, Anda dapat mengatur zona waktu ke 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 agar kontainer dapat berkomunikasi satu sama lain.
            - 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 <your-yaml-file> untuk menerapkan konfigurasi.

  4. Jalankan kubectl describe pod <pod-name> untuk memastikan kontainer Logtail berhasil disisipkan. Output harus mencantumkan kontainer logtail dalam spesifikasi Pod.image

Langkah 2: Buat kelompok mesin dengan pengenal kustom

Penting

Pengenal kustom yang Anda masukkan di sini harus sesuai dengan nilai ALIYUN_LOGTAIL_USER_DEFINED_ID yang diatur di Langkah 1. Dalam contoh YAML, nilai ini adalah nginx-log-sidecar.

  1. Login ke Konsol Layanan Log Sederhana. Di bagian Projects, klik proyek yang Anda inginkan.

  2. Di panel navigasi kiri, pilih Resources > Machine Groups. Di daftar Machine Groups, klik 机器组 dan pilih Create Machine Group.image

  3. Di panel Create Machine Group, isi bidang berikut dan klik OK.

    ParameterDeskripsi
    NameNama kelompok mesin hanya boleh menggunakan huruf kecil, angka, tanda hubung (-), dan garis bawah (_); dimulai dan diakhiri dengan huruf kecil atau angka; serta panjang 2–128 karakter. Nama tidak dapat diubah setelah dibuat.
    Machine Group IdentifierPilih Custom Identifier.
    Machine Group Topic(Opsional) Topik yang mengidentifikasi log dari server berbeda.
    Custom IdentifierMasukkan nilai yang sama dengan ALIYUN_LOGTAIL_USER_DEFINED_ID dari Langkah 1, misalnya, nginx-log-sidecar.

Langkah 3: Buat konfigurasi Logtail

Membuat konfigurasi Logtail memerlukan waktu sekitar 3 menit.
  1. Login ke Konsol Layanan Log Sederhana.

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

    image

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

  4. Di halaman Machine Group Configurations:

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

    2. Konfirmasi bahwa kelompok mesin yang dibuat di Langkah 2 muncul dalam daftar Applied Server Groups, lalu klik Next. Jika status heartbeat menunjukkan FAIL atau tidak ada informasi mesin yang muncul, klik Automatic Retry. Jika masih gagal, verifikasi bahwa wilayah dalam ALIYUN_LOGTAIL_CONFIG dalam YAML Anda sesuai dengan wilayah proyek Layanan Log Sederhana Anda. Untuk troubleshooting lebih lanjut, lihat Bagaimana cara mengatasi error yang terkait dengan kelompok mesin Logtail di lingkungan host?

  5. Konfigurasikan pengaturan Logtail. Untuk semua opsi yang tersedia, lihat Konfigurasi Logtail. Pengaturan berikut wajib diisi:

    • Global configurations Configuration Name: Harus unik dalam proyek. Nama tidak dapat diubah setelah dibuat. image

    • Input configurations

      • Logtail Deployment Mode: Pilih Sidecar.

      • File Path: Direktori dan nama file, baik sebagai jalur lengkap maupun menggunakan karakter wildcard (* dan ?). Atur ke jalur yang sama dengan `${dir_containing_your_files}` dalam YAML Anda dari Langkah 1. Misalnya, /apsara/nuwa/**/*.log mencocokkan semua file .log di bawah /apsara/nuwa dan subdirektorinya. image

    • Processor configurations

      • Log Sample: Memasukkan sampel log membantu mengonfigurasi parameter pemrosesan secara akurat.

      • Multi-line Mode: Aktifkan ini untuk log multi-baris.

        • Type: Pilih Custom.

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

        • Regex to Match First Line: Masukkan regex dan klik Validate, atau klik Generate > Automatically Generate.

      • Processing Method: Pilih None. Untuk opsi lainnya, lihat Ikhtisar plugin Logtail untuk pemrosesan data.

  6. Buat indeks dan pratinjau data yang dikumpulkan, lalu klik Next. Full-text Index diaktifkan secara default. Untuk mengindeks bidang tertentu, buat indeks bidang secara manual atau klik Automatic Index Generation. Untuk informasi lebih lanjut, lihat Buat indeks. Saat membuat indeks, pertimbangkan bidang metadata K8s yang secara otomatis dilampirkan Logtail ke setiap entri log. Membuat indeks bidang untuk bidang ini memungkinkan Anda memfilter dan menganalisis log berdasarkan Pod, namespace, atau node. Setelah Anda klik Next, Layanan Log Sederhana mulai mengumpulkan log.

    Penting

    Gunakan indeks teks penuh untuk mengkueri semua bidang dalam log. Gunakan indeks bidang untuk mengkueri bidang tertentu dan mengurangi trafik indeks. Indeks bidang juga diperlukan untuk analisis bidang menggunakan pernyataan SELECT.

    BidangDeskripsi
    __tag__:__hostname__Nama host kontainer.
    __tag__:__path__Jalur file log dalam kontainer.
    __tag__:_container_ip_Alamat IP kontainer.
    __tag__:_image_name_Nama gambar kontainer. Jika beberapa gambar memiliki hash yang sama tetapi nama atau tag berbeda, Logtail memilih satu nama berdasarkan hash, yang mungkin tidak sesuai dengan nama yang didefinisikan dalam YAML.
    __tag__:_pod_name_Nama Pod.
    __tag__:_namespace_Namespace Pod.
    __tag__:_pod_uid_Pengenal unik (UID) Pod.

Langkah 4: Kueri dan analisis log

  1. Di bagian Projects Konsol Layanan Log Sederhana, klik proyek tersebut.

    image

  2. Arahkan kursor ke Logstore target, klik ikon 图标, lalu pilih Search & Analysis.

    image

Langkah selanjutnya

Referensi