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:
Proyek Layanan Log Sederhana dan Logstore
kubectl terinstal (hanya diperlukan untuk kluster Kubernetes yang dikelola sendiri)
Cara kerja
Menyiapkan pengumpulan log berbasis Sidecar melibatkan empat langkah:
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.
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.
Create a Logtail configuration. Setelah konfigurasi diterapkan, Logtail mengumpulkan data log inkremental dan mengunggahnya ke Logstore.
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.
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.

Tambahkan cuplikan berikut ke YAML kontainer aplikasi yang sudah ada. Konfigurasi ini menyisipkan kontainer sidecar
logtaildan menyiapkan dua volume bersama: satu untuk file log dan satu lagi untuk koordinasi siklus hidup antara kontainer aplikasi dan Logtail.Placeholder Deskripsi Contoh ${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. namedi bawahvolumeMountsdannamedi bawahvolumesharus 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: MemoryGanti 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_IDdengan ID akun Alibaba Cloud Anda dan perbarui${region_id}dalamALIYUN_LOGTAIL_CONFIGagar 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: 30Jalankan
kubectl apply -f <your-yaml-file>untuk menerapkan konfigurasi.Jalankan
kubectl describe pod <pod-name>untuk memastikan kontainer Logtail berhasil disisipkan. Output harus mencantumkan kontainerlogtaildalam spesifikasi Pod.
Langkah 2: Buat kelompok mesin dengan pengenal kustom
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.
Login ke Konsol Layanan Log Sederhana. Di bagian Projects, klik proyek yang Anda inginkan.
Di panel navigasi kiri, pilih Resources > Machine Groups. Di daftar Machine Groups, klik
dan pilih Create Machine Group.
Di panel Create Machine Group, isi bidang berikut dan klik OK.
Parameter Deskripsi Name Nama 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 Identifier Pilih Custom Identifier. Machine Group Topic (Opsional) Topik yang mengidentifikasi log dari server berbeda. Custom Identifier Masukkan nilai yang sama dengan ALIYUN_LOGTAIL_USER_DEFINED_IDdari Langkah 1, misalnya,nginx-log-sidecar.
Langkah 3: Buat konfigurasi Logtail
Membuat konfigurasi Logtail memerlukan waktu sekitar 3 menit.
Login ke Konsol Layanan Log Sederhana.
Di bagian Quick Data Import, klik Import Data. Di kotak dialog, klik kartu Kubernetes - File.

Pilih proyek dan Logstore target, lalu klik Next.
Di halaman Machine Group Configurations:
Atur Scenario ke Kubernetes Clusters dan Deployment Method ke Sidecar.
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_CONFIGdalam 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?
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.

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/**/*.logmencocokkan semua file.logdi bawah/apsara/nuwadan subdirektorinya.
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.
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.
PentingGunakan 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.
Bidang Deskripsi __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
Di bagian Projects Konsol Layanan Log Sederhana, klik proyek tersebut.

Arahkan kursor ke Logstore target, klik ikon
, lalu pilih Search & Analysis.
Langkah selanjutnya
Visualisasikan log: Gunakan dasbor Layanan Log Sederhana untuk mengagregasi dan mengeksplorasi data log Anda. Lihat Buat dasbor.
Siapkan peringatan: Terima notifikasi secara otomatis saat anomali muncul dalam log Anda. Lihat Konfigurasikan aturan peringatan di Layanan Log Sederhana.
Impor log historis: Logtail hanya mengumpulkan log inkremental. Untuk mengimpor file log yang sudah ada, lihat Impor log historis dari file log.
Atasi masalah pengumpulan:
Periksa konsol untuk pesan error Logtail. Lihat Diagnostik Logtail.
Jika tidak ada error yang muncul, selidiki heartbeat kelompok mesin dan konfigurasi Logtail. Lihat Apa yang harus saya lakukan jika terjadi error saat mengumpulkan log dari kontainer?