全部产品
Search
文档中心

Container Service for Kubernetes:Analisis dan pantau log CoreDNS

更新时间:Nov 11, 2025

Container Service for Kubernetes (ACK) menggunakan CoreDNS sebagai server DNS dalam kluster. Anda dapat melihat log CoreDNS untuk menganalisis masalah seperti resolusi DNS yang lambat dan akses ke domain berisiko tinggi. Topik ini menjelaskan cara mengaktifkan analisis dan pemantauan log untuk CoreDNS.

Prasyarat

Anda telah menginstal komponen pengumpulan log.

  • Jika Anda menggunakan komponen Logtail, pastikan aplikasi alibaba-log-controller berada pada versi 0.2.0.0-76648ee-aliyun atau yang lebih baru.

    Jika versi alibaba-log-controller sudah usang, Anda dapat meningkatkan komponen Logtail. Untuk informasi selengkapnya tentang cara meningkatkan komponen, lihat Komponen.

  • Jika Anda menggunakan komponen LoongCollector, tidak ada persyaratan versi.

Langkah 1: Aktifkan plugin log CoreDNS

Perhatian

  • Pastikan komponen CoreDNS menggunakan versi terbaru. Untuk informasi selengkapnya tentang cara meningkatkan, lihat Kelola komponen.

  • Plugin log diaktifkan secara default untuk domain default pada versi terbaru CoreDNS. Untuk mengaktifkan plugin tersebut untuk domain lain, ikuti langkah-langkah berikut.

Prosedur

Catatan

Setelah Anda mengaktifkan log CoreDNS, penggunaan CPU meningkat sekitar 10% (tergantung pada permintaan aktual) dan lalu lintas jaringan juga meningkat. Jika Pod replika CoreDNS berjalan dengan penggunaan CPU tinggi, Anda dapat menambahkan lebih banyak Pod CoreDNS. Untuk informasi selengkapnya, lihat Menyesuaikan skala Pod secara manual.

Di namespace kube-system kluster ACK, buka Configuration Management > Configuration Items, klik item konfigurasi coredns, lalu periksa bidang Corefile dari item konfigurasi coredns untuk plugin log. Jika plugin tidak ditemukan, tambahkan seperti pada contoh berikut untuk mengaktifkan pencatatan log untuk resolusi nama domain CoreDNS. Untuk informasi selengkapnya, lihat Ubah Item Konfigurasi.

Kode berikut menunjukkan konfigurasi coredns yang menggunakan format log default.

