Container Compute Service (ACS) terintegrasi dengan Alibaba Cloud Simple Log Service (SLS). Anda dapat mengaktifkan layanan log saat membuat kluster ACS untuk mengumpulkan log kontainer dari kluster secara cepat, termasuk stdout kontainer dan file teks di dalam kontainer. Topik ini menjelaskan cara mengumpulkan log aplikasi di kluster ACS dengan menggunakan variabel lingkungan pod.
Langkah 1: Aktifkan add-on Log Service
Anda dapat memilih Enable Log Service saat membuat kluster ACS agar add-on Log Service diaktifkan secara otomatis. Jika opsi ini tidak dipilih saat pembuatan kluster, ikuti langkah-langkah berikut untuk mengaktifkan add-on pada kluster yang sudah ada.
-
Login ke ACS console. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi kiri, klik Add-ons.
-
Pada bagian Logs and Monitoring, temukan alibaba-log-controller. Klik Install. Pada kotak dialog Install, klik OK.
Jika Anda telah menyesuaikan konfigurasi dan variabel lingkungan untuk alibaba-log-controller, peningkatan akan menimpa parameter tersebut, sehingga Anda harus mengonfigurasinya ulang.
Langkah 2: Konfigurasikan pengumpulan log saat pembuatan aplikasi
Saat membuat aplikasi, Anda dapat mengonfigurasinya untuk mengumpulkan log kontainer menggunakan Konsol atau file YAML.
Wizard Konsol
-
Login ke ACS console. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Workloads > Deployments.
-
Pada halaman Deployments, pilih namespace dari daftar drop-down Namespace. Lalu, di pojok kanan atas, klik Create from Image.
CatatanContoh ini menggunakan Deployment, tetapi prosesnya sama untuk jenis workload lain, seperti StatefulSets.
-
Pada tab Basic Information, atur Name:, Replicas:, dan Type. Klik Next untuk menuju halaman Container.
CatatanBagian ini hanya menjelaskan konfigurasi yang terkait dengan Simple Log Service. Untuk informasi tentang item konfigurasi aplikasi lainnya, lihat Buat workload tanpa status (Deployment).
-
Pada bagian Log, konfigurasikan informasi terkait log.
-
Atur Collection Configuration.
Klik ikon + untuk membuat konfigurasi pengumpulan baru. Setiap konfigurasi terdiri dari Logstore dan Log Path in Container (Can be set to stdout).
-
Logstore: Tentukan nama Logstore untuk menyimpan log yang dikumpulkan. Jika Logstore belum ada, ACS akan membuatnya secara otomatis di Proyek Simple Log Service yang terkait dengan kluster.
CatatanSecara default, log di Logstore yang baru dibuat disimpan selama 90 hari.
-
Log Path in Container: Tentukan path tempat log dikumpulkan. Misalnya, gunakan /usr/local/tomcat/logs/catalina.*.log untuk mengumpulkan log teks dari Tomcat.
CatatanJika parameter ini diatur ke stdout, stdout dan stderr kontainer akan dikumpulkan.
Setiap entri membuat konfigurasi pengumpulan untuk Logstore yang ditentukan. Secara default, log dikumpulkan dalam mode simple (baris per baris).
Contoh: Atur nama Logstore menjadi access dan path log di kontainer menjadi
/usr/local/tomcat/logs/catalina.*.log. Atur nama Logstore lain menjadi catalina dan path menjadistdout. Catatan: Pastikan add-on log agent telah diterapkan ke kluster.
-
-
Atur Custom Tag.
Klik ikon + untuk membuat tag kustom baru. Setiap tag kustom adalah pasangan kunci-nilai yang ditambahkan ke log yang dikumpulkan. Gunakan tag ini untuk menambahkan metadata, seperti nomor versi, ke log kontainer Anda.
Pada bidang Tag Name, masukkan
release. Pada bidang Tag Value, masukkan1.0.0.
-
-
Setelah menyelesaikan konfigurasi, klik Next di pojok kanan atas.
Untuk informasi tentang operasi selanjutnya, lihat Buat workload tanpa status (Deployment).
File YAML
-
Login ke ACS console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Deployments, pilih namespace dari daftar drop-down Namespace. Lalu, di pojok kanan atas, klik Create from YAML.
CatatanContoh ini menggunakan Deployment, tetapi prosesnya sama untuk jenis workload lain, seperti StatefulSets.
-
Konfigurasikan file YAML.
Sintaks file YAML sama dengan sintaks Kubernetes. Untuk menentukan konfigurasi pengumpulan untuk kontainer, Anda harus menggunakan
envuntuk menambahkan Collection Configuration dan Custom Tag. Kode berikut memberikan contoh pod sederhana:apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Konfigurasikan variabel lingkungan - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log - name: aliyun_logs_mytag1_tags value: tag1=v1 command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Konfigurasikan pengaturan berikut sesuai kebutuhan Anda.
CatatanUntuk informasi lebih lanjut tentang persyaratan pengumpulan log tingkat lanjut, lihat Langkah 3: Parameter pengumpulan log lanjutan.
-
Gunakan variabel lingkungan untuk membuat Collection Configuration dan Custom Tag. Semua variabel lingkungan terkait konfigurasi memiliki awalan
aliyun_logs_.-
Buat konfigurasi pengumpulan.
apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Dalam contoh ini, dua konfigurasi pengumpulan dibuat menggunakan format
aliyun_logs_{key}. Nilai{key}yang sesuai adalahlog-stdoutdanlog-varlog.-
aliyun_logs_log-stdout: Variabel ini membuat konfigurasi pengumpulan untukstdoutkontainer. Log yang dikumpulkan dikirim keLogstorebernamalog-stdout. Konfigurasi pengumpulan Simple Log Service yang sesuai juga bernamalog-stdoutdan menggunakanlog-stdoutLogstore. -
aliyun_logs_log-varlog: Variabel lingkungan ini menentukan konfigurasi yang membuatLogstorebernamalog-varlogdan mengatur path pengumpulan log ke /var/log/*.log. Nama konfigurasi pengumpulan Simple Log Service yang sesuai jugalog-varlog. Tujuan konfigurasi ini adalah mengumpulkan konten file /var/log/*.log dari kontainer dan mengirimkannya kelog-varlogLogstore.
-
-
Buat custom tag.
apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: - name: aliyun_logs_mytag1_tags value: tag1=v1 command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Simple Log Service secara otomatis menambahkan tag ini sebagai bidang ke semua log yang dikumpulkan dari kontainer. Dalam contoh ini, bagian
mytag1dari nama variabel dapat berupanama apa pun yang tidak mengandung garis bawah (_).
-
-
Jika Anda menentukan path pengumpulan selain stdout, Anda juga harus mendefinisikan
volumeMountsyang sesuai dalam spesifikasi pod.Dalam contoh ini, konfigurasi pengumpulan mencakup pengumpulan /var/log/*.log. Oleh karena itu,
volumeMountsuntuk /var/log ditambahkan sesuai.
-
-
Setelah menulis file YAML, klik Create untuk menerapkan konfigurasi ke kluster ACS.
Langkah 3: Parameter pengumpulan log lanjutan
Anda dapat menggunakan berbagai variabel lingkungan untuk mengonfigurasi parameter lanjutan sesuai kebutuhan pengumpulan log tertentu.
|
Parameter |
Deskripsi |
Contoh |
Catatan |
|
aliyun_logs_{key} |
|
|
|
|
aliyun_logs_{key}_tags |
Opsional. Nilainya harus dalam format {tag-key}={tag-value} dan membantu mengidentifikasi log. |
|
Tidak berlaku. |
|
aliyun_logs_{key}_project |
Opsional. Proyek SLS. Jika variabel lingkungan ini tidak diatur, nilainya default ke Proyek yang dipilih saat instalasi add-on. |
|
Proyek harus berada di wilayah yang sama tempat add-on Log Service dijalankan. |
|
aliyun_logs_{key}_logstore |
Opsional. Logstore SLS. Jika variabel lingkungan ini tidak diatur, nama Logstore default mengikuti nilai {key}. |
|
Tidak berlaku. |
|
aliyun_logs_{key}_shard |
Opsional. Jumlah shard yang dibuat untuk Logstore. Nilai valid: 1 hingga 10. Jika variabel lingkungan ini tidak diatur, nilai default adalah 2. Catatan
Parameter ini hanya berlaku saat Logstore dibuat; tidak memengaruhi Logstore yang sudah ada. |
|
Tidak berlaku. |
|
aliyun_logs_{key}_ttl |
Opsional. Periode retensi log dalam hari. Nilai valid: 1 hingga 3650.
Catatan
Parameter ini hanya berlaku saat Logstore dibuat; tidak memengaruhi Logstore yang sudah ada. |
|
Tidak berlaku. |
|
aliyun_logs_{key}_machinegroup |
Opsional. Kelompok mesin untuk aplikasi. Jika variabel lingkungan ini tidak diatur, nilainya default ke kelompok mesin yang dipilih saat instalasi add-on Log Service. Untuk informasi lebih lanjut tentang penggunaan parameter ini, lihat Kasus penggunaan khusus 2: Rutekan log dari aplikasi berbeda ke Proyek berbeda. |
|
Tidak berlaku. |
|
aliyun_logs_{key}_logstoremode |
Opsional. Jenis Logstore SLS. Jika parameter ini tidak ditentukan, nilai default adalah standard. Nilai valid: Catatan
Parameter ini hanya berlaku saat Logstore dibuat; tidak memengaruhi Logstore yang sudah ada.
|
|
Tidak berlaku. |
-
Kasus penggunaan 1: Kumpulkan ke satu Logstore
Untuk mengumpulkan data dari beberapa aplikasi ke Logstore yang sama, Anda dapat mengatur parameter aliyun_logs_{key}_logstore. Misalnya, konfigurasi berikut mengumpulkan stdout dua aplikasi dan mengirimkannya ke Logstore
stdout-logstore.Dalam contoh ini,
{key}untuk Aplikasi 1 adalahapp1-stdout, dan{key}untuk Aplikasi 2 adalahapp2-stdout.Variabel lingkungan untuk Aplikasi 1:
apiVersion: v1 kind: Pod metadata: name: my-demo-1 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Konfigurasikan variabel lingkungan - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_logstore value: stdout-logstore command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Variabel lingkungan untuk Aplikasi 2:
apiVersion: v1 kind: Pod metadata: name: my-demo-2 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Konfigurasikan variabel lingkungan - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_logstore value: stdout-logstore command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"] -
Kasus penggunaan 2: Rutekan log ke Proyek berbeda
Untuk mengumpulkan log dari aplikasi berbeda dan merutekannya ke Proyek berbeda, ikuti langkah-langkah berikut:
-
Di setiap Proyek, buat kelompok mesin dengan pengenal kustom bernama
k8s-group-{cluster-id}, di mana{cluster-id}adalah ID kluster. Nama kelompok mesin dapat disesuaikan. -
Konfigurasikan informasi Proyek, Logstore, dan kelompok mesin dalam variabel lingkungan untuk setiap aplikasi. Nama kelompok mesin harus sesuai dengan yang dibuat pada langkah sebelumnya.
Dalam contoh berikut,
{key}untuk Aplikasi 1 adalahapp1-stdout, dan{key}untuk Aplikasi 2 adalahapp2-stdout. Jika kedua aplikasi berada di kluster Kubernetes yang sama, mereka dapat menggunakan kelompok mesin yang sama.Variabel lingkungan untuk Aplikasi 1:
apiVersion: v1 kind: Pod metadata: name: my-demo-1 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Konfigurasikan variabel lingkungan - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_project value: app1-project - name: aliyun_logs_app1-stdout_logstore value: app1-logstore - name: aliyun_logs_app1-stdout_machinegroup value: app1-machine-group command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]Variabel lingkungan untuk Aplikasi 2:
apiVersion: v1 kind: Pod metadata: name: my-demo-2 spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Konfigurasikan variabel lingkungan untuk Aplikasi 2 - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_project value: app2-project - name: aliyun_logs_app2-stdout_logstore value: app2-logstore - name: aliyun_logs_app2-stdout_machinegroup value: app1-machine-group command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]
-
Langkah 4: Lihat log di Konsol SLS
Contoh ini menunjukkan cara melihat log aplikasi yang dibuat menggunakan wizard Konsol. Setelah dikonfigurasi, Simple Log Service secara otomatis mengumpulkan log aplikasi tersebut, yang dapat Anda lihat di Konsol SLS.
-
Login ke Konsol SLS.
-
Di bagian Projects, pilih Proyek yang sesuai dengan kluster ACS. Secara default, Proyek diberi nama k8s-log-{ACS-Cluster-ID}. Lalu, buka tab Logstores.
-
Dalam daftar Logstore, temukan Logstore yang Anda tentukan dalam konfigurasi pengumpulan. Arahkan kursor ke nama Logstore. Di sisi kanan nama Logstore, klik ikon
, lalu klik Search & Analysis.Pada halaman kueri log, Anda dapat melihat log stdout aplikasi dan log teks dari kontainer. Tag kustom muncul sebagai bidang dalam log.
Informasi lebih lanjut
-
Setelah mengumpulkan log kontainer Kubernetes menggunakan Simple Log Service, Anda dapat melihat log kontainer Kubernetes yang dikumpulkan di Konsol SLS.
-
Untuk informasi troubleshooting, lihat Troubleshoot kegagalan pengumpulan log.