Container Compute Service (ACS) terintegrasi dengan Simple Log Service (SLS). Saat membuat kluster ACS, Anda dapat mengaktifkan SLS untuk mengumpulkan data log dari kontainer dalam kluster. Data log mencakup stdout dan file teks. Topik ini menjelaskan cara menggunakan jenis resource kustom bernama AliyunLogConfig, yang didefinisikan melalui CustomResourceDefinition (CRD), untuk mengumpulkan log aplikasi dari kluster ACS.
Langkah 1: Instal komponen alibaba-log-controller
Saat membuat kluster ACS, Anda dapat memilih Enable Log Service untuk menginstal komponen alibaba-log-controller. Jika opsi ini tidak dipilih selama pembuatan kluster, Anda dapat menginstal komponen tersebut setelah kluster dibuat dengan mengikuti langkah-langkah berikut:
Masuk ke konsol ACS. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin dikelola, lalu klik ID-nya. Di panel navigasi sebelah kiri halaman detail kluster, pilih Operations > Add-ons.
Temukan alibaba-log-controller di bagian Logs and Monitoring. Klik Install. Di kotak dialog Install alibaba-log-controller, klik OK.
Jika versi sebelumnya dari komponen alibaba-log-controller sudah terinstal, Anda dapat memperbaruinya. Namun, pembaruan akan mengatur ulang parameter komponen serta menimpa pengaturan dan variabel lingkungan yang ada. Jika Anda telah menyesuaikan pengaturan atau variabel lingkungan, konfigurasikan ulang setelah pembaruan.
Langkah 2: Buat CRD AliyunLogConfig untuk mengonfigurasi pengumpulan log
Anda dapat menggunakan AliyunLogConfig untuk mengumpulkan log stdout dan teks dari aplikasi. Di panel navigasi sebelah kiri halaman detail kluster, pilih Custom Resources > CRDs > Create from YAML untuk membuat AliyunLogConfig. Konfigurasikan parameter-parameter AliyunLogConfig sesuai kebutuhan. Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter | Deskripsi | Contoh |
| Nama AliyunLogConfig. Nama harus unik dalam kluster ACS. | test-stdout |
| Nama Proyek SLS yang ingin Anda gunakan. Parameter ini opsional. Anda dapat menentukan nama kustom. Kami merekomendasikan agar Anda menentukan nama proyek dalam format | k8s-log-c326bc86**** |
| Nama penyimpanan log yang ingin Anda gunakan. Parameter ini wajib. Jika penyimpanan log yang Anda tentukan tidak ada, SLS secara otomatis membuat penyimpanan log dengan nama yang ditentukan. | test-stdout |
| Tipe data sumber yang ingin Anda kumpulkan. Nilai | plugin |
| Nama konfigurasi Logtail. Nama harus sama dengan nilai | test-stdout |
| Detail konfigurasi Logtail. Konfigurasi Logtail menentukan cara mengumpulkan stdout dan log teks. | Pengaturan contoh menunjukkan bahwa |
| Pengaturan lanjutan untuk Logtail. Berikut adalah pengaturan lanjutan terkait
| Pengaturan contoh menunjukkan bahwa log kontainer yang sesuai dengan kondisi berikut dikumpulkan:
|
Untuk informasi lebih lanjut tentang parameter Logtail, lihat Konfigurasi Logtail.
Skenario 1: Mengumpulkan stdout dari aplikasi tertentu
Untuk mengumpulkan stdout dan stderr dari pod atau kontainer tertentu, tambahkan kondisi filter ke bidang detail bagian logtailConfig dalam konfigurasi AliyunLogConfig. Setelah menerapkan AliyunLogConfig di kluster, stdout dan stderr dari pod atau kontainer yang sesuai dengan kondisi filter akan dikumpulkan.
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-stdout
spec:
project: k8s-log-c326bc86**** # Ganti nilainya dengan nama proyek sebenarnya.
logstore: test-stdout
shardCount: 2
lifeCycle: 90
logtailConfig:
inputType: plugin
configName: test-stdout
inputDetail:
plugin:
inputs:
- type: service_docker_stdout
detail:
Stdout: true
Stderr: true
K8sNamespaceRegex: ^(default)$
K8sContainerRegex: ^(busybox)$
K8sPodRegex: ^backend.+$
IncludeK8sLabel:
app: backend
application: prodSkenario 2: Mengumpulkan log teks dari aplikasi tertentu
Untuk mengumpulkan log teks dari pod atau kontainer tertentu, tambahkan kondisi filter ke bidang advanced bagian logtailConfig dalam konfigurasi AliyunLogConfig. Setelah menerapkan AliyunLogConfig di kluster, log teks dari pod atau kontainer yang sesuai dengan kondisi filter akan dikumpulkan.
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-file
spec:
project: k8s-log-c326bc86**** # Ganti nilainya dengan nama proyek sebenarnya.
logstore: test-file
logtailConfig:
inputType: file
configName: test-file
inputDetail:
logType: common_reg_log
logPath: /log/
filePattern: "*.log"
dockerFile: true
advanced:
k8s:
K8sNamespaceRegex: ^(default)$
K8sContainerRegex: ^(busybox)$
K8sPodRegex: ^backend.+$
IncludeK8sLabel:
app: backend
application: prodBerkas untuk AliyunLogConfigs dalam skenario di atas diberi nama test-stdout dan test-file. Setelah membuat berkas tersebut, Anda dapat melanjutkan ke Langkah 4: Lihat Log di Konsol SLS untuk memeriksa apakah penyimpanan log yang ditentukan telah dibuat. Jika belum, tinjau Konfigurasi Logtail dan modifikasi parameter yang relevan.

Langkah 3: Buat aplikasi
Setelah membuat CRD AliyunLogConfig, Simple Log Service secara otomatis mengumpulkan log pod yang dibuat kemudian. Anda dapat membuat aplikasi berikut untuk menguji pengumpulan log.
Contoh ini membuat Deployment. File YAML berikut memberikan contoh. Sistem menjalankan perintah terkait setelah kontainer dimulai. Stdout dan log teks kontainer dicetak secara terus-menerus.
apiVersion: apps/v1 kind: Deployment metadata: name: backend-busybox labels: app: backend application: prod spec: replicas: 1 selector: matchLabels: app: backend application: prod template: metadata: name: backend-busybox labels: app: backend application: prod spec: containers: - args: - -c - mkdir -p /log; while true; do echo hello world; date; echo hello sls >> /log/busybox.log; sleep 1; done command: - /bin/sh image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28 imagePullPolicy: Always name: busybox
Langkah 4: Lihat log menggunakan konsol SLS
Log aplikasi uji disimpan di SLS. Anda dapat masuk ke konsol SLS untuk melihat log yang dikumpulkan dari kontainer aplikasi.
Masuk ke konsol Simple Log Service.
Di bagian Projects, temukan proyek yang sesuai dengan kluster ACS (default: k8s-log-{ID kluster ACS}), lalu klik nama proyek untuk masuk ke tab Logstore.
Dalam daftar Penyimpanan Log, klik nama Penyimpanan Log yang ditentukan dalam konfigurasi pengumpulan log. Di halaman yang muncul, lihat log.
Dalam contoh ini, Anda dapat melihat stdout (test-stdout) dan log teks (test-file) di dalam kontainer aplikasi pada halaman kueri log.


Referensi
Untuk informasi lebih lanjut tentang cara menyelesaikan kesalahan pengumpulan log, lihat Apa yang harus saya lakukan jika terjadi kesalahan saat menggunakan Logtail untuk mengumpulkan log?