Corefile: |
    .:53 {
        errors
        log # Tambahkan plugin log di sini.
        health {
           lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
          ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
    # Jika Anda memiliki domain lain dan perlu mengumpulkan log untuk kontainer mereka, tambahkan plugin log dengan format yang sama.
    demo.com:53 {
        ... 
        log # Tambahkan plugin log di sini.
    }

Langkah 2: Aktifkan layanan log CoreDNS

Metode 1: Aktifkan layanan di konsol

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

  2. Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih Operations > Log Center.

  3. Di halaman Log Center, pada tab Network Component Logs > CoreDNS, klik Install, lalu klik Enable CoreDNS Logs.

Metode 2: Aktifkan layanan menggunakan kubectl

Fitur pengumpulan log untuk ACK diperluas menggunakan CustomResourceDefinitions (CRD). Anda dapat menerapkan CRD AliyunLogConfig, dan Log Controller secara otomatis membuat konfigurasi pengumpulan dan laporan yang sesuai di Simple Log Service. Untuk informasi selengkapnya tentang cara membuat resource kustom AliyunLogConfig, lihat Kelola resource kustom.

    Penting

    Konfigurasi berikut hanya berlaku untuk format log default di CoreDNS. Jika Anda menggunakan format log kustom untuk CoreDNS, Anda harus memodifikasi bagian `Regex` dalam konfigurasi CRD.

    Untuk informasi selengkapnya tentang format log kustom untuk CoreDNS, lihat log.

    Untuk informasi selengkapnya tentang alur pengumpulan log dan konfigurasi pengumpulan, lihat Kumpulkan log kontainer menggunakan DaemonSet-CRD.

  1. Buat file YAML bernama k8s-coredns-log.yaml. Kode berikut adalah contoh lengkap file YAML.

    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      #     Nama konfigurasi Anda, harus unik di kluster k8s Anda.
      name: k8s-coredns-log
      namespace: kube-system
    spec:
      # nama logstore untuk mengunggah log
      logstore: coredns-log
      # detail konfigurasi logtail
      productCode: k8s-coredns
      logtailConfig:
        inputType: plugin
        # nama konfigurasi logtail, harus sama dengan [metadata.name]
        configName: k8s-coredns-log
        inputDetail:
          plugin:
            inputs:
            - type: service_docker_stdout
              detail:
                IncludeLabel:
                  io.kubernetes.container.name: coredns
                Stderr: true
                Stdout: true
            processors:
            - type: processor_regex
              detail:
                KeepSource: false
                KeepSourceIfParseError: true
                Keys:
                - level
                - remote
                - port
                - id
                - type
                - class
                - name
                - proto
                - size
                - do
                - bufsize
                - rcode
                - rflags
                - rsize
                - duration
                NoKeyError: true
                NoMatchError: false
                FullMatch: false
                Regex: \[([^]]+)]\s([^:]+):(\S+)\s+-\s+(\S+)\s+"(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+([^"]+)"\s+(\S+)\s+(\S+)\s+(\S+)\s+([\d\.]+).*
                SourceKey: content
            - type: processor_regex
              detail:
                KeepSource: false
                KeepSourceIfParseError: true
                Keys:
                - error
                - rcode
                - name
                - type
                - errorMsg
                NoKeyError: false
                NoMatchError: false
                FullMatch: false
                Regex: \[ERROR]\s+(plugin/errors):\s+(\S)+\s+(\S+)\s+([^:]*):\s+(.*)
                SourceKey: content
  2. Jalankan perintah berikut untuk mengaktifkan layanan log CoreDNS.

    kubectl apply -f k8s-coredns-log.yaml

Untuk informasi selengkapnya tentang cara mengonfigurasi CRD AliyunLogConfig untuk resource seperti penyimpanan, jaringan, dan Auto Scaling, lihat Langkah 1: Buat file konfigurasi log untuk komponen bidang data.

Langkah 3: Kueri dan analisis log di Logstore

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

  2. Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih Operations > Log Center.

  3. Di halaman Log Center, klik tab Network Component Logs. Lalu, klik Logstore pada tab CoreDNS untuk mengkueri dan menganalisis log DNS.

  4. Di kotak pencarian, masukkan pernyataan kueri dan pilih Last 1 Week sebagai rentang waktu.

  5. Klik Query/Analysis untuk melihat hasilnya.

    Simple Log Service memungkinkan Anda melihat distribusi hasil kueri dan analisis dalam bentuk histogram, menganalisis log mentah, serta memeriksa hasil kueri dan analisis dalam berbagai jenis grafik. Untuk informasi selengkapnya tentang cara mengkueri dan menganalisis log, lihat Panduan Cepat Kueri dan Analisis.

    • Histogram Log

      Histogram distribusi log menunjukkan distribusi log dari waktu ke waktu.

      image..png

    • Log Mentah

      Hasil kueri ditampilkan di tab Raw Logs. Anda dapat mengeklik Table atau Raw untuk melihat log dan menganalisisnya guna menentukan apakah resolusi nama domain tidak normal. Perhatikan dengan saksama nilai kode yang dikembalikan (RCODE). Untuk penjelasan tentang nilai RCODE, lihat Pemecahan masalah eror resolusi DNS.

      image..png

      Tabel berikut menjelaskan bidang-bidang tersebut.

      Bidang

      Deskripsi

      Contoh

      {level}

      Tingkat log.

      INFO

      {remote}

      Alamat IP klien.

      172.16.0.10

      {port}

      Port klien.

      58008

      {id}

      ID kueri.

      34518

      {type}

      Jenis permintaan.

      A

      {class}

      Kelas permintaan.

      IN

      {name}

      Nama domain yang diminta.

      kube-dns.kube-system.svc.cluster.local.

      {proto}

      Protokol yang digunakan.

      tcp

      {size}

      Ukuran permintaan (byte).

      56

      {do}

      Menentukan apakah bit EDNS0 DO (DNSSEC OK) diatur dalam kueri.

      false

      {bufsize}

      Ukuran buffer EDNS0 (byte) yang didefinisikan dalam kueri.

      65535

      {rcode}

      Kode tanggapan.

      NOERROR

      {rflags}

      Flag tanggapan. Setiap flag yang diatur akan ditampilkan.

      qr,aa,rd

      {rsize}

      Ukuran tanggapan tak terkompresi (byte).

      110

      {duration}

      Waktu tanggapan (detik).

      0,00011

    • Grafik Statistik

      Setelah menjalankan pernyataan kueri, Anda dapat melihat hasil visualisasi di tab Statistical Chart.

    • LogReduce

      Di tab LogReduce, klik Enable LogReduce untuk mengagregasi log yang sangat mirip selama pengumpulan log. Untuk informasi selengkapnya, lihat LogReduce.

Langkah 4: Lihat data pengumpulan log CoreDNS di dasbor

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

  2. Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih Operations > Log Center.

  3. Di halaman Log Center, klik tab Network Component Logs, lalu tab CoreDNS. Klik Dashboard untuk melihat dasbor Kubernetes CoreDNS Log Analysis.

    Di halaman Kubernetes CoreDNS Log Analysis, Anda dapat melihat metrik utama seperti jumlah total permintaan CoreDNS, tingkat keberhasilan permintaan, dan latensi permintaan. Dasbor ini juga menampilkan domain yang paling sering diminta, domain dengan kesalahan, domain dengan resolusi lambat, serta analisis akses ke domain berisiko tinggi.

Langkah 5: Buat peringatan untuk log CoreDNS

Anda dapat membuat aturan peringatan dari grafik di dasbor Kubernetes CoreDNS Log Analysis. Operasi ini hanya tersedia di konsol Simple Log Service (SLS).

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

  2. Di halaman Clusters, temukan kluster target dan klik namanya. Di panel navigasi kiri, klik Cluster Information.

  3. Di tab Basic Information halaman Cluster Information, klik tautan di sebelah Simple Log Service Project untuk membuka konsol SLS.

  4. Di panel navigasi kiri halaman Logstore, klik ikon Dasbor 仪表盘. Di daftar dasbor, temukan dan klik Kubernetes CoreDNS Log Analysis.

  5. Di halaman Kubernetes CoreDNS Log Analysis, arahkan kursor ke pojok kanan atas grafik target dan pilih more > Save As Alert.

    Untuk informasi selengkapnya tentang parameter konfigurasi peringatan, lihat Buat aturan peringatan dan pemantauan log.alert

    Setelah aturan peringatan dibuat, Anda dapat melihat, memodifikasi, dan menonaktifkan aturan peringatan tersebut. Untuk informasi selengkapnya, lihat Kelola aturan pemantauan peringatan.

Operasi terkait

Nonaktifkan pengumpulan log

Jika Anda tidak lagi memerlukan pengumpulan log CoreDNS, jalankan perintah berikut untuk menguninstall CRD pengumpulan log dan menghentikan pengumpulan log.

kubectl -n kube-system delete AliyunLogConfig k8s-coredns-log

Setelah Anda menghapus CRD, log CoreDNS tidak lagi dikirim ke SLS.