全部产品
Search
文档中心

Simple Log Service:Kumpulkan peristiwa Kubernetes

更新时间:Jul 02, 2025

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.

    1. Masuk ke Konsol ACK. Di bilah navigasi kiri, klik Clusters.

    2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di bilah navigasi kiri, klik Add-ons.

    3. Di tab Logs and Monitoring, temukan dan pasang ack-node-problem-detector.

Kluster Kubernetes lainnya

  1. Sebarkan komponen kube-eventer.

    1. Pasang alat kubectl. Untuk informasi lebih lanjut, lihat Hubungkan ke Kluster ACK Menggunakan kubectl.

    2. 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&regionId={region-id}&internal=false&accessKeyId={accessKeyId}&accessKeySecret={accessKeySecret}
                  - --sink=sls:https://cn-beijing.log.aliyuncs.com?project=k8s-xxxx&logStore=k8s-event&regionId=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-system

      Parameter

      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.

    3. Jalankan perintah berikut untuk menerapkan file konfigurasi eventer.yaml ke kluster Anda:

      kubectl apply -f eventer.yaml

      Output 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
  2. Sebarkan komponen node-problem-detector.

    Untuk informasi lebih lanjut, kunjungi GitHub.

Langkah 2: Buat pusat peristiwa

Catatan

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.

  1. Masuk ke Konsol Layanan Log Sederhana.

  2. Di bagian Log Application, klik tab Intelligent O&M. Lalu, klik K8s Event Center.

  3. Di halaman Event Center Management, klik Add di pojok kanan atas.

  4. 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 k8s事件中心-002. Lalu, Anda dapat melakukan operasi berikut.

image

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:

  • Peroleh nama proyek dari URL halaman yang muncul setelah Anda klik Custom Query. URL tersebut dalam format https://sls.console.alibabacloud.com/lognext/app/k8s-event/project/k8s-log-xxxx/logsearch/k8s-event. Bidang yang mengikuti bidang proyek menunjukkan nama proyek. Contoh: k8s-log-xxxx.

  • Di daftar pusat peristiwa pada halaman Event Center Management, temukan pusat peristiwa dan lihat nama proyeknya.

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-namespaces untuk 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:

      1. Masuk ke Konsol ACK.

      2. Di halaman Clusters, cari kluster yang ingin Anda kelola, lalu klik nama klusternya.

      3. Di bilah navigasi kiri, pilih Applications > Helm.

      4. Di halaman Helm, temukan ack-node-problem-detector dan klik Update di kolom Aksi.

      5. 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:

    1. Masuk ke Konsol ACK.

    2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik nama kluster tersebut.

    3. Di bilah navigasi kiri, pilih Workloads > Pods.

    4. Atur parameter Namespace ke kube-system.

    5. 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.