Di halaman Analisis Log pada konsol Security Center, Anda dapat menjalankan kueri log kustom dan analisis untuk berbagai skenario kompleks. Topik ini menjelaskan sintaks untuk pernyataan kueri dan analisis.
Ikhtisar
Pilih di panel navigasi sisi kiri konsol Security Center, lalu masukkan pernyataan SQL dalam Search & Analyze untuk menjalankan kueri log kustom dan analisis. Pernyataan kueri log terdiri dari dua bagian: sintaks pencarian dan sintaks analitik, yang dipisahkan oleh garis vertikal (|).
Saat menjalankan kueri log kustom dan analisis, sintaks pencarian dan analitik bersifat opsional. Berikut adalah penjelasan untuk sintaks pencarian dan analitik:
Pencarian: Gunakan kata kunci, kondisi pencocokan kabur, nilai numerik, rentang, atau kombinasi untuk membuat kondisi pencarian. Jika nilai bagian Pencarian adalah tanda bintang (*) atau kosong, data dari periode yang ditentukan tidak difilter. Dalam hal ini, semua data dari periode tersebut digunakan untuk analisis.
Analitik: Hitung dan kumpulkan statistik dari hasil pencarian atau data lengkap. Jika nilai bagian Analitik kosong, hasil kueri dikembalikan tanpa statistik.
Sintaks pencarian
Sintaks pencarian Layanan Log Sederhana mendukung kueri teks penuh dan kueri bidang. Kotak kueri mendukung fitur seperti pencarian multi-baris dan penyorotan sintaks.
Full-text query
Masukkan kata kunci untuk mencari log tanpa menentukan bidang. Untuk beberapa kata kunci, letakkan setiap kata kunci dalam tanda kutip (
") dan pisahkan dengan spasi atau operatorand. Contoh:Query with multiple keywords specified
Cari log yang berisi
www.aliyundoc.comdan404. Contoh:www.aliyundoc.com 404atau:
www.aliyundoc.com and 404Conditional query
Cari log yang berisi www.aliyundoc.com dan
error, atau log yang mencakupwww.aliyundoc.comdan404. Contoh:www.aliyundoc.com and (error or 404)Fuzzy search
Cari log yang berisi
www.aliyundoc.comdan dimulai denganfailed_. Contoh:www.aliyundoc.com and failed_*CatatanKueri teks penuh hanya mendukung akhiran dengan tanda bintang (
*). Awalan dengan tanda bintang (*) tidak didukung.
Field-specific search
Filter data bidang numerik menggunakan
Bidang: NilaiatauBidang >= Nilai. Gabungkan kedua format tersebut menggunakanandatauor. Format ini juga dapat digunakan bersama dengan kueri teks penuh melalui kombinasi yang ditentukan olehanddanor.Layanan Log Sederhana mendukung kueri lebih akurat berdasarkan bidang.
Multi-field query
Cari log peringatan dengan tingkat keparahan serious. Contoh:
__topic__ : sas-security-log and level: seriousCari log masuk SSH pada klien dengan alamat IP 1.2.XX.XX. Contoh:
__topic__:aegis-log-login and ip:1.2.XX.XX and warn_type:SSHLOGINCatatanSetiap log memiliki bidang
__topic__yang menunjukkan topik log. Log dibedakan berdasarkan bidang ini. Dalam contoh-contoh ini, bidang sepertilevel,warn_type, danipadalah bidang untuk jenis log tertentu.Numeric field query
Cari log kueri DNS internal dengan waktu respons lebih dari 1 detik. Contoh:
__topic__:local-dns and time_usecond > 1000000Kueri berbasis rentang juga didukung. Misalnya, cari log DNS internal dengan waktu respons lebih dari 1 detik tetapi kurang dari atau sama dengan 10 detik. Contoh:
__topic__:local-dns and time_usecond in [1000000,10000000]
Untuk informasi lebih lanjut tentang sintaks, lihat Ikhtisar Pencarian Log.
Sintaks analitik
Gunakan pernyataan SQL-92 untuk menganalisis dan mengumpulkan statistik pada log. Untuk informasi lebih lanjut tentang sintaks dan fungsi yang didukung oleh Layanan Log Sederhana, lihat Ikhtisar Analisis Log.
Dalam pernyataan analitik, bagian from log mirip dengan bagian from <nama tabel> dalam pernyataan SQL standar dan dapat dihilangkan.
Secara default, Layanan Log Sederhana mengembalikan 100 entri log pertama. Ubah jumlah entri log yang ingin dikembalikan menggunakan sintaks LIMIT. Untuk informasi lebih lanjut, lihat Klausa LIMIT.
Kueri dan analisis log berbasis waktu
Setiap entri log memiliki bidang bawaan __time__, yang menunjukkan waktu pembuatan entri log. Bidang ini memfasilitasi analisis statistik berbasis waktu. Nilainya adalah timestamp UNIX yang mewakili jumlah detik sejak epoch 1 Januari 1970, 00:00:00 UTC. Oleh karena itu, timestamp harus dikonversi ke format yang didukung sebelum ditampilkan.
Select and display the time
Dalam contoh ini, kueri 10 log masuk terbaru dengan alamat IP
1.2.XX.XXdalam rentang waktu tertentu. Nilai yang dikembalikan mencakup waktu, IP sumber, dan tipe log masuk. Contoh:__topic__: aegis-log-login and ip: 1.2.XX.XX | select date_format(__time__, '%Y-%m-%d %H:%i:%s') as time, warn_ip, warn_type order by __time__ desc limit 10Calculate the time
Gunakan
__time__untuk menghitung jumlah hari setelah log masuk. Contoh:__topic__: aegis-log-login and ip: 1.2.XX.XX | select date_format(__time__, '%Y-%m-%d %H:%i:%s') as time, warn_ip, warn_type , round((to_unixtime(now()) - __time__)/86400,1) as "days_passed" order by __time__ desc limit 10Dalam contoh ini,
round((to_unixtime(now()) - __time__)/86400, 1)digunakan untuk perhitungan. Pertama, fungsi ini menggunakanto_unixtimeuntuk mengonversi waktu yang dikembalikan olehnow()menjadi timestamp UNIX. Kedua, ia mengurangi bidang bawaan__time__dari nilai yang dihitung untuk mendapatkan jumlah detik yang telah berlalu. Kemudian, fungsi ini membagi nilai yang dihitung dengan 86400, yaitu total jumlah detik dalam sehari. Terakhir, fungsiround(data, 1)membulatkan nilai yang diperoleh ke satu tempat desimal untuk menghitung jumlah hari yang telah berlalu sejak pembuatan setiap log serangan.Group statistics based on a specific time
Jika ingin mengetahui tren log masuk untuk perangkat dalam rentang waktu tertentu, jalankan pernyataan SQL berikut:
__topic__: aegis-log-login and ip: 1.2.XX.XX | select date_trunc('day', __time__) as dt, count(1) as PV group by dt order by dtDalam contoh ini, bidang bawaan
__time__dilewatkan ke fungsidate_trunc('day', ..)untuk menyelaraskan waktu berdasarkan hari. Setiap entri log dikelompokkan ke partisi hari di mana ia termasuk untuk memfasilitasi perhitungan jumlah total(count(1)). Entri log diurutkan berdasarkan blok waktu partisi. Anda dapat menggunakan nilai lain untuk parameter pertama fungsidate_truncuntuk mengelompokkan entri log berdasarkan unit waktu lainnya, sepertisecond,minute,hour,week,month, danyear. Untuk informasi lebih lanjut tentang fungsi ini, lihat Fungsi Tanggal dan Waktu.Group statistics based on a flexible time
Jika ingin mengetahui aturan waktu pengelompokan yang lebih fleksibel, seperti tren log masuk setiap 5 menit untuk perangkat akun Anda, jalankan pernyataan SQL berikut:
__topic__: aegis-log-login | select from_unixtime(__time__ - __time__% 300) as dt, count(1) as PV group by dt order by dt limit 1000Dalam contoh ini, bidang waktu bawaan digunakan untuk menghitung
__time__ - __time__% 300dan fungsifrom_unixtimedigunakan untuk pemformatan. Setiap entri log dikelompokkan ke partisi 5 menit (300 detik) untuk memfasilitasi perhitungan jumlah total(count(1)). Entri log diurutkan berdasarkan blok waktu partisi untuk mendapatkan 1.000 entri log pertama, yang setara dengan memilih data dalam 83 jam pertama.Untuk informasi lebih lanjut tentang fungsi terkait waktu, lihat Fungsi Tanggal dan Waktu. Sebagai contoh, fungsi
date_parsedandate_formatdapat mengonversi format waktu ke format lain.
Kueri dan analisis log berbasis alamat IP klien
Bidang warn_ip dalam entri log log masuk menunjukkan alamat IP sumber dari log masuk.
Distribusi Negara Sumber Log Masuk
Kueri distribusi negara sumber dari mana pengguna masuk ke server. Contoh:
__topic__: aegis-log-login and uuid: 12344567 | SELECT ip_to_country(warn_ip) as country, count(1) as "Jumlah log masuk" group by countryDalam contoh ini, fungsi
ip_to_countrydigunakan untuk mengambil negara yang sesuai denganwarn_ip, yang menentukan alamat IP sumber dari log masuk.Distribusi Identitas Log Masuk
Gunakan fungsi
ip_to_provinceuntuk mengambil distribusi log masuk yang lebih rinci berdasarkan provinsi. Contoh:__topic__: aegis-log-login and uuid: 12344567 | SELECT ip_to_province(warn_ip) as province, count(1) as "Jumlah log masuk" group by provinceDalam contoh ini, fungsi
ip_to_provincedigunakan untuk mengambil provinsi sumber ke mana alamat IP milik. Jika alamat IP bukan dari Tiongkok, sistem mencoba mengonversinya ke provinsi atau negara bagian berdasarkan lokasi negara dari alamat IP. Namun, jika Anda memilih peta Tiongkok, provinsi atau negara bagian tidak dapat ditampilkan.Distribusi Geotermal Log Masuk
Gunakan fungsi
ip_to_geountuk mengambil distribusi geotermal log masuk:__topic__: aegis-log-login and uuid: 12344567 | SELECT ip_to_geo(warn_ip) as geo, count(1) as "Jumlah log masuk" group by geo limit 10000Dalam contoh ini, fungsi
ip_to_geodigunakan untuk mengambil lintang dan bujur alamat IP. LIMIT diatur ke 10000 untuk mengambil 10.000 entri log pertama.CatatanUntuk informasi lebih lanjut tentang fitur berbasis alamat IP, lihat Fungsi IP. Sebagai contoh, Anda dapat menggunakan fungsi
ip_to_provideruntuk mendapatkan penyedia alamat IP dan fungsiip_to_domainuntuk menentukan apakah alamat IP bersifat publik atau pribadi.