Panduan ini menjelaskan cara mengumpulkan log NGINX dari instans Elastic Compute Service (ECS) menggunakan LoongCollector dari Simple Log Service (SLS). Anda akan mempelajari cara mengonfigurasi pengumpulan log, melakukan kueri data dengan SQL, melihat dasbor visualisasi, menyiapkan notifikasi, serta membersihkan resource untuk menghindari biaya.
Prasyarat
Aktifkan layanan dan siapkan akun
Aktifkan SLS: Jika ini pertama kalinya Anda menggunakan SLS, login ke Konsol Simple Log Service dan aktifkan layanan sesuai petunjuk.
Siapkan akun:
Login dengan Akun Alibaba Cloud: Akun ini memiliki semua izin secara default dan dapat digunakan langsung.
Login dengan Pengguna RAM: Akun Alibaba Cloud harus memberikan kebijakan akses yang diperlukan kepada Pengguna RAM:
AliyunLogFullAccess: Digunakan untuk membuat dan mengelola resource SLS seperti proyek dan logstore.AliyunECSFullAccess: Digunakan untuk menginstal agen pengumpulan pada instans ECS.AliyunOOSFullAccess: Digunakan untuk menginstal agen pengumpulan secara otomatis pada instans ECS melalui Alibaba Cloud Operation Orchestration Service (OOS).
Di lingkungan produksi, Anda dapat membuat kebijakan izin kustom untuk pengelolaan izin Pengguna RAM yang lebih detail halus.
Siapkan instans ECS
Pastikan security group dari instans ECS mengizinkan lalu lintas outbound pada Port 80 (HTTP) dan Port 443 (HTTPS).
Buat log tiruan
Buat file skrip bernama
generate_nginx_logs.shdan tempelkan konten berikut ke dalam file. Skrip ini menulis entri log akses NGINX standar ke file/var/log/nginx/access.logsetiap 5 detik.Berikan izin eksekusi:
chmod +x generate_nginx_logs.sh.Jalankan skrip di latar belakang:
nohup ./generate_nginx_logs.sh &.
Buat proyek dan logstore
Proyek adalah unit manajemen resource di SLS dan digunakan untuk mengisolasi data dari proyek yang berbeda. Logstore adalah unit penyimpanan untuk data log.
Masuk ke Konsol Layanan Log Sederhana.
Klik Create Project:
Wilayah: Pilih wilayah yang sama dengan instance ECS Anda. Ini memungkinkan Anda mengumpulkan log melalui jaringan internal Alibaba Cloud, yang mempercepat proses pengumpulan log.
Nama Proyek: Masukkan nama unik global dalam Alibaba Cloud, seperti
nginx-quickstart-abc.
Pertahankan pengaturan default untuk konfigurasi lainnya dan klik Create.
Pada halaman yang menunjukkan proyek telah dibuat, klik Create Logstore.
Masukkan Logstore Name, misalnya
nginx-access-log, jangan ubah konfigurasi lainnya, lalu klik OK.Secara default, sebuah logstore medium dibuat, yang ditagih berdasarkan volume data yang ditulis.
Instal LoongCollector
Pada kotak dialog yang muncul setelah logstore dibuat, klik OK untuk membuka panel Quick Data Import.
Pada kartu Nginx - Text Logs, klik Integrate Now.
Machine Group Configurations:
Scenario: Servers
Installation Environment: ECS
Klik Create Machine Group. Pada panel yang muncul, pilih instans ECS target.
Klik Install and Create Machine Group. Setelah instalasi berhasil, konfigurasikan Name kelompok mesin, misalnya
my-nginx-server, lalu klik OK.CatatanJika instalasi gagal atau tetap tertunda, periksa apakah wilayah ECS sama dengan wilayah proyek.
Klik Next untuk memeriksa status heartbeat kelompok mesin.
Saat pertama kali membuat kelompok mesin, jika status heartbeat adalah FAIL, klik Automatic Retry. Status akan berubah menjadi OK setelah sekitar dua menit.
Buat konfigurasi pengumpulan
Setelah status heartbeat menjadi OK, klik Next untuk menuju halaman Logtail Configuration:
: Masukkan nama konfigurasi, misalnya
nginx-access-log-config.: Jalur untuk pengumpulan log,
/var/log/nginx/access.log.Processor Configurations:
Log Sample: Klik Add Log Sample dan tempel contoh entri log:
192.168.*.* - - [15/Apr/2025:16:40:00 +0800] "GET /nginx-logo.png HTTP/1.1" 0.000 514 200 368 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.*.* Safari/537.36"Processing Method: Pilih Data Parsing (NGINX Mode). Pada kolom NGINX Log Configuration, konfigurasikan
log_format. Salin dan tempel konten berikut, lalu klik OK.log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $request_time $request_length';Di lingkungan produksi,
log_formatdi sini harus konsisten dengan definisi dalam file konfigurasi NGINX Anda, yang biasanya terletak di /etc/nginx/nginx.conf.Contoh penguraian log:
Log mentah
Log terurai terstruktur
192.168.*.* - - [15/Apr/2025:16:40:00 +0800] "GET /nginx-logo.png HTTP/1.1" 0.000 514 200 368 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.*.* Safari/537.36"body_bytes_sent: 368 http_referer: - http_user_agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.x.x Safari/537.36 remote_addr:192.168.*.* remote_user: - request_length: 514 request_method: GET request_time: 0.000 request_uri: /nginx-logo.png status: 200 time_local: 15/Apr/2025:16:40:00
Klik Next untuk menuju halaman Query and Analysis Configurations. Konfigurasi pengumpulan memerlukan waktu sekitar satu menit untuk diterapkan. Klik Automatic Refresh. Jika data pratinjau muncul, konfigurasi telah diterapkan.
Lakukan kueri dan analisis log
Klik Next untuk menuju halaman terakhir. Klik Query Logs. Anda akan diarahkan ke halaman kueri dan analisis logstore target. Anda dapat menulis pernyataan analitik SQL untuk mengekstraksi metrik bisnis dan O&M utama dari log yang telah diurai. Atur rentang waktu ke Last 15 Minutes:
Jika muncul pop-up error, itu karena indeks belum dikonfigurasi. Tutup pop-up tersebut dan tunggu selama satu menit. Anda kemudian dapat melihat konten log dari file access.log.
Contoh 1: Jumlah tampilan halaman (PVs) situs web
Hitung jumlah total entri log dalam rentang waktu yang ditentukan.
* | SELECT count(*) AS pvContoh 2: Statistik permintaan dan laju error per menit
Hitung jumlah total permintaan, jumlah permintaan kesalahan (kode status HTTP ≥ 400), dan tingkat kesalahan per menit.
* | SELECT date_trunc('minute', __time__) as time, count(1) as total_requests, count_if(status >= 400) as error_requests, round(count_if(status >= 400) * 100.0 / count(1), 2) as error_rate GROUP BY time ORDER BY time DESC LIMIT 100Contoh 3: Statistik PV berdasarkan metode permintaan (GET, POST, dll.)
Kelompokkan dan hitung jumlah tampilan halaman per menit dan metode permintaan (GET, POST, dll.).
* | SELECT date_format(minute, '%m-%d %H:%i') AS time, request_method, pv FROM ( SELECT date_trunc('minute', __time__) AS minute, request_method, count(*) AS pv FROM log GROUP BY minute, request_method ) ORDER BY minute ASC LIMIT 10000
Visualisasikan data pada dasbor
Setelah Anda mengonfigurasi plug-in parsing NGINX, SLS secara otomatis membuat dasbor preset bernama nginx-access-log_NGINX Access Log.
Pada panel navigasi di sebelah kiri, klik
dan pilih .Temukan dan klik nama dasbor tersebut untuk melihat grafik metrik inti seperti jumlah tampilan halaman (PVs), pengunjung unik (UVs), laju error, dan distribusi metode permintaan.
Semua grafik dapat disesuaikan dan dimodifikasi sesuai kebutuhan.
Konfigurasi pemantauan dan notifikasi
Konfigurasikan aturan notifikasi untuk secara otomatis mengirimkan pemberitahuan ketika layanan mengalami anomali, seperti lonjakan jumlah error.
Di panel navigasi di sebelah kiri, klik
Alerts.Buat kebijakan tindakan:
Di tab , klik Create.
Konfigurasikan ID dan Name, misalnya
send-notification-to-admin.Pada Primary Action Policy, klik
Action Group.Pilih Notification Method, seperti SMS Message, konfigurasikan Recipient, dan pilih Alert Template.
Klik Confirm.
Buat aturan peringatan:
Beralih ke tab Alert Rules dan klik Create Alert.
Masukkan nama aturan, seperti
Terlalu banyak kesalahan server 5xx.Pada kolom Query Statistics, klik Create untuk mengatur kondisi kueri.
Logstore: Pilih
nginx-access-logyang telah Anda buat.Time Range: 15 minutes (Relative).
: Masukkan
status >= 500 | SELECT *.Klik Preview untuk memastikan data dapat dikueri, lalu klik OK.
Trigger Condition: Konfigurasikan aturan untuk memicu peringatan kritisketika hasil kueri berisi lebih dari 100 entri.
Konfigurasi ini berarti notifikasi dipicu jika terjadi lebih dari 100 error 5xx dalam 15 menit.
: Pilih Simple Log Service Notification dan aktifkan.
Action Policy: Pilih kebijakan aksi yang telah Anda buat pada langkah sebelumnya.
Repeat Interval: Atur menjadi 15 menit untuk menghindari notifikasi berulang yang berlebihan.
Klik OK untuk menyimpan aturan peringatan.
Verifikasi: Saat kondisi notifikasi terpenuhi, saluran notifikasi yang dikonfigurasi akan menerima peringatan. Lihat semua catatan notifikasi yang dipicu pada halaman Alert History.
Bersihkan resource
Untuk menghindari biaya yang tidak perlu, bersihkan semua resource yang telah Anda buat setelah selesai.
Hentikan Skrip Pembuatan Log
Login ke instans ECS dan jalankan perintah berikut untuk menghentikan skrip pembuatan log yang berjalan di latar belakang.
kill $(ps aux | grep '[g]enerate_nginx_logs.sh' | awk '{print $2}')Menguninstall LoongCollector (Opsional)
Pada kode contoh, Anda dapat mengganti
${region_id}dengancn-hangzhou. Untuk mempercepat eksekusi, ganti${region_id}dengan wilayah instans ECS Anda.wget https://aliyun-observability-release-${region_id}.oss-${region_id}.aliyuncs.com/loongcollector/linux64/latest/loongcollector.sh -O loongcollector.sh;Jalankan perintah uninstall.
chmod +x loongcollector.sh; sudo ./loongcollector.sh uninstall;
Hapus Proyek
Pada Konsol Simple Log Service, buka halaman Daftar Proyek dan temukan proyek yang telah Anda buat, misalnya
nginx-quickstart-xxx.Di kolom Aksi, klik Delete.
Pada panel hapus, masukkan nama proyek dan pilih alasan penghapusan.
Klik OK. Menghapus proyek juga akan menghapus semua resource terkaitnya, termasuk logstore, konfigurasi pengumpulan, dasbor, dan aturan notifikasi.
PeringatanSetelah proyek dihapus, semua data log dan informasi konfigurasinya dilepas dan tidak dapat dipulihkan. Sebelum menghapus proyek, pastikan tindakan tersebut untuk mencegah kehilangan data.
Langkah selanjutnya
Anda telah menyelesaikan proses pengumpulan log, kueri dan analisis, visualisasi dasbor, serta konfigurasi notifikasi. Kami merekomendasikan Anda membaca dokumen berikut untuk lebih memahami konsep inti dan merencanakan sistem resource log berdasarkan kebutuhan bisnis Anda:
Pelajari metode pengumpulan data dan pilih yang sesuai dengan skenario bisnis Anda.
Pahami hirarki resource penyimpanan, rencanakan siklus hidup resource, dan alokasikan jumlah shard yang wajar.
Tanya Jawab Umum
Apa yang harus saya lakukan jika waktu tampilan tidak konsisten dengan waktu log asli setelah pengumpulan?
Secara default, bidang waktu (__time__) di SLS menggunakan waktu saat log tiba di server. Untuk menggunakan waktu dari log asli, tambahkan plug-in Time parsing ke konfigurasi pengumpulan.
Apakah saya akan dikenakan biaya hanya untuk membuat proyek dan penyimpanan log?
Saat Anda membuat logstore, SLS secara default mencadangkan resource shard. Hal ini dapat menimbulkan biaya sewa shard aktif. Untuk informasi lebih lanjut, lihat Mengapa saya dikenai biaya sewa shard aktif?
Bagaimana cara memecahkan masalah kegagalan pengumpulan log?
Pengumpulan log menggunakan Logtail dapat gagal karena alasan seperti heartbeat Logtail abnormal, error pengumpulan, atau konfigurasi pengumpulan Logtail yang salah. Untuk informasi troubleshooting, lihat Troubleshoot Logtail log collection failures.
Mengapa saya bisa mengeksekusi kueri log tetapi tidak bisa menganalisisnya?
Untuk menganalisis log, Anda harus mengonfigurasi indeks bidang untuk bidang terkait dan mengaktifkan fitur statistik. Periksa konfigurasi indeks logstore Anda.
Bagaimana cara menghentikan penagihan untuk SLS?
SLS tidak dapat dinonaktifkan setelah diaktifkan. Jika Anda tidak lagi menggunakan SLS, hentikan penagihan dengan menghapus semua proyek di bawah akun Anda.