Alibaba Cloud Ingress mencatat permintaan HTTP ke stdout. Aktifkan pengumpulan log saat membuat kluster, lalu gunakan Simple Log Service (SLS) untuk menganalisis log akses Nginx Ingress dan memantau status Ingress secara real-time. Topik ini menjelaskan cara menerapkan dan melihat log akses Nginx Ingress.
Prasyarat
Sebelum memulai, pastikan Anda telah:
loongcollector terinstal di kluster Anda (secara default saat pembuatan kluster). Jika belum ada, lihat Kumpulkan log teks dari kontainer Kubernetes dalam mode DaemonSet.
alibaba-log-controller telah diperbarui:
kubectl edit deployment alibaba-log-controller -n kube-system
Aktifkan pengumpulan log untuk nginx-ingress-controller
Gunakan Konsol ACK kecuali jika Anda perlu mengotomatiskan penyiapan melalui pipeline GitOps atau CI/CD.
Konsol ACK
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Konsol ACK Clusters.
Pada halaman Clusters, klik kluster target. Di panel navigasi kiri, pilih Operations > Add-ons.
Pada halaman Add-ons, klik tab Networking. Pada kartu Nginx Ingress Controller, klik ikon
dan pilih Enable Log Collection. Klik OK.
CLI
ACK menyediakan CRD bernama AliyunLogConfig. Saat Anda membuat AliyunLogConfig, alibaba-log-controller secara otomatis menghasilkan konfigurasi SLS dan memperbarui dasbor.
Sebelum membuat AliyunLogConfig:
Jika Pod nginx-ingress-controller sudah ada, buat ulang Pod tersebut setelah menerapkan
AliyunLogConfigagar pengumpulan log berlaku.alibaba-log-controller harus versi
0.2.0.0-76648ee-aliyunatau lebih baru. JikaAliyunLogConfigsudah ada setelah memperbarui controller, hapus dan buat ulang.Konfigurasi ini mengasumsikan format log ACK default. Jika Anda menyesuaikan format log, perbarui bagian
processor_regex. Lihat Gunakan CRD untuk mengumpulkan log kontainer dalam mode DaemonSet.
Buat file bernama
k8s-nginx-ingress.yamldengan konten berikut:Tetapkan
IncludeLabelke label Docker daridocker inspect.io.kubernetes.pod.namespacememilih berdasarkan namespace;io.kubernetes.container.namememilih berdasarkan kontainer. Misalnya,io.kubernetes.pod.namespace: backend-prodmengumpulkan semua kontainer dalam namespace tersebut;io.kubernetes.container.name: worker-servermenargetkan kontainer tertentu. Tentukan hanya dua label ini. Untuk memfilter berdasarkan variabel lingkungan, gunakanIncludeEnvatauExcludeEnv. Lihat Gunakan Konsol Simple Log Service untuk mengumpulkan stdout dan stderr kontainer dalam mode DaemonSet.Field
Description
Modify?
metadata.namespaceNamespace dari controller Ingress
Ya, jika bukan
kube-systemspec.logstoreNama Logstore SLS
Opsional
IncludeLabelLabel Docker yang digunakan untuk memilih kontainer
Ya, jika mengumpulkan dari namespace tertentu
processor_regex>RegexEkspresi reguler untuk penguraian log
Hanya jika Anda mengubah format log default
apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # Nama unik untuk AliyunLogConfig ini dalam kluster. name: k8s-nginx-ingress # Tetapkan ke namespace dari controller Ingress tempat Anda ingin mengumpulkan log. namespace: kube-system spec: # Logstore SLS tempat log disimpan. logstore: nginx-ingress # Kode produk — jangan ubah nilai ini. productCode: k8s-nginx-ingress logtailConfig: inputType: plugin # Harus sesuai dengan metadata.name. configName: k8s-nginx-ingress inputDetail: plugin: inputs: - type: service_docker_stdout detail: IncludeLabel: # Kumpulkan log dari kontainer nginx-ingress-controller. # Jika beberapa controller Ingress berjalan di kluster Anda, # pengumpulan berdasarkan nama kontainer dapat menghasilkan log duplikat. # Tinjau perilaku IncludeLabel sebelum menerapkan. io.kubernetes.container.name: nginx-ingress-controller Stderr: true Stdout: true processors: - type: processor_regex detail: KeepSource: false # Field yang diekstraksi dari setiap baris log, berurutan: Keys: - 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 memetakan setiap grup tangkapan ke Keys di atas. 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: contentTabel berikut menjelaskan field yang kemungkinan besar akan Anda sesuaikan:
Terapkan konfigurasi:
kubectl apply -f k8s-nginx-ingress.yaml
Untuk menonaktifkan pengumpulan log, hapus AliyunLogConfig:
kubectl delete aliyunlogconfig k8s-nginx-ingress -n kube-systemLihat log akses dan dasbor
Masuk ke Konsol Simple Log Service.
Di bagian Projects, klik proyek untuk kluster ACK Anda (bernama
k8s-log-{cluster-id}).Di panel navigasi kiri, klik ikon
, lalu pilih dasbor dari daftar.
Dasbor yang tersedia:
Dashboard | Time range | What it shows |
Ingress overview | Last 24 h / last 1 min | Traffic volume, latency, error rates, geographic distribution, top URLs |
Ingress access center | Last 24 h | UV/PV counts, regional distribution, top browsers and source IPs, mobile breakdown |
Ingress monitoring center | Last 1 h | Real-time success rate, error proportions, latency percentiles, top Services by PV and failure rate |
Ingress monitoring center for blue-green deployments | Dynamic | Side-by-side comparison of ServiceA and ServiceB metrics for safe rollouts |
Ingress exceptions center | Automatic | Anomaly detection powered by SLS machine learning and time series analysis |
Ingress overview
Memantau trafik tingkat website melalui nginx-ingress-controller. Metrik utama:
Last 24 hours: jumlah tampilan halaman (PVs), pengunjung unik (UVs), lalu lintas arah masuk/keluar, latensi rata-rata, proporsi pengguna seluler, proporsi error 5xx, proporsi error 404
Last 1 minute: PVs, UVs, tingkat keberhasilan permintaan, latensi rata-rata, latensi P95, latensi P99
Trends and distribution: tren PV selama 24 jam dan 7 hari, distribusi permintaan berdasarkan wilayah, wilayah dan kota teratas, rincian Android/iOS
Top URLs (last 1 hour): 10 URL dengan PV tertinggi, latensi tertinggi, error 5xx terbanyak, dan error 404 terbanyak
Ingress access center
Asal permintaan dan distribusi klien selama 24 jam: jumlah UV/PV, rincian wilayah, browser teratas, IP sumber, dan proporsi seluler.
Ingress monitoring center
Metrik real-time dari jam terakhir untuk mendeteksi dan menangani masalah:
Tingkat keberhasilan permintaan, proporsi 5xx, proporsi 404, dan proporsi permintaan yang tidak diteruskan ke upstream
Latensi rata-rata, latensi P95, latensi P99, dan latensi P999
Distribusi permintaan berdasarkan kode status, dan proporsi PV per Ingress
10 layanan teratas berdasarkan PV, tingkat kegagalan, latensi rata-rata, dan total permintaan

