Menggunakan Logstash untuk mengalirkan log dengan HTTP Data Collection API (warisan)

Penting

Konsumsi data menggunakan plugin output Logstash saat ini dalam versi pratinjau publik. Fitur ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Catatan

Versi plugin Logstash yang lebih baru dapat meneruskan log dari sumber data eksternal ke tabel kustom dan standar menggunakan API berbasis DCR. Plugin baru memungkinkan kontrol penuh atas skema output, termasuk konfigurasi nama dan jenis kolom.

Dengan plugin output Microsoft Sentinel untuk mesin pengumpulan data Logstash, Anda dapat mengirim semua jenis log yang diinginkan melalui Logstash langsung ke ruang kerja Log Analytics di Microsoft Sentinel. Log Anda akan dikirim ke tabel kustom yang Anda tentukan menggunakan plugin output. Versi plugin ini menggunakan HTTP Data Collection API.

Untuk mempelajari selengkapnya tentang bekerja dengan mesin pengumpulan data Logstash, lihat Mulai menggunakan Logstash.

Gambaran Umum

Arsitektur dan latar belakang

Diagram of the Logstash architecture.

Mesin Logstash terdiri dari tiga komponen:

  • Plugin input: Pengumpulan data yang disesuaikan dari berbagai sumber.
  • Plugin filter: Manipulasi dan normalisasi data sesuai dengan kriteria yang ditentukan.
  • Plugin output: Pengiriman kustom data yang dikumpulkan dan diproses ke berbagai tujuan.

Catatan

  • Microsoft hanya mendukung plugin output Logstash yang disediakan Microsoft Sentinel yang dibahas di sini. Versi plugin ini saat ini adalah v1.0.0, dirilis 2020-08-25. Anda dapat membuka tiket dukungan untuk masalah apa pun mengenai plugin output.

  • Microsoft tidak mendukung plugin output Logstash pihak ketiga untuk Microsoft Sentinel, atau plugin maupun komponen Logstash lainnya dengan jenis apa pun.

  • Plugin output Logstash Microsoft Sentinel hanya mendukung Logstash versi 7.0 hingga 7.17.10, dan versi 8.0 hingga 8.9 dan 8.11. Jika Anda menggunakan Logstash 8, kami sarankan Anda menonaktifkan ECS di alur.

Plugin output Microsoft Sentinel untuk Logstash mengirimkan data berformat JSON ke ruang kerja Log Analytics Anda, menggunakan REST API Pengumpul Data HTTP Log Analytics. Data dimasukkan ke dalam log kustom.

Menyebarkan plugin output Microsoft Sentinel di Logstash

Langkah 1: Pemasangan

Plugin output Microsoft Sentinel tersedia dalam koleksi Logstash.

Langkah 2: Konfigurasi

Gunakan informasi dalam dokumen Logstash Struktur file konfigurasi dan tambahkan plugin output Microsoft Sentinel ke konfigurasi dengan kunci dan nilai berikut. (Sintaks file konfigurasi yang tepat ditampilkan setelah tabel.)

Nama bidang Jenis data Deskripsi
workspace_id string Masukkan GUID ID ruang kerja Anda (lihat Tips).
workspace_key string Masukkan GUID kunci primer ruang kerja Anda (lihat Tips).
custom_log_table_name string Atur nama tabel tempat log akan dimasukkan. Hanya satu nama tabel per plugin output yang dapat dikonfigurasi. Tabel log akan muncul di Microsoft Sentinel di bawah Log, di Tabel dalam kategori Log Kustom, dengan akhiran _CL.
endpoint string Bidang opsional. Secara default, ini adalah titik akhir Log Analytics. Gunakan bidang ini untuk mengatur titik akhir alternatif.
time_generated_field string Bidang opsional. Properti ini menggantikan bidang TimeGenerated default di Log Analytics. Masukkan nama bidang tanda waktu di sumber data. Data dalam bidang harus sesuai dengan format ISO 8601 (YYYY-MM-DDThh:mm:ssZ)
key_names array Masukkan daftar bidang skema output Log Analytics. Setiap item daftar harus diapit dalam tanda kutip tunggal dan item yang dipisahkan koma, dan seluruh daftar diapit dalam tanda kurung siku. Contohnya di bawah.
plugin_flush_interval number Bidang opsional. Atur untuk menentukan interval maksimum (dalam detik) antara transmisi pesan ke Log Analytics. Bawaan adalah 5.
amount_resizing Boolean Benar atau salah. Aktifkan atau nonaktifkan mekanisme penskalaan otomatis, yang menyesuaikan ukuran buffer pesan sesuai dengan volume data log yang diterima.
max_items number Bidang opsional. Hanya berlaku jika amount_resizing diatur ke "false.". Gunakan untuk mengatur tutup pada ukuran buffer pesan (dalam catatan). Defaultnya adalah 2000.
azure_resource_id string Bidang opsional. Menentukan ID sumber daya Azure tempat data berada.
Nilai ID sumber daya sangat berguna jika Anda menggunakan resource-context RBAC untuk hanya memberikan akses ke data tertentu.

