0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Hướng Dẫn Tìm Kiếm Trường clientMessageId Trong Log JSON Bằng KQL và Logstash

Đăng vào 3 tuần trước

• 2 phút đọc

Chủ đề:

elastickql

Giới Thiệu

Trong quá trình phân tích log, việc trích xuất các trường dữ liệu quan trọng là rất cần thiết. Bài viết này sẽ hướng dẫn bạn cách lấy trường clientMessageId từ log JSON thông qua hai phương pháp chính: sử dụng bộ lọc Grok và bộ lọc JSON trong Logstash, cũng như cách tìm kiếm trực tiếp trên Kibana bằng ngôn ngữ truy vấn KQL.

1. Sử Dụng Bộ Lọc Grok Trong Logstash

Bộ lọc Grok rất hữu ích khi bạn cần trích xuất dữ liệu từ các log không có cấu trúc. Để lấy giá trị của clientMessageId từ trường message, bạn có thể sử dụng đoạn cấu hình sau trong file logstash.conf:

Cấu Hình Grok

plaintext Copy
filter {
  grok {
    match => {
      "message" => 'clientMessageId":"%{NUMBER:clientMessageId}"
    }
  }
}

Sử Dụng Grok Kết Hợp JSON Filter

Trong trường hợp log của bạn có cấu trúc JSON, bạn có thể kết hợp giữa bộ lọc JSON và bộ lọc Grok như sau:

plaintext Copy
filter {
  json {
    source => "message"
    target => "json_data"
  }
  grok {
    match => {
      "[json_data][logType]" => "%{DATA:logType}"
      "[json_data][clientMessageId]" => "%{DATA:clientMessageId}"
    }
  }
}

Trong đoạn cấu hình này:

  • json_data: Là nơi lưu trữ dữ liệu đã được phân tích cú pháp từ log JSON.
  • clientMessageId: Trường mà bạn muốn trích xuất, được lấy ra từ chuỗi tương ứng trong log.

2. Sử Dụng Bộ Lọc JSON Trong Logstash

Nếu log của bạn đã có cấu trúc JSON rõ ràng, bạn có thể sử dụng bộ lọc JSON để tự động phân tích cú pháp mà không cần phải định nghĩa pattern. Cấu hình mẫu như sau:

plaintext Copy
filter {
  json {
    source => "message"
  }
}

Bộ lọc này sẽ trích xuất tất cả các trường từ log JSON, bao gồm cả clientMessageId. Sau khi xử lý, bạn có thể sử dụng trường này trong các bước tiếp theo của pipeline hoặc đẩy trực tiếp vào Elasticsearch.

3. Tìm Kiếm Trên Kibana Sử Dụng KQL

Khi log đã được lưu trữ trong Elasticsearch, bạn có thể tìm kiếm clientMessageId trực tiếp trên Kibana bằng ngôn ngữ truy vấn KQL. Dưới đây là một số ví dụ:

Tìm Kiếm Theo clientMessageId Cụ Thể

plaintext Copy
contextMap.clientMessageId: "12321424124"

Tìm Kiếm Log Có Trường clientMessageId

plaintext Copy
contextMap.clientMessageId: *

4. Sử Dụng Dev Tools Để Kiểm Tra Trên Kibana

Bạn cũng có thể sử dụng Elasticsearch Query DSL thông qua Dev Tools trên Kibana để thực hiện truy vấn. Ví dụ:

plaintext Copy
GET /your_index/_search
{
  "query": {
    "match": {
      "contextMap.clientMessageId": "12321424124"
    }
  }
}

Tóm Tắt

  • Bộ Lọc Grok: Sử dụng khi log không có cấu trúc JSON rõ ràng.
  • Bộ Lọc JSON: Tự động phân tích cú pháp nếu log có cấu trúc JSON.
  • KQL Trên Kibana: Tìm kiếm trực tiếp trong Elasticsearch nếu dữ liệu đã được lưu trữ.
    source: viblo
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào