All Products
Search
Document Center

Simple Log Service:Kueri dan analisis log JSON

Last Updated:Jun 04, 2026

Lakukan kueri dan analisis log website berformat JSON dengan membuat indeks dan menjalankan pernyataan SQL.

Prasyarat

Log teks telah dikumpulkan dalam format JSON. Kumpulkan log teks dalam format JSON.

Langkah 1: Buat indeks

  1. Masuk ke Simple Log Service console.

  2. Pada bagian Projects, klik project yang diinginkan.

    image

  3. Pada tab Log Storage > Logstores, klik logstore yang diinginkan.

    image

  4. Di pojok kanan atas halaman Query and Analysis untuk Logstore tersebut, pilih Index Attributes > Attributes. Jika belum ada indeks, klik Enable Indexing. Buat indeks.

    Catatan

    Untuk melakukan kueri terhadap semua bidang, buat full-text index. Untuk melakukan kueri terhadap bidang tertentu dan mengurangi traffic indeks, gunakan field index. Field index juga diperlukan untuk menganalisis bidang menggunakan pernyataan SELECT.

  5. Konfigurasikan field index. Contoh log JSON berikut menunjukkan konfigurasi bidangnya.

    {
      "@timestamp": "2023-01-01T00:00:00+08:00",
      "remote_addr": "192.168.0.1",
      "remote_user": "-",
      "request": {
        "request_length": 123,
        "request_method": "GET",
        "request_uri": "/index.html"
      },
      "status": 200,
      "http_referer": "http://example.com",
      "http_user_agent": "Mozilla/5.0",
      "server_protocal": "HTTP/1.1",
      "http_x_forward_for": "192.168.0.1",
      "upstream_addr": "10.0.0.1:8080",
      "time": {
        "request_time": 0.006,
        "upstream_response_time": 0.004
      },
      "body_bytes_sent": [123, 456]
    }

    Atur tipe data bidang content menjadi json. Node daun di bawah request mencakup request.request_length (long), request.request_method (text), dan request.request_uri (text). Aktifkan Enable Statistics untuk semua bidang.

    • Bidang __topic__, __source__, dan __tag__ adalah bidang tereservasi tingkat sistem.

    • Bidang @timestamp, remote_addr, remote_user, http_referer, http_user_agent, status, server_protocal, http_x_forward_for, dan upstream_addr tidak memiliki node daun. Buat indeks untuk bidang-bidang ini secara langsung di bawah bidang content.

    • Bidang request dan time memiliki node daun, dan node daun tersebut bukan array JSON.

      • Anda tidak dapat membuat indeks untuk bidang induk request dan time, atau melakukan kueri dan analisis terhadapnya.

      • Buat indeks untuk node daun di bawah request dan time dengan menentukan path lengkap dari induk ke daun. Formatnya adalah KEY1.KEY2.KEY3, seperti time.request_time dan time.upstream_response_time. Setelah membuat indeks, Anda dapat melakukan kueri terhadap time.request_time dan time.upstream_response_time.

    • Bidang body_bytes_sent merupakan array JSON. Anda tidak dapat membuat indeks untuk bidang ini maupun node daunnya, atau melakukan kueri dan analisis terhadap body_bytes_sent atau node daun dari body_bytes_sent.

Langkah 2: Reindex

Indeks hanya berlaku untuk data yang baru dikumpulkan. Untuk melakukan kueri terhadap data historis, gunakan fitur Reindex.

Langkah 3: Lakukan kueri dan analisis log

Pada halaman Query and Analysis, masukkan pernyataan dan pilih rentang waktu. Dalam pernyataan analisis (SELECT), sertakan nama bidang dalam tanda kutip ganda (") dan string dalam tanda kutip tunggal ('). Panduan cepat untuk kueri dan analisis log. FAQ tentang kueri dan analisis log JSON.

  • Cari log dengan status permintaan 200.

    content.status:200
  • Cari log dengan panjang permintaan lebih dari 70.

    content.request.request_length > 70
  • Cari log untuk permintaan GET.

    content.request.request_method:GET
  • Hitung jumlah log berdasarkan status permintaan.

    * | SELECT "content.status", COUNT(*) AS PV GROUP BY "content.status"

    Hasilnya menampilkan setiap kode status, seperti 200 dan null, beserta jumlah tampilan halamannya (PV).

  • Hitung jumlah permintaan berdasarkan durasi permintaan, diurutkan secara ascending.

    * | SELECT "content.time.request_time", COUNT(*) AS count GROUP BY "content.time.request_time" ORDER BY "content.time.request_time"
  • Hitung rata-rata durasi permintaan berdasarkan metode permintaan.

    * | SELECT avg("content.time.request_time") AS avg_time,"content.request.request_method"  GROUP BY "content.request.request_method"

    Hasilnya menunjukkan avg_time sebesar 45 untuk GET dan avg_time sebesar 11 untuk PUT.

Topik terkait