Ingress monitoring center for blue-green deployments
Perbandingan berdampingan metrik ServiceA dan ServiceB — PV, tingkat error, persentil latensi, dan total permintaan — untuk mendeteksi regresi selama peluncuran biru-hijau.

Ingress exceptions center
Mendeteksi anomali dalam log nginx-ingress-controller menggunakan pembelajaran mesin dan analisis deret waktu SLS.

Konfigurasi notifikasi
Konfigurasikan aturan notifikasi pada grafik dasbor mana pun, dengan notifikasi melalui email, chatbot DingTalk, webhook, atau SMS.
Lihat Konfigurasi aturan notifikasi.
Contoh ini membuat notifikasi yang aktif ketika proporsi error 5xx melebihi 1%, diperiksa setiap 5 menit.
Di bagian Dashboard, klik Ingress Monitoring Center. Arahkan kursor ke ikon
di pojok kanan atas grafik 5XX Proportion dan klik Save as Alert (Old Version).Pada wizard Create Alert, tetapkan Alert Name, Associated Chart, Frequency, dan Trigger Condition. Field
totalmerepresentasikan proporsi error 5xx; tetapkan Trigger Condition ketotal > 1.Pada halaman Notifications, pilih saluran notifikasi, konfigurasi parameter, lalu klik Submit.
Berlangganan dasbor
Kirim snapshot dasbor terjadwal ke alamat email atau grup DingTalk. Lihat Berlangganan dasbor.
Contoh ini berlangganan dasbor Ingress Overview V1.2 dan mengirim snapshot harian ke grup DingTalk pada pukul 10.00.
Di bagian Dashboard, klik Ingress Overview V1.2. Pilih Subscribe > Create.
Pada wizard Create Subscription, tetapkan Frequency ke Daily dan 10:00. Matikan Add Watermark, lalu klik Next.
Pada halaman Notifications, pilih WebHook-DingTalk Bot dari Notifications dan tetapkan Request URL ke URL webhook chatbot DingTalk Anda. Klik Submit.
Gunakan dasbor Ingress dengan ARMS
Dasbor Ingress Overview V1.2 terintegrasi dengan Application Real-Time Monitoring Service (ARMS) untuk memberikan visibilitas jejak end-to-end.
Masuk ke Konsol Simple Log Service.
Di bagian Projects, klik proyek untuk kluster ACK Anda.
Di panel navigasi kiri, klik ikon
dan pilih Ingress Overview V1.2 dari daftar Dashboard.Di bagian Top 10 Request URLs by Latency, klik URL di kolom URL(ARMS Troubleshooting) untuk melihat detail jejak ARMS untuk layanan tersebut.
Langkah selanjutnya
Plugin penyaringan data — terapkan filter kueri log untuk menganalisis permintaan atau rentang waktu tertentu.