Tip

  • Anda dapat menemukan ID ruang kerja dan kunci primer di sumber daya ruang kerja, di bagian Pengelolaan agen.
  • Namun, karena memiliki informasi masuk dan informasi sensitif lainnya yang disimpan dalam teks biasa dalam file konfigurasi tidak sejalan dengan praktik terbaik keamanan, Anda sangat dianjurkan untuk menggunakan penyimpanan kunci Logstash untuk memasukkan ID ruang kerja dan kunci primer ruang kerja dalam konfigurasi. Lihat dokumentasi Elastic untuk mengetahui petunjuknya.

Sampel konfigurasi

Berikut beberapa contoh konfigurasi yang menggunakan beberapa opsi lainnya.

  • Konfigurasi dasar yang menggunakan pipa input filebeat:

      input {
          beats {
              port => "5044"
          }
      }
      filter {
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
            workspace_id => "<your workspace id>"
            workspace_key => "<your workspace key>"
            custom_log_table_name => "tableName"
          }
      }
    
  • Konfigurasi dasar yang menggunakan pipa input tcp:

      input {
          tcp {
              port => "514"
              type => syslog #optional, will effect log type in table
          }
      }
      filter {
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
            workspace_id => "<your workspace id>"
            workspace_key =>  "<your workspace key>"
            custom_log_table_name => "tableName"
          }
      }
    
  • Konfigurasi tingkat lanjut:

      input {
          tcp {
              port => 514
              type => syslog
          }
      }
      filter {
          grok {
              match => { "message" => "<%{NUMBER:PRI}>1 (?<TIME_TAG>[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}T[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2})[^ ]* (?<HOSTNAME>[^ ]*) %{GREEDYDATA:MSG}" }
          }
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
              workspace_id => "<WS_ID>"
              workspace_key => "${WS_KEY}"
              custom_log_table_name => "logstashCustomTable"
              key_names => ['PRI','TIME_TAG','HOSTNAME','MSG']
              plugin_flush_interval => 5
          }
      } 
    
  • Konfigurasi yang lebih canggih untuk mengurai tanda waktu kustom dan string JSON dari data teks yang tidak terstruktur dan mencatat sekumpulan bidang yang dipilih ke Analitik Log dengan tanda waktu yang diekstrak:

      # Example log line below:
      # Mon Nov 07 20:45:08 2022: { "name":"_custom_time_generated", "origin":"test_microsoft", "sender":"test@microsoft.com", "messages":1337}
      # take an input
      input {
          file {
              path => "/var/log/test.log"
          }
      }
      filter {
      # extract the header timestamp and the Json section
          grok {
              match => {
                  "message" => ["^(?<timestamp>.{24}):\s(?<json_data>.*)$"]
              }
          }
      # parse the extracted header as a timestamp
      date {
          id => 'parse_metric_timestamp'
              match => [ 'timestamp', 'EEE MMM dd HH:mm:ss yyyy' ]
              timezone => 'Europe/Rome'
              target => 'custom_time_generated'
          }
      json {
          source => "json_data"
          }
      }
      # output to a file for debugging (optional)
      output {
          file {
              path => "/tmp/test.txt"
              codec => line { format => "custom format: %{message} %{custom_time_generated} %{json_data}"}
          }
      }
      # output to the console output for debugging (optional)
      output {
          stdout { codec => rubydebug }
      }
      # log into Log Analytics
      output {
          microsoft-logstash-output-azure-loganalytics {
              workspace_id => '[REDACTED]'
              workspace_key => '[REDACTED]'
              custom_log_table_name => 'RSyslogMetrics'
              time_generated_field => 'custom_time_generated'
              key_names => ['custom_time_generated','name','origin','sender','messages']
          }
      }
    

    Catatan

    Kunjungi repositori GitHub plugin output untuk mempelajari lebih lanjut pengaturan kerja, konfigurasi, dan performa internalnya.

Langkah 3: Mulai ulang Logstash

Langkah 4: Melihat log masuk di Microsoft Sentinel

  1. Verifikasi bahwa pesan dikirim ke plugin output.

  2. Dari menu navigasi Microsoft Sentinel, buka Log. Di bawah judul Tabel, perluas kategori Log Kustom. Temukan dan klik nama tabel yang Anda tentukan (dengan akhiran _CL) dalam konfigurasi.

    Screenshot of log stash custom logs.

  3. Untuk melihat data dalam tabel, ajukan kueri tabel dengan menggunakan nama tabel sebagai skema.

    Screenshot of a log stash custom logs query.

Memantau log audit plugin output

Untuk memantau konektivitas dan aktivitas plugin output Microsoft Sentinel, aktifkan file log Logstash yang sesuai. Lihat dokumen Tata Letak Direktori Logstash untuk mengetahui lokasi file log.

Jika Anda tidak melihat data apa pun dalam file log ini, buat dan kirim beberapa peristiwa secara lokal (melalui plugin input dan filter) untuk memastikan bahwa plugin output dapat menerima data. Microsoft Sentinel hanya akan mendukung masalah yang berkaitan dengan plugin output.

Langkah berikutnya

Dalam dokumen ini, Anda telah mempelajari cara menggunakan Logstash untuk menghubungkan sumber data eksternal ke Microsoft Sentinel. Untuk mempelajari selengkapnya tentang Microsoft Azure Sentinel, lihat artikel berikut: