Dokumen ini berisi contoh kueri atas entri log yang disimpan di bucket log yang diupgrade untuk menggunakan Log Analytics. Di bucket ini, Anda dapat menjalankan kueri SQL dari halaman Log Analytics di konsol Google Cloud . Untuk contoh lainnya, lihat logging-analytics-samples dan security-analytics repositori GitHub.
Dokumen ini tidak menjelaskan SQL atau cara merutekan dan menyimpan entri log. Untuk mengetahui informasi tentang topik tersebut, lihat bagian Langkah berikutnya.
Contoh di halaman ini membuat kueri tampilan log. Untuk membuat kueri tampilan analisis, gunakan format jalur berikut: `analytics_view.PROJECT_ID.LOCATION.ANALYTICS_VIEW_ID`. Dalam ekspresi sebelumnya, PROJECT_ID adalah ID project Anda, dan LOCATION serta ANALYTICS_VIEW_ID adalah lokasi dan nama tampilan analisis Anda.
Dukungan bahasa SQL
Kueri yang digunakan di halaman Log Analytics mendukung fungsi GoogleSQL dengan beberapa pengecualian.
Perintah SQL berikut tidak didukung untuk kueri SQL yang dikeluarkan menggunakan halaman Log Analytics:
- Perintah DDL dan DML
- Fungsi yang ditentukan pengguna JavaScript
- Fungsi BigQuery ML
- Variabel SQL
Berikut hanya didukung saat Anda mengkueri set data tertaut menggunakan halaman BigQuery Studio dan Looker Studio, atau menggunakan alat command line bq:
- Fungsi yang ditentukan pengguna JavaScript
- Fungsi BigQuery ML
- Variabel SQL
Praktik terbaik
Untuk menetapkan rentang waktu kueri, sebaiknya Anda menggunakan pemilih rentang waktu. Misalnya, untuk melihat data selama seminggu terakhir, pilih 7 hari terakhir dari pemilih rentang waktu. Anda juga dapat menggunakan pemilih rentang waktu untuk menentukan waktu mulai dan berakhir, menentukan waktu untuk melihat-lihat, dan mengubah zona waktu.
Jika Anda menyertakan kolom timestamp dalam klausa WHERE, setelan pemilih rentang waktu tidak akan digunakan. Contoh berikut menunjukkan cara memfilter menurut stempel waktu:
-- Matches log entries whose timestamp is within the most recent 1 hour. WHERE timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) Untuk mengetahui informasi selengkapnya tentang cara memfilter menurut waktu, lihat Fungsi waktu dan Fungsi stempel waktu.
Sebelum memulai
Bagian ini menjelaskan langkah-langkah yang harus Anda selesaikan sebelum Anda dapat menggunakan Log Analytics.
Mengonfigurasi bucket log
Pastikan bucket log Anda telah diupgrade untuk menggunakan Log Analytics:
-
Di konsol Google Cloud , buka halaman Logs Storage:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
- Untuk setiap bucket log yang memiliki tampilan log yang ingin Anda kueri, pastikan kolom Log Analytics available menampilkan Open. Jika Upgrade ditampilkan, klik Upgrade dan selesaikan dialog.
Mengonfigurasi peran dan izin IAM
Bagian ini menjelaskan peran atau izin IAM yang diperlukan untuk menggunakan Log Analytics:
-
Untuk mendapatkan izin yang Anda perlukan guna menggunakan Log Analytics dan membuat kueri tampilan log, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
- Untuk membuat kueri bucket log
_Requireddan_Default: Logs Viewer (roles/logging.viewer) - Untuk membuat kueri semua tampilan log dalam project: Logs View Accessor (
roles/logging.viewAccessor)
Anda dapat membatasi akun utama ke tampilan log tertentu dengan menambahkan kondisi IAM ke pemberian peran Logs View Accessor yang dilakukan di tingkat project, atau dengan menambahkan binding IAM ke file kebijakan tampilan log. Untuk mengetahui informasi selengkapnya, lihat Mengontrol akses ke tampilan log.
Izin ini sama dengan izin yang Anda perlukan untuk melihat entri log di halaman Logs Explorer. Untuk mengetahui informasi tentang peran tambahan yang Anda perlukan untuk membuat kueri tampilan di bucket yang ditentukan pengguna atau untuk membuat kueri tampilan
_AllLogsdari bucket log_Default, lihat Peran Cloud Logging. - Untuk membuat kueri bucket log
-
Untuk mendapatkan izin yang diperlukan untuk mengkueri tampilan analisis, minta administrator untuk memberi Anda peran IAM Observability Analytics User (
roles/observability.analyticsUser) di project Anda.
Cara menggunakan kueri di halaman ini
-
Di konsol Google Cloud , buka halaman Log Analytics:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
Di panel Query, klik code SQL, lalu salin dan tempel kueri ke panel kueri SQL.
Sebelum Anda menyalin kueri, di klausa
FROM, ganti kolom berikut- PROJECT_ID: ID project.
- LOCATION: Lokasi tampilan log atau tampilan analisis.
- BUCKET_ID: Nama atau ID bucket log.
- LOG_VIEW_ID: ID tampilan log, yang dibatasi hingga 100 karakter dan hanya dapat menyertakan huruf, angka, garis bawah, dan tanda hubung.
Berikut menunjukkan format klausa
FROMuntuk tampilan log:FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`Contoh log di halaman ini membuat kueri tampilan log. Untuk mengirim kueri tampilan analisis, gunakan format jalur berikut:
`analytics_view.PROJECT_ID.LOCATION.ANALYTICS_VIEW_ID`. Dalam ekspresi sebelumnya,PROJECT_IDadalah ID project Anda, danLOCATIONsertaANALYTICS_VIEW_IDadalah lokasi dan nama tampilan analisis Anda.
Untuk menggunakan kueri yang ditampilkan dalam dokumen ini di halaman BigQuery Studio atau menggunakan alat command line bq, lalu edit klausa FROM dan masukkan jalur ke set data tertaut. Misalnya, untuk membuat kueri tampilan _AllLogs pada set data tertaut bernama mydataset yang ada di project myproject, jalur yang digunakan adalah myproject.mydataset._AllLogs.
Kasus penggunaan umum
Bagian ini mencantumkan beberapa kasus penggunaan umum yang dapat membantu Anda membuat kueri kustom.
Menampilkan entri log di bucket log default
Untuk mengkueri bucket _Default, jalankan kueri berikut:
SELECT timestamp, severity, resource.type, log_name, text_payload, proto_payload, json_payload FROM `PROJECT_ID.LOCATION._Default._AllLogs` -- Limit to 1000 entries LIMIT 1000 Mengekstrak nilai kolom dengan ekspresi reguler
Untuk mengekstrak nilai dari string menggunakan ekspresi reguler, gunakan fungsi REGEXP_EXTRACT:
SELECT -- Display the timestamp, and the part of the name that begins with test. timestamp, REGEXP_EXTRACT(JSON_VALUE(json_payload.jobName), r".*(test.*)$") AS name, FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` WHERE -- Get the value of jobName, which is a subfield in a JSON structure. JSON_VALUE(json_payload.jobName) IS NOT NULL ORDER BY timestamp DESC LIMIT 20 Untuk mengetahui informasi selengkapnya, lihat dokumentasi REGEXP_EXTRACT.
Untuk kecocokan substring, seperti kueri sebelumnya, penggunaan fungsi CONTAINS_SUBSTR menghasilkan kueri yang lebih efisien.
Memfilter entri log
Untuk menerapkan filter ke kueri, tambahkan klausa WHERE. Sintaksis yang Anda gunakan dalam klausa ini bergantung pada jenis data kolom. Bagian ini memberikan beberapa contoh untuk berbagai jenis data.
Memfilter entri log menurut jenis payload
Entri log dapat memiliki salah satu dari tiga jenis payload. Untuk memfilter entri log menurut jenis payload, gunakan salah satu klausa berikut:
Payload teks
-- Matches log entries that have a text payload. WHERE text_payload IS NOT NULLPayload JSON
-- Matches log entries that have a JSON payload. WHERE json_payload IS NOT NULLPayload proto
-- Matches log entries that have a proto payload. -- Because proto_payload has a data type of RECORD, this statement tests -- whether a mandatory subfield exits. WHERE proto_payload.type IS NOT NULL
Dalam hasil kueri, kolom json_payload dan proto_payload dirender dalam JSON, yang dapat Anda jelajahi.
Memfilter data log menurut stempel waktu
Untuk memfilter entri log berdasarkan stempel waktunya, sebaiknya gunakan pemilih rentang waktu. Namun, Anda juga dapat menentukan timestamp dalam klausa WHERE:
-- Matches log entries whose timestamp is within the most recent hour WHERE timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) Untuk mengetahui informasi selengkapnya tentang cara memfilter menurut waktu, lihat Fungsi waktu dan Fungsi stempel waktu.
Memfilter menurut resource
Untuk memfilter data log menurut resource, tambahkan pernyataan resource.type ke klausa WHERE:
-- Matches log entries whose resource type is gce_instance WHERE resource.type = "gce_instance" Filter menurut tingkat keparahan
Untuk memfilter data log menurut tingkat keseriusan, tambahkan pernyataan severity ke klausa WHERE:
-- Matches log entries whose severity is INFO or ERROR WHERE severity IS NOT NULL AND severity IN ('INFO', 'ERROR') Anda juga dapat memfilter entri log menurut severity_number, yang merupakan bilangan bulat. Misalnya, klausa berikut cocok dengan semua entri log yang tingkat keparahannya setidaknya NOTICE:
-- Matches log entries whose severity level is at least NOTICE WHERE severity_number IS NOT NULL AND severity_number > 200 Untuk mengetahui informasi tentang nilai yang di-enumerasi, lihat LogSeverity.
Memfilter menurut nama log
Untuk memfilter data log menurut nama log, tambahkan pernyataan log_name atau log_id ke klausa WHERE:
Nama log menentukan jalur resource:
-- Matches log entries that have the following log ID. WHERE log_name="projects/cloud-logs-test-project/logs/cloudaudit.googleapis.com%2Factivity"ID log tidak menyertakan jalur resource:
-- Matches log entries that have the following log id. WHERE log_id = "cloudaudit.googleapis.com/data_access"
Memfilter entri log menurut label resource
Label resource disimpan sebagai struktur JSON. Untuk memfilter menurut nilai kolom dalam struktur JSON, gunakan fungsi JSON_VALUE:
SELECT timestamp, JSON_VALUE(resource.labels.zone) AS zone, json_payload, resource, labels FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` WHERE -- Matches log entries whose resource type is gce_instance and whose zone is -- us-central1-f. Because resource has data type JSON, you must use JSON_VALUE -- to get the value for subfields, like zone. resource.type = "gce_instance" AND JSON_VALUE(resource.labels.zone) = "us-central1-f" ORDER BY timestamp ASC Kueri sebelumnya mengandalkan format label resource, karena label tersebut disimpan dalam entri log. Berikut adalah contoh kolom resource:
{ type: "gce_instance" labels: { instance_id: "1234512345123451" project_id: "my-project" zone: "us-central1-f" } } Untuk mengetahui informasi tentang semua fungsi yang dapat mengambil dan mengubah data JSON, lihat Fungsi JSON.
Memfilter menurut permintaan HTTP
Untuk hanya membuat kueri entri log yang memiliki kolom permintaan HTTP, gunakan klausa berikut:
-- Matches log entries that have a HTTP request_method field. -- Don't compare http_request to NULL. This field has a data type of RECORD. WHERE http_request.request_method IS NOT NULL Anda juga dapat menggunakan pernyataan IN:
-- Matches log entries whose HTTP request_method is GET or POST. WHERE http_request.request_method IN ('GET', 'POST') Memfilter menurut status HTTP
Untuk hanya membuat kueri entri log yang memiliki status HTTP, gunakan klausa berikut:
-- Matches log entries that have an http_request.status field. WHERE http_request.status IS NOT NULL Memfilter menurut kolom dalam jenis data JSON
Untuk membuat kueri entri log hanya saat subkolom dari kolom dengan jenis data JSON memiliki nilai tertentu, ekstrak nilai menggunakan fungsi JSON_VALUE:
-- Compare the value of the status field to NULL. WHERE JSON_VALUE(json_payload.status) IS NOT NULL Klausa sebelumnya sedikit berbeda dengan klausa berikut:
-- Compare the status field to NULL. WHERE json_payload.status IS NOT NULL Klausul pertama menguji apakah nilai kolom status adalah NULL. Klausul kedua menguji apakah kolom status ada. Misalkan tampilan log berisi dua entri log. Untuk satu entri log, kolom json_payload memiliki bentuk berikut:
{ status: { measureTime: "1661517845" } } Untuk entri log lainnya, kolom json_payload memiliki struktur yang berbeda:
{ @type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished" jobName: "projects/my-project/locations/us-central1/jobs/test1" relativeUrl: "/food=cake" status: "NOT_FOUND" targetType: "APP_ENGINE_HTTP" } Klausul WHERE json_payload.status IS NOT NULL cocok dengan kedua entri log. Namun, klausa WHERE JSON_VALUE(json_payload.status) IS NOT NULL hanya cocok dengan entri log kedua.
Mengelompokkan dan menggabungkan entri log
Bagian ini dibuat berdasarkan contoh sebelumnya dan menggambarkan cara Anda dapat mengelompokkan dan menggabungkan entri log. Jika Anda tidak menentukan pengelompokan, tetapi menentukan agregasi, satu hasil akan dicetak karena SQL memperlakukan semua baris yang memenuhi klausul WHERE sebagai satu grup.
Setiap ekspresi SELECT harus disertakan dalam kolom grup atau diagregasi.
Mengelompokkan entri log menurut stempel waktu
Untuk mengelompokkan data menurut stempel waktu, gunakan fungsi TIMESTAMP_TRUNC, yang memangkas stempel waktu ke perincian tertentu seperti HOUR:
SELECT -- Truncate the timestamp by hour. TIMESTAMP_TRUNC(timestamp, HOUR) AS hour, JSON_VALUE(json_payload.status) AS status, -- Count the number log entries in each group. COUNT(*) AS count FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` WHERE -- Matches log entries that have a status field whose value isn't NULL. json_payload IS NOT NULL AND JSON_VALUE(json_payload.status) IS NOT NULL GROUP BY -- Group by hour and status hour,status ORDER BY hour ASC Untuk mengetahui informasi selengkapnya, lihat dokumentasi TIMESTAMP_TRUNC dan Fungsi tanggal waktu.
Mengelompokkan entri log menurut resource
Kueri berikut menunjukkan cara mengelompokkan entri log menurut jenis resource, lalu menghitung jumlah entri log di setiap grup:
SELECT -- Count the number of log entries for each resource type resource.type, COUNT(*) AS count FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` GROUP BY resource.type LIMIT 100 Mengelompokkan entri log menurut tingkat keparahan
Kueri berikut menunjukkan cara mengelompokkan entri log berdasarkan tingkat keparahan, lalu menghitung jumlah entri log di setiap grup:
SELECT -- Count the number of log entries for each severity. severity, COUNT(*) AS count FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` WHERE severity IS NOT NULL GROUP BY severity ORDER BY severity LIMIT 100 Mengelompokkan entri log berdasarkan log_id
Kueri berikut menunjukkan cara mengelompokkan entri log menurut ID log, lalu menghitung jumlah entri log di setiap grup:
SELECT -- Count the number of log entries for each log ID. log_id, COUNT(*) AS count FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` GROUP BY log_id ORDER BY count DESC LIMIT 100 Menghitung latensi rata-rata permintaan HTTP per URL
Kueri berikut menggambarkan cara mengelompokkan entri log menurut URL permintaan HTTP dan lokasi, lalu menghitung jumlah entri log di setiap grup:
SELECT -- Compute the average latency for each group. Because the labels field has a -- data type of JSON, use JSON_VALUE to get the value of checker_location. JSON_VALUE(labels.checker_location) AS location, AVG(http_request.latency.seconds) AS secs, http_request.request_url FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` WHERE -- Matches log entries when the request_method field is GET. http_request IS NOT NULL AND http_request.request_method IN ('GET') GROUP BY -- Group by request URL and location http_request.request_url, location ORDER BY location LIMIT 100 Menghitung rata-rata byte yang dikirim untuk pengujian subnetwork
Kueri berikut menunjukkan cara mengelompokkan entri log menurut lokasi yang ditentukan dalam label resource, lalu menghitung jumlah entri log di setiap grup:
SELECT -- Compute the average number of bytes sent per location. Because labels has -- a data type of JSON, use JSON_VALUE to get the value of the location field. -- bytes_sent is a string. Must cast to a FLOAT64 before computing average. JSON_VALUE(resource.labels.location) AS location, AVG(CAST(JSON_VALUE(json_payload.bytes_sent) AS FLOAT64)) AS bytes FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` WHERE resource.type = "gce_subnetwork" AND json_payload IS NOT NULL GROUP BY -- Group by location location LIMIT 100 Untuk mengetahui informasi selengkapnya, lihat Fungsi JSON dan Fungsi konversi.
Menghitung entri log dengan kolom yang cocok dengan pola
Untuk menampilkan substring yang cocok dengan ekspresi reguler, gunakan fungsi REGEXP_EXTRACT:
SELECT -- Extract the value that begins with test. -- Count the number of log entries for each name. REGEXP_EXTRACT(JSON_VALUE(json_payload.jobName), r".*(test.*)$") AS name, COUNT(*) AS count FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` WHERE json_payload.jobName IS NOT NULL GROUP BY name ORDER BY count LIMIT 20 Untuk contoh tambahan, lihat dokumentasi REGEXP_EXTRACT.
Penelusuran lintas kolom
Bagian ini menjelaskan dua pendekatan yang dapat Anda gunakan untuk menelusuri beberapa kolom tampilan yang Anda kueri:
Penelusuran berbasis token: Anda menentukan lokasi penelusuran, kueri penelusuran, lalu menggunakan fungsi
SEARCH. Karena fungsiSEARCHmemiliki aturan khusus tentang cara data ditelusuri, sebaiknya Anda membaca dokumentasiSEARCH.Penelusuran berbasis substring: Anda memberikan lokasi penelusuran, string literal, lalu menggunakan fungsi
CONTAINS_SUBSTR. Sistem melakukan pengujian yang tidak peka huruf besar/kecil untuk menentukan apakah literal string ada dalam ekspresi. FungsiCONTAINS_SUBSTRmenampilkanTRUEjika literal string ada danFALSEjika tidak. Nilai penelusuran harus berupa literalSTRING, tetapi bukan literalNULL.
Penelusuran berbasis token pada tampilan log
Kueri berikut hanya mempertahankan baris yang memiliki kolom yang sama persis dengan "35.193.12.15":
SELECT timestamp, log_id, proto_payload, severity, resource.type, resource, labels FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` AS t WHERE -- Search data access audit logs for the IP address that matches 35.193.12.15. -- The use of backticks prevents the string from being tokenized. proto_payload IS NOT NULL AND log_id = "cloudaudit.googleapis.com/data_access" AND SEARCH(t,"`35.193.12.15`") ORDER BY timestamp ASC LIMIT 20 Jika tanda petik terbalik tidak ada dalam string kueri, string kueri akan dibagi berdasarkan aturan yang ditentukan dalam dokumentasi SEARCH. Misalnya, saat pernyataan berikut dijalankan, string kueri dibagi menjadi empat token: "35", "193", "12", dan "15":
SEARCH(t,"35.193.12.15") Pernyataan SEARCH sebelumnya mencocokkan baris saat satu kolom mencocokkan keempat token. Urutan token tidak menjadi masalah.
Anda dapat menyertakan beberapa pernyataan SEARCH dalam kueri. Misalnya, dalam kueri sebelumnya, Anda dapat mengganti filter pada ID log dengan pernyataan seperti berikut:
SEARCH(t,"`cloudaudit.googleapis.com/data_access`") Pernyataan sebelumnya menelusuri setiap kolom entri log dalam tampilan log, sedangkan pernyataan asli hanya menelusuri kolom log_id entri log.
Untuk melakukan beberapa penelusuran di beberapa kolom, pisahkan setiap string dengan spasi. Misalnya, pernyataan berikut cocok dengan baris tempat kolom berisi "Hello World", "happy", dan "days":
SEARCH(t,"`Hello World` happy days") Terakhir, Anda dapat menelusuri kolom tertentu, bukan menelusuri seluruh tabel. Misalnya, pernyataan berikut hanya menelusuri kolom bernama text_payload dan json_payload:
SEARCH((text_payload, json_payload) ,"`35.222.132.245`") Untuk mengetahui informasi tentang cara memproses parameter fungsi SEARCH, lihat halaman referensi BigQuery Fungsi penelusuran.
Penelusuran substring pada tampilan log
Misalnya, kueri berikut mengambil semua entri log audit Akses Data dengan alamat IP tertentu yang stempel waktunya berada dalam rentang waktu tertentu. Terakhir, kueri mengurutkan hasil, lalu menampilkan 20 hasil terlama:
SELECT timestamp, log_id, proto_payload, severity, resource.type, resource, labels FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID` AS t WHERE -- Search data access audit logs for the IP address that matches 35.193.12.15. -- CONTAINS_SUBSTR performs a contains-test. proto_payload IS NOT NULL AND log_id = "cloudaudit.googleapis.com/data_access" AND CONTAINS_SUBSTR(t,"35.193.12.15") ORDER BY timestamp ASC LIMIT 20 Membuat kueri beberapa tampilan
Pernyataan kueri memindai satu atau beberapa tabel atau ekspresi dan menampilkan baris hasil yang dihitung. Misalnya, Anda dapat menggunakan pernyataan kueri untuk menggabungkan hasil pernyataan SELECT pada berbagai tabel atau set data dengan berbagai cara, lalu memilih kolom dari data gabungan.
Saat Anda membuat kueri beberapa tampilan, tampilan tersebut harus berada di lokasi yang sama. Misalnya, jika dua tampilan berada di lokasi us-east1, satu kueri dapat membuat kueri kedua tampilan. Anda juga dapat membuat kueri dua tampilan yang berada di multi-region us. Namun, jika lokasi tampilan adalah global, maka tampilan tersebut dapat berada di lokasi fisik mana pun. Oleh karena itu, gabungan antara dua tampilan yang memiliki lokasi global mungkin gagal.
Menggabungkan dua tampilan log berdasarkan ID aktivitas
Untuk menggabungkan informasi dari dua tabel, gunakan salah satu operator join:
SELECT -- Do an inner join on two tables by using the span ID and trace ID. -- Don't join only by span ID, as this field isn't globally unique. -- From the first view, show the timestamp, severity, and JSON payload. -- From the second view, show the JSON payload. a.timestamp, a.severity, a.json_payload, b.json_payload, a.span_id, a.trace FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_1` a JOIN `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_2` b ON a.span_id = b.span_id AND a.trace = b.trace LIMIT 100 Membuat kueri dua tampilan log dengan pernyataan gabungan
Untuk menggabungkan hasil dua pernyataan SELECT atau lebih dan menghapus baris duplikat, gunakan operator UNION. Untuk mempertahankan baris duplikat, gunakan operator UNION ALL:
SELECT timestamp, log_name, severity, json_payload, resource, labels -- Create a union of two log views FROM( SELECT * FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_1` UNION ALL SELECT * FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_2` ) -- Sort the union by timestamp. ORDER BY timestamp ASC LIMIT 100 Menghapus entri log duplikat
Log Analytics tidak menghapus entri log duplikat sebelum kueri dijalankan. Perilaku ini berbeda dengan saat Anda membuat kueri entri log menggunakan Logs Explorer, yang menghapus entri duplikat dengan membandingkan nama log, stempel waktu, dan kolom ID penyisipan.
Anda dapat menggunakan validasi tingkat baris untuk menghapus entri log duplikat.
Untuk mengetahui informasi selengkapnya, lihat Pemecahan masalah: Ada entri log duplikat dalam hasil Log Analytics saya.
Langkah berikutnya
Untuk mengetahui informasi tentang cara merutekan dan menyimpan entri log, lihat dokumen berikut:
- Membuat bucket log
- Mengupgrade bucket untuk menggunakan Log Analytics
- Menautkan bucket log ke set data BigQuery
- Mengonfigurasi dan mengelola sink
Untuk dokumentasi referensi SQL, lihat dokumen berikut: