Topik ini menjelaskan cara menggunakan komponen eventer untuk mengumpulkan peristiwa dari Kubernetes ke Layanan Log Sederhana.
Kubernetes dirancang berdasarkan mesin status. Peristiwa dihasilkan selama transisi antarstatus yang berbeda. Biasanya, peristiwa Normal dihasilkan ketika mesin status berubah ke status yang diharapkan, sedangkan peristiwa Warning dihasilkan ketika mesin status berubah ke status yang tidak diharapkan.
ACK menyediakan solusi pemantauan peristiwa siap pakai untuk skenario kontainerisasi. ACK menggunakan NPD dan kube-eventer yang disediakan oleh NPD untuk memantau peristiwa kontainer.
NPD adalah alat untuk mendiagnosis node Kubernetes. NPD mendeteksi pengecualian node, menghasilkan peristiwa node, dan bekerja sama dengan kube-eventer untuk memunculkan peringatan atas peristiwa tersebut serta memungkinkan manajemen peringatan loop tertutup. NPD menghasilkan peristiwa node ketika pengecualian berikut terdeteksi: Mesin Docker macet, kernel Linux macet, pengecualian lalu lintas arah keluar, dan pengecualian deskriptor file. Untuk informasi lebih lanjut, lihat NPD.
kube-eventer adalah emitor peristiwa sumber terbuka yang dikelola oleh ACK. kube-eventer mengirim peristiwa Kubernetes ke sink seperti DingTalk, Layanan Log Sederhana, dan EventBridge. kube-eventer juga menyediakan kondisi filter untuk menyaring peristiwa tingkat berbeda. Anda dapat menggunakan kube-eventer untuk mengumpulkan peristiwa secara real-time, memicu peringatan pada peristiwa tertentu, dan mengarsipkan peristiwa secara asinkron. Untuk informasi lebih lanjut, lihat kube-eventer.
NPD adalah alat untuk mendiagnosis node Kubernetes. Alat ini mendeteksi pengecualian node, menghasilkan peristiwa node, dan bekerja sama dengan kube-eventer untuk memunculkan peringatan terkait peristiwa tersebut, sehingga memungkinkan manajemen peringatan loop tertutup. NPD menghasilkan peristiwa node ketika mendeteksi pengecualian berikut: Mesin Docker macet, kernel Linux macet, pengecualian lalu lintas arah keluar, dan pengecualian deskriptor file. Untuk informasi lebih lanjut, lihat NPD.
kube-eventer adalah emitor peristiwa sumber terbuka yang dikelola oleh ACK. Alat ini mengirim peristiwa Kubernetes ke sink seperti DingTalk, Layanan Log Sederhana, dan EventBridge. kube-eventer juga menyediakan kondisi filter untuk menyaring peristiwa berdasarkan tingkat tertentu. Anda dapat menggunakan kube-eventer untuk mengumpulkan peristiwa secara real-time, memicu peringatan pada peristiwa tertentu, serta mengarsipkan peristiwa secara asinkron. Untuk informasi lebih lanjut, lihat kube-eventer.
Prasyarat
Sebuah kluster Kubernetes telah dibuat, seperti kluster Container Service for Kubernetes (ACK) atau kluster ACK Serverless.
Penagihan
Jika kondisi berikut terpenuhi, Anda tidak akan dikenakan biaya saat menggunakan pusat peristiwa:
Periode retensi data Logstore yang terkait dengan pusat peristiwa Anda adalah 90 hari, yang merupakan nilai default.
Jumlah data yang ditulis ke pusat peristiwa Anda setiap hari kurang dari 256 MB, yang setara dengan sekitar 250.000 peristiwa.
Contoh:
Jika periode retensi data default ditentukan untuk Logstore yang terkait dan 1.000 peristiwa dihasilkan dalam kluster Kubernetes Anda setiap hari, Anda dapat menggunakan pusat peristiwa Anda secara gratis.
Jika Anda mengubah periode retensi data menjadi 105 hari dan 1.000 peristiwa dihasilkan dalam kluster Kubernetes Anda setiap hari, Anda akan dikenakan biaya untuk data yang disimpan dalam Logstore terkait setelah data disimpan selama 90 hari. Biaya dihitung berdasarkan item tagihan ruang penyimpanan yang ditempati oleh data log. Untuk informasi lebih lanjut tentang item tagihan, lihat Item Tagihan Fitur Bayar-per-Fitur.
Langkah 1: Sebarkan komponen kube-eventer dan node-problem-detector
Kluster ACK
Jika Anda menggunakan kluster ACK, Anda hanya perlu menerapkan komponen ack-node-problem-detector karena komponen tersebut terintegrasi dengan fitur-fitur dari komponen kube-eventer dan node-problem-detector. Untuk informasi lebih lanjut, lihat Pemantauan Event. Jika Anda menggunakan ACK Serverless cluster, Anda harus menerapkan komponen kube-eventer.
NPD bekerja sama dengan plugin pihak ketiga untuk mendeteksi pengecualian node dan menghasilkan peristiwa kluster. Kluster Kubernetes juga menghasilkan peristiwa ketika status kluster berubah. Misalnya, ketika pod dievakuasi atau operasi pull gambar gagal, peristiwa terkait dihasilkan. Pusat peristiwa Kubernetes dari Layanan Log Sederhana mengumpulkan, menyimpan, dan memvisualisasikan peristiwa kluster. Ini memungkinkan Anda untuk menanyakan dan menganalisis peristiwa ini, serta mengonfigurasi peringatan. Anda dapat mengarahkan peristiwa kluster ke pusat peristiwa Kubernetes dari Layanan Log Sederhana dengan menggunakan metode berikut.
Jika Anda telah memilih Install node-problem-detector and Create Event Center saat membuat kluster, lanjutkan ke Langkah 2 untuk melihat pusat peristiwa Kubernetes. Untuk informasi lebih lanjut tentang cara memasang komponen ack-node-problem-detector saat membuat kluster, lihat Buat Kluster ACK yang Dikelola.
Jika Anda tidak memilih Install node-problem-detector and Create Event Center saat membuat kluster, lakukan langkah-langkah berikut untuk memasangnya secara manual.
Masuk ke Konsol ACK. Di bilah navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di bilah navigasi kiri, klik Add-ons.
Di tab Logs and Monitoring, temukan dan pasang ack-node-problem-detector.
Kluster Kubernetes lainnya
Sebarkan komponen kube-eventer.
Pasang alat kubectl. Untuk informasi lebih lanjut, lihat Hubungkan ke Kluster ACK Menggunakan kubectl.
Buat file konfigurasi bernama eventer.yaml menggunakan kode sampel berikut:
apiVersion: apps/v1 kind: Deployment metadata: labels: name: kube-eventer name: kube-eventer namespace: kube-system spec: replicas: 1 selector: matchLabels: app: kube-eventer template: metadata: labels: app: kube-eventer annotations: scheduler.alpha.kubernetes.io/critical-pod: '' spec: dnsPolicy: ClusterFirstWithHostNet serviceAccount: kube-eventer containers: - image: registry.cn-hangzhou.aliyuncs.com/acs/kube-eventer:v1.2.5-cc7ec54-aliyun name: kube-eventer command: - "/kube-eventer" - "--source=kubernetes:https://kubernetes.default" ## .send to sls ## --sink=sls:https://{endpoint}?project={project}&logStore=k8s-event®ionId={region-id}&internal=false&accessKeyId={accessKeyId}&accessKeySecret={accessKeySecret} - --sink=sls:https://cn-beijing.log.aliyuncs.com?project=k8s-xxxx&logStore=k8s-event®ionId=cn-beijing&internal=false&accessKeyId=xxx&accessKeySecret=xxx env: # If TZ is assigned, set the TZ value as the time zone - name: TZ value: "Asia/Shanghai" volumeMounts: - name: localtime mountPath: /etc/localtime readOnly: true - name: zoneinfo mountPath: /usr/share/zoneinfo readOnly: true resources: requests: cpu: 10m memory: 50Mi limits: cpu: 500m memory: 250Mi volumes: - name: localtime hostPath: path: /etc/localtime - name: zoneinfo hostPath: path: /usr/share/zoneinfo --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kube-eventer rules: - apiGroups: - "" resources: - events verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kube-eventer roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: kube-eventer subjects: - kind: ServiceAccount name: kube-eventer namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: kube-eventer namespace: kube-systemParameter
Tipe
Diperlukan
Deskripsi
endpoint
string
Ya
Titik akhir Layanan Log Sederhana. Untuk informasi lebih lanjut, lihat Titik akhir.
project
string
Ya
Proyek Layanan Log Sederhana.
logStore
string
Ya
Penyimpanan log Layanan Log Sederhana.
internal
string
Ya untuk kluster Kubernetes yang dikelola sendiri
Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, atur nilainya menjadi false.
regionId
string
Ya untuk kluster Kubernetes yang dikelola sendiri
ID wilayah tempat proyek Layanan Log Sederhana berada. Untuk informasi lebih lanjut, lihat Titik akhir.
accessKeyId
string
Ya untuk kluster Kubernetes yang dikelola sendiri
ID AccessKey. Kami merekomendasikan Anda menggunakan ID AccessKey Pengguna Resource Access Management (RAM). Untuk informasi lebih lanjut, lihat Pasangan AccessKey.
accessKeySecret
string
Ya untuk kluster Kubernetes yang dikelola sendiri
Rahasia AccessKey. Kami merekomendasikan Anda menggunakan Rahasia AccessKey Pengguna RAM. Untuk informasi lebih lanjut, lihat Pasangan AccessKey.
Jalankan perintah berikut untuk menerapkan file konfigurasi eventer.yaml ke kluster Anda:
kubectl apply -f eventer.yamlOutput yang diharapkan:
deployment.apps/kube-eventer created clusterrole.rbac.authorization.k8s.io/kube-eventer created clusterrolebinding.rbac.authorization.k8s.io/kube-eventer created serviceaccount/kube-eventer created
Sebarkan komponen node-problem-detector.
Untuk informasi lebih lanjut, kunjungi GitHub.
Langkah 2: Buat pusat peristiwa
Setelah Anda membuat pusat peristiwa, Layanan Log Sederhana secara otomatis membuat Logstore bernama k8s-event di proyek yang ditentukan. Dashboard terkait juga dibuat untuk pusat peristiwa.
Masuk ke Konsol Layanan Log Sederhana.
Di bagian Log Application, klik tab Intelligent O&M. Lalu, klik K8s Event Center.
Di halaman Event Center Management, klik Add di pojok kanan atas.
Di panel Create Event Center, atur parameter yang diperlukan dan klik Next.
Jika Anda memilih Select Existing Project, Anda dapat memilih proyek yang ada dari daftar drop-down Project untuk mengelola sumber daya pusat peristiwa Anda. Sumber daya termasuk Logstore dan dashboard terkait.
Jika Anda memilih Select Kubernetes Cluster from Container Service for Kubernetes, Anda dapat memilih kluster Kubernetes yang ada dari daftar drop-down K8s Cluster. Jika Anda menggunakan metode ini untuk membuat pusat peristiwa, Layanan Log Sederhana secara otomatis membuat proyek dengan nama dalam format
k8s-log-{cluster-id}untuk mengelola sumber daya pusat peristiwa Anda. Sumber daya termasuk Logstore dan dashboard terkait.
Langkah 3: Gunakan pusat peristiwa
Setelah Anda membuat pusat peristiwa di Pusat Peristiwa K8s dan menyebarkan komponen kube-eventer dan node-problem-detector, Anda dapat menggunakan pusat peristiwa. Misalnya, Anda dapat menggunakan pusat peristiwa untuk melihat statistik peristiwa, menanyakan detail peristiwa, melihat siklus hidup pod, melihat peristiwa node, melihat peristiwa komponen inti, mengonfigurasi peringatan, melakukan operasi kueri kustom, dan memperbarui versi Pusat Peristiwa K8s.
Di bilah navigasi kiri halaman K8s Event Center, temukan pusat peristiwa yang ingin Anda kelola dan klik ikon
. Lalu, Anda dapat melakukan operasi berikut.

Operasi | Deskripsi |
Lihat statistik peristiwa | Tab Event Overview menampilkan statistik peristiwa inti. Statistik mencakup jumlah total peristiwa, perbedaan antara jumlah peristiwa kesalahan dalam hari saat ini dan hari sebelumnya, statistik peringatan, tren peristiwa kesalahan, dan detail peristiwa OOM pod. Catatan Jika peristiwa OOM pod dicatat, Anda hanya dapat melihat node tempat peristiwa terjadi, nama proses, dan ID proses. Pod tempat peristiwa terjadi tidak dapat diidentifikasi. Namun, Anda dapat menanyakan peristiwa restart pod yang terjadi sekitar waktu peristiwa OOM pod. Dengan cara ini, Anda dapat mengidentifikasi pod. |
Tanyakan detail peristiwa | Tab Event Details menampilkan detail peristiwa yang dikembalikan menggunakan kondisi filter berbeda, seperti tipe peristiwa, tujuan peristiwa, host, namespace, dan nama. |
Lihat siklus hidup pod | Tab Pod Lifecycle menampilkan detail peristiwa yang terjadi dalam siklus hidup pod. Anda dapat menyaring peristiwa pod penting berdasarkan tingkat peristiwa. |
Lihat peristiwa node | Tab Node Event menampilkan detail peristiwa node. Anda dapat melihat siklus hidup node dan peristiwa yang terjadi di node. |
Lihat peristiwa komponen inti | Tab Event Core menampilkan detail peristiwa komponen inti. Peristiwa termasuk NLC.Task.RestartECS.Fail dan NLC.Task.URL.Mode.Unimplemented. |
Konfigurasikan peringatan | Di halaman yang muncul setelah Anda klik Alert Configuration, Anda dapat mengonfigurasi peringatan untuk pusat peristiwa Anda. Untuk informasi lebih lanjut, lihat Konfigurasikan peringatan. |
Lakukan operasi kueri kustom | Di halaman yang muncul setelah Anda klik Custom Query, Anda dapat mengeksekusi pernyataan kueri kustom. Semua peristiwa di pusat peristiwa disimpan di Logstore. Anda dapat menggunakan semua fitur Logstore. Misalnya, Anda dapat mengeksekusi pernyataan kueri kustom, mengonsumsi data peristiwa, membuat laporan kustom, atau mengonfigurasi peringatan kustom. Untuk informasi lebih lanjut, lihat Panduan untuk kueri dan analisis log. Jika Anda ingin mengakses proyek yang ditentukan untuk pusat peristiwa, Anda dapat memperoleh nama proyek menggunakan salah satu metode berikut:
|
Perbarui versi Pusat Peristiwa K8s | Di halaman yang muncul setelah Anda klik Version Update, Anda dapat memperbarui versi Pusat Peristiwa K8s. |
Contoh log
Contoh berikut menunjukkan log sampel yang dikumpulkan:
hostname: cn-hangzhou.i-***********
level: Normal
pod_id: 2a360760-****
pod_name: logtail-ds-blkkr
event_id: {
"metadata":{
"name":"logtail-ds-blkkr.157b7cc90de7e192",
"namespace":"kube-system",
"selfLink":"/api/v1/namespaces/kube-system/events/logtail-ds-blkkr.157b7cc90de7e192",
"uid":"2aaf75ab-****",
"resourceVersion":"6129169",
"creationTimestamp":"2019-01-20T07:08:19Z"
},
"involvedObject":{
"kind":"Pod",
"namespace":"kube-system",
"name":"logtail-ds-blkkr",
"uid":"2a360760-****",
"apiVersion":"v1",
"resourceVersion":"6129161",
"fieldPath":"spec.containers{logtail}"
},
"reason":"Started",
"message":"Started container",
"source":{
"component":"kubelet",
"host":"cn-hangzhou.i-***********"
},
"firstTimestamp":"2019-01-20T07:08:19Z",
"lastTimestamp":"2019-01-20T07:08:19Z",
"count":1,
"type":"Normal",
"eventTime":null,
"reportingComponent":"",
"reportingInstance":""
}Bidang | Tipe | Deskripsi |
hostname | String | Nama host server tempat peristiwa terjadi. |
level | String | Tingkat log. Nilai valid: Normal dan Warning. |
pod_id | String | Pengenal unik pod. Bidang ini tersedia hanya jika tipe peristiwa terkait dengan pod. |
pod_name | String | Nama pod. Bidang ini tersedia hanya jika tipe peristiwa terkait dengan pod. |
event_id | JSON | Detail peristiwa. Nilai bidang ini adalah string JSON. |
FAQ
Mengapa tidak ada data di pusat peristiwa saya?
Setelah Anda menyebarkan pusat peristiwa, peristiwa baru secara otomatis dikumpulkan ke pusat peristiwa. Anda dapat mengklik Custom Query untuk mencari peristiwa. Kami merekomendasikan Anda mengatur rentang waktu di pojok kanan atas menjadi 1 Hari. Data mungkin tidak ditemukan di pusat peristiwa karena alasan berikut:
Setelah Anda menyebarkan pusat peristiwa, tidak ada peristiwa yang dihasilkan di kluster Kubernetes terkait.
Anda dapat menjalankan perintah
kubectl get events --all-namespacesuntuk memeriksa apakah peristiwa baru dihasilkan di kluster.Nilai tidak valid ditentukan untuk parameter yang digunakan untuk menyebarkan komponen kube-eventer dan node-problem-detector.
Jika Anda menggunakan kluster ACK, lakukan langkah-langkah berikut:
Masuk ke Konsol ACK.
Di halaman Clusters, cari kluster yang ingin Anda kelola, lalu klik nama klusternya.
Di bilah navigasi kiri, pilih .
Di halaman Helm, temukan ack-node-problem-detector dan klik Update di kolom Aksi.
Periksa dan modifikasi pengaturan parameter. Untuk informasi lebih lanjut, lihat Langkah 1: Sebarkan Komponen kube-eventer dan node-problem-detector.
Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, ikuti petunjuk yang disediakan di Kumpulkan Peristiwa Kubernetes.
Bagaimana cara melihat log kontainer tempat peristiwa terjadi?
Jika Anda menggunakan kluster ACK, lakukan langkah-langkah berikut:
Masuk ke Konsol ACK.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik nama kluster tersebut.
Di bilah navigasi kiri, pilih .
Atur parameter Namespace ke kube-system.
Di halaman Pods, temukan pod yang ingin Anda kelola dan klik Logs di kolom Aksi.
Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, temukan namespace kube-system dan file yang namanya diawali dengan eventer-sls untuk melihat log pod.