Container Service for Kubernetes (ACK) memungkinkan Anda mengonfigurasi komponen nginx-ingress-controller untuk kluster ACK. Komponen ini menyediakan URL yang dapat diakses oleh server di luar kluster, serta mendukung penyeimbangan beban server, terminasi SSL, dan hosting virtual berbasis nama. Anda juga dapat menggunakan nginx-ingress-controller untuk menulis data log permintaan HTTP ke stdout. Anda dapat mengaktifkan Simple Log Service untuk kluster ACK saat membuat kluster. Setelah Simple Log Service diaktifkan, Anda dapat memantau nginx-ingress-controller secara real-time dan melihat dasbor di Simple Log Service. Dasbor tersebut menampilkan statistik yang dikumpulkan dari log akses nginx-ingress-controller. Topik ini menjelaskan cara mengonfigurasi pengumpulan log untuk nginx-ingress-controller dan cara melihat log yang telah dikumpulkan.
Daftar isi
Prasyarat
Komponen logtail-ds terpasang di kluster Anda.
Secara default, logtail-ds dipasang saat Anda membuat kluster. Jika komponen ini tidak terpasang, Anda dapat memasangnya secara manual. Untuk informasi lebih lanjut, lihat Mengumpulkan Log Kontainer dari Kluster ACK.
Komponen alibaba-log-controller diperbarui.
Jalankan perintah
kubectl edit deployment alibaba-log-controller -n kube-systemuntuk memperbarui komponen tersebut.
Mengonfigurasi pengumpulan log untuk nginx-ingress-controller
Metode 1: Gunakan konsol ACK
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi sebelah kiri, klik Add-ons.
Di halaman Add-ons, klik tab Networking, temukan komponen Nginx Ingress Controller, klik ikon
di sudut kanan bawah kartu, lalu klik Enable Log Collection. Dalam pesan yang muncul, klik OK untuk mengaktifkan pengumpulan log.
Metode 2: Gunakan CLI
ACK mendefinisikan jenis CustomResourceDefinition (CRD) bernama AliyunLogConfig. Anda dapat membuat AliyunLogConfig untuk mengonfigurasi pengumpulan log. alibaba-log-controller secara otomatis menghasilkan konfigurasi untuk Simple Log Service untuk mengumpulkan data log dan memperbarui data di dasbor terkait.
Perhatikan item berikut saat Anda membuat AliyunLogConfig:
Jika nginx-ingress-controller sudah ada, Anda harus membuat ulang pod nginx-ingress-controller untuk mengaktifkan pengumpulan log setelah Anda membuat AliyunLogConfig.
Pastikan versi alibaba-log-controller adalah
0.2.0.0-76648ee-aliyunatau yang lebih baru. Setelah Anda memperbarui alibaba-log-controller, jika Anda menemukan bahwa AliyunLogConfig sudah dibuat, hapus AliyunLogConfig dan buat ulang.AliyunLogConfig hanya berlaku untuk format log default yang ditentukan oleh ACK untuk kontroler Ingress. Jika Anda telah mengubah format log, Anda harus memodifikasi pengaturan
processor_regexdalam konfigurasi AliyunLogConfig. Untuk informasi lebih lanjut, lihat Gunakan CRD untuk Mengumpulkan Log Kontainer dalam Mode DaemonSet.Atur
IncludeLabelke informasi label yang diambil dengan menggunakan perintah docker inspect.Namespace dan nama kontainer dalam kluster Kubernetes dipetakan secara terpisah ke label Docker berikut:
io.kubernetes.pod.namespacedanio.kubernetes.container.name. Sebagai contoh, pod yang Anda buat termasuk dalam namespace backend-prod dan nama kontainernya adalah worker-server.Jika Anda menentukan
io.kubernetes.pod.namespace : backend-prod, log semua kontainer dalam pod di namespace yang ditentukan akan dikumpulkan.Jika Anda menentukan
io.kubernetes.container.name : worker-server, log kontainer yang ditentukan akan dikumpulkan.
Kami merekomendasikan Anda hanya menentukan label
io.kubernetes.pod.namespacedanio.kubernetes.container.name. Jika Anda ingin menentukan label lain, Anda dapat mengonfigurasi parameter IncludeEnv atau ExcludeEnv. Untuk informasi lebih lanjut, lihat Gunakan Konsol Simple Log Service untuk Mengumpulkan stdout dan stderr Kontainer dalam Mode DaemonSet.
Untuk menonaktifkan pengumpulan log untuk nginx-ingress-controller, hapus AliyunLogConfig.
Buat file bernama k8s-nginx-ingress.yaml dan salin template YAML berikut ke file tersebut:
apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # Nama AliyunLogConfig. Nama harus unik dalam kluster. name: k8s-nginx-ingress # Namespace AliyunLogConfig. Atur nilai ke namespace kontroler Ingress dari mana Anda ingin mengumpulkan log. namespace: kube-system spec: # Nama Logstore yang ingin Anda gunakan. logstore: nginx-ingress # Kode produk. Jangan ubah nilai ini. productCode: k8s-nginx-ingress # Konfigurasi Logtail. logtailConfig: inputType: plugin # Nama konfigurasi Logtail. Nama harus sama dengan nilai parameter metadata.name. configName: k8s-nginx-ingress inputDetail: plugin: inputs: - type: service_docker_stdout detail: IncludeLabel: # Label kontainer Docker dari mana Anda ingin mengumpulkan log. # Nama kontainer dari mana Anda ingin mengumpulkan log adalah nginx-ingress-controller. # Jika Anda mengumpulkan log dari beberapa kontroler Ingress, log duplikat mungkin terkumpul. Kami merekomendasikan Anda membaca dan memahami deskripsi parameter IncludeLabel. io.kubernetes.container.name: nginx-ingress-controller Stderr: true Stdout: true processors: - type: processor_regex # Gunakan ekspresi reguler untuk mengekstraksi bidang. detail: KeepSource: false Keys: # Bidang yang diekstraksi diurutkan dalam urutan berikut: - client_ip - x_forward_for - remote_user - time - method - url - version - status - body_bytes_sent - http_referer - http_user_agent - request_length - request_time - proxy_upstream_name - upstream_addr - upstream_response_length - upstream_response_time - upstream_status - req_id - host - proxy_alternative_upstream_name NoKeyError: true NoMatchError: true # Ekspresi reguler yang digunakan untuk mengekstraksi bidang. Jika log cocok dengan ekspresi reguler, nilai bidang sebelumnya secara otomatis ditentukan berdasarkan konten di setiap grup tangkapan. Regex: ^(\S+)\s-\s\[([^]]+)]\s-\s(\S+)\s\[(\S+)\s\S+\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\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+)\s*(\S*)\s*\[*([^]]*)\]*.* SourceKey: contentJalankan perintah berikut untuk membuat AliyunLogConfig:
kubectl apply -f k8s-nginx-ingress.yaml
Melihat log akses dan dasbor nginx-ingress-controller
Masuk ke Konsol Simple Log Service.
Di bagian Proyek, klik nama proyek yang Anda tentukan saat membuat kluster ACK. Halaman detail proyek muncul. Secara default, proyek bernama dalam format k8s-log-{cluster-id} dibuat untuk kluster ACK.
Di panel navigasi sebelah kiri, klik ikon
. Lalu, klik dasbor di daftar dasbor untuk melihat data pada dasbor tersebut.
Ikhtisar Ingress
Dasbor Ikhtisar Ingress menampilkan informasi tentang lalu lintas jaringan yang mengalir melalui nginx-ingress-controller untuk situs web. Anda dapat melihat informasi berikut:
Data situs web 24 jam terakhir, termasuk jumlah tampilan halaman (PV), jumlah pengunjung unik (UV), lalu lintas masuk dan keluar, latensi rata-rata, proporsi pengguna seluler, dan proporsi kesalahan 5xx dan 404.
Data situs web 1 menit terakhir, termasuk jumlah PV, jumlah UV, tingkat keberhasilan permintaan, latensi rata-rata, latensi P95, dan latensi P99.
Informasi rinci tentang permintaan dalam 24 jam terakhir, termasuk tren PV 24 jam terakhir (berdasarkan PV dalam 24 jam terakhir), tren PV 7 hari terakhir (berdasarkan PV dalam 7 hari terakhir), distribusi regional sumber permintaan, area sumber utama dan kota, proporsi pengguna seluler, serta proporsi pengguna Android dan iOS.
URL teratas dalam 1 jam terakhir, termasuk 10 URL dengan PV tertinggi, 10 URL dengan latensi tertinggi, 10 URL yang mengembalikan kesalahan 5xx paling banyak, dan 10 URL yang mengembalikan kesalahan 404 paling banyak.
Pusat Akses Ingress
Dasbor Pusat Akses Ingress menampilkan informasi terbaru tentang permintaan. Anda dapat memperoleh dan menganalisis data berikut untuk membantu membuat keputusan bisnis: jumlah UV dan PV dalam 24 jam terakhir, distribusi regional PV dan UV, area teratas berdasarkan permintaan, kota teratas berdasarkan permintaan, browser teratas dengan PV tertinggi, alamat IP sumber teratas dengan PV tertinggi, proporsi pengguna seluler, serta proporsi pengguna Android dan iOS.
Pusat Pemantauan Ingress
Dasbor Pusat Pemantauan Ingress menyediakan data pemantauan dan peringatan waktu nyata untuk situs web. Anda dapat melihat data berikut dalam 1 jam terakhir: tingkat keberhasilan permintaan, proporsi kesalahan 5xx, proporsi kesalahan 404, proporsi permintaan yang tidak diteruskan, latensi rata-rata, latensi P95, latensi P99, latensi P999, distribusi permintaan berdasarkan kode status, proporsi PV di setiap Ingress, 10 Layanan teratas dengan PV tertinggi, 10 Layanan teratas dengan tingkat kegagalan permintaan tertinggi, 10 Layanan teratas dengan latensi rata-rata tertinggi, dan 10 Layanan teratas dengan permintaan terbanyak.

Pusat Pemantauan Ingress untuk penerapan blue-green
Dasbor Pusat Pemantauan Ingress untuk penerapan blue-green menampilkan data pemantauan waktu nyata dari Layanan yang digunakan untuk mengekspos versi aplikasi lama dan baru. Dasbor ini juga membandingkan data pemantauan Layanan tersebut. Ini memungkinkan Anda mengidentifikasi pengecualian dan mengembalikan versi aplikasi pada kesempatan pertama. Anda harus menentukan ServiceA dan ServiceB untuk perbandingan data pemantauan. Dasbor menampilkan data pemantauan dinamis berikut untuk setiap Layanan: jumlah PV, proporsi kesalahan 5xx, tingkat keberhasilan permintaan, latensi rata-rata, latensi P95, latensi P99, latensi P999, dan jumlah permintaan.

Pusat Pengecualian Ingress
Pusat Pengecualian Ingress secara otomatis mendeteksi anomali dalam log nginx-ingress-controller. Layanan ini menggunakan algoritma pembelajaran mesin yang disediakan oleh Simple Log Service dan algoritma analisis deret waktu untuk meningkatkan efisiensi deteksi.

Konfigurasi Peringatan
Simple Log Service memungkinkan analitik log interaktif dan menyediakan dasbor visual. Anda juga dapat menggunakan Simple Log Service untuk mengonfigurasi peringatan berdasarkan data pada dasbor. Anda dapat memilih satu atau lebih metode notifikasi peringatan, seperti email, webhook chatbot DingTalk, webhook kustom, dan pesan Short Message Service (SMS).
Untuk informasi lebih lanjut tentang cara mengonfigurasi peringatan, lihat Konfigurasi Aturan Peringatan.
Contoh berikut menjelaskan cara mengonfigurasi peringatan berdasarkan proporsi kesalahan 5xx. Setelah Anda mengonfigurasi peringatan, sistem memeriksa apakah kondisi peringatan terpenuhi setiap 5 menit. Jika proporsi kesalahan 5xx dalam rentang waktu yang ditentukan mencapai 1%, peringatan akan dipicu.
Di bagian Dasbor, klik dasbor Ingress Monitoring Center. Di halaman Pusat Pemantauan Ingress, gerakkan pointer ke ikon
di sudut kanan atas grafik 5XX Proportion dan klik Save as Alert (Old Version).
Di wizard Create Alert, atur Alert Name, Associated Chart, Frequency, dan Trigger Condition. Bidang
totaldalam pernyataan kueri menunjukkan proporsi kesalahan 5XX. Tentukan total > 1 di bidang Kondisi Pemicu.Di halaman wizard Notifications, pilih satu atau lebih metode peringatan berdasarkan kebutuhan Anda dan atur parameter. Lalu, klik Submit untuk membuat aturan peringatan.
Berlangganan ke dasbor
Simple Log Service memungkinkan Anda berlangganan ke dasbor. Fitur ini mengambil snapshot dari dasbor dan mengirimkan snapshot melalui email atau pesan grup DingTalk pada interval tertentu.
Untuk informasi lebih lanjut tentang cara berlangganan ke dasbor, lihat Berlangganan ke Dasbor.
Contoh berikut menjelaskan cara berlangganan ke dasbor Ikhtisar Ingress. Setelah Anda berlangganan ke dasbor, pesan dikirim pada pukul 10:00 setiap hari ke grup DingTalk yang ditentukan.
Di bagian Dasbor, klik dasbor Ingress Overview V1.2. Di halaman Ikhtisar Ingress V1.2, pilih .
Di wizard Create Subscription, pilih Harian dan 10:00 di bidang Frekuensi. Matikan Add Watermark. Lalu, klik Next.
Di halaman wizard Notifikasi, pilih WebHook-DingTalk Bot dari daftar drop-down Notifikasi dan atur Request URL ke URL webhook bot chat DingTalk Anda. Lalu, klik Submit untuk menyelesaikan konfigurasi.
Gunakan Dasbor Ingress dengan ARMS
Masuk ke Konsol Log Service.
Di bagian Projects, klik nama proyek yang Anda tentukan saat membuat kluster ACK. Halaman detail proyek muncul. Secara default, proyek bernama dalam format k8s-log-{cluster-id} dibuat untuk kluster ACK.
Di panel navigasi sebelah kiri, klik ikon
. Klik Ingress Overview V1.2 di daftar Dashboard untuk mendapatkan informasi yang diperlukan. Sebagai contoh, Anda dapat menemukan bagian Top 10 Request URLs by Latency dan memeriksa bidang URL(ARMS Troubleshooting) untuk melihat 10 URL permintaan teratas yang diurutkan berdasarkan latensi. Anda dapat mengklik URL untuk pergi ke halaman kueri jejak ARMS dari Layanan yang sesuai. Anda dapat melihat detail jejak Layanan di konsol ARMS.
Referensi
Untuk informasi lebih lanjut tentang cara memfilter log yang dikumpulkan, lihat Plugin Tambahan: Filter Log dengan Ekspresi Reguler.