Topik ini menjelaskan cara menggunakan CRD SLS untuk mengonfigurasi pengumpulan log di kluster ACK Serverless, sehingga memungkinkan pengumpulan log kontainer secara otomatis dengan Simple Log Service (SLS).
Informasi latar belakang
Simple Log Service adalah layanan terpadu untuk data log. Layanan ini memungkinkan Anda mengumpulkan, mengonsumsi, mengirimkan, mengkueri, dan menganalisis data log dengan cepat tanpa perlu menulis kode. Untuk informasi selengkapnya, lihat Apa itu Simple Log Service?.
Prasyarat
Pastikan Simple Log Service telah diaktifkan. Jika layanan belum diaktifkan, Anda akan diminta untuk mengaktifkannya saat login ke Konsol Simple Log Service. Ikuti petunjuk di layar untuk menyelesaikan aktivasi.
Catatan
Pengumpulan log yang diaktifkan oleh CRD SLS hanya berlaku untuk Pod ECI yang dibuat setelahnya. Untuk mengumpulkan log dari Pod yang sudah ada, Anda harus melakukan rolling update.
Konfigurasi pengumpulan log
Setelah komponen alibaba-log-controller dideploy di kluster Anda, Anda dapat menggunakan CRD AliyunLogConfig untuk mengonfigurasi pengumpulan log.
Deploy komponen alibaba-log-controller
-
Login ke Konsol ACK.
-
Di pojok kiri atas bilah navigasi atas, pilih wilayah.
-
Pada halaman Clusters, klik nama kluster ACK Serverless target untuk membuka halaman detail kluster.
-
Deploy komponen alibaba-log-controller di kluster.
-
Di panel navigasi sebelah kiri halaman detail kluster, pilih .
-
Klik tab Logs and Monitoring, temukan kartu alibaba-log-controller, lalu klik Install.
-
Pada kotak dialog yang muncul, klik OK.
Setelah instalasi selesai, kartu alibaba-log-controller akan menampilkan status Installed di pojok kanan atas.
-
Buat konfigurasi Logtail
-
Sambungkan ke kluster ACK Serverless.
-
Buat file konfigurasi YAML untuk CRD AliyunLogConfig.
PentingUntuk menghindari deviasi konfigurasi, selalu perbarui konfigurasi dengan memodifikasi resource CRD. Perubahan yang dilakukan langsung di Konsol tidak akan disinkronkan kembali ke CRD.
-
Buat CRD AliyunLogConfig.
Jalankan perintah berikut untuk menerapkan konfigurasi. Setelah konfigurasi Logtail berlaku, Logtail mulai mengumpulkan log stdout atau log teks dari kontainer yang sesuai dan mengirimkannya ke Simple Log Service.
kubectl apply -f log-file.yaml kubectl apply -f log-stdout.yamlPentingSetelah log dikumpulkan, Anda harus membuat indeks sebelum dapat mengkueri dan menganalisis log di penyimpanan log. Untuk informasi selengkapnya, lihat Buat Indeks.
Uji pengumpulan log
Setelah Anda membuat CRD AliyunLogConfig, Simple Log Service secara otomatis mengumpulkan log dari Pod yang baru dibuat. Anda dapat membuat aplikasi berikut untuk menguji pengumpulan log.
-
Buat aplikasi.
Contoh berikut menggunakan Penyebaran (Deployment). Setelah dijalankan, kontainer terus-menerus mencetak log ke stdout dan file log.
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: busyboxSimpan file YAML di atas sebagai test-sls-crd.yaml dan jalankan perintah berikut untuk membuat aplikasi.
kubectl create -f test-sls-crd.yaml -
Verifikasi status aplikasi.
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE eci-sls-demo-7bf8849b9f-cgpbn 1/1 Running 0 2m14s -
Lihat log.
-
Login ke Konsol Simple Log Service.
-
Klik nama proyek tujuan.
-
Temukan penyimpanan log tujuan dan klik namanya untuk melihat log.
Log teks
Di Konsol Simple Log Service, pilih penyimpanan log test-file untuk melihat log file yang dikumpulkan. Entri log mencakup bidang kunci seperti
__container_name__dengan nilaisls,__image_name__dengan nilairegistry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30,__namespace__dengan nilaidefault, dancontentdengan nilaihello sls, yang mengonfirmasi bahwa log dari kontainer busybox berhasil dikumpulkan.Output standar
Di Konsol Simple Log Service, pilih penyimpanan log test-stdout dari daftar di sebelah kiri untuk melihat log stdout yang dikumpulkan. Entri log berisi bidang seperti
_container_name_(nilai:sls),_image_name_(URL image busybox),_namespace_(default), dan_source_(stdout). Bidangcontentmenampilkan output kontainer, sepertihello world.
-
Nonaktifkan pengumpulan log
Setelah Anda membuat CRD konfigurasi pengumpulan log, sistem secara otomatis mengumpulkan log dari semua Pod yang sesuai. Untuk Pod yang tidak ingin Anda kumpulkan log-nya, Anda dapat menambahkan anotasi k8s.aliyun.com/eci-sls-enable: "false" untuk menonaktifkan pengumpulan log. Hal ini mencegah sistem membuat instans Logtail secara otomatis dan menghindari pemborosan sumber daya.
Anotasi harus ditambahkan ke metadata dalam file konfigurasi pod. Misalnya, saat membuat Deployment, Anda harus menambahkan anotasi di bagian spec.template.metadata.
Anotasi terkait Elastic Container Instance hanya diterapkan saat pod dibuat. Menambahkan atau memodifikasi anotasi ini pada pod yang sudah ada tidak akan berpengaruh.
Contoh:
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" # Nonaktifkan 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