- vừa được xem lúc

Trích xuất trường trong data của

0 0 4

Người đăng: Đồng Dương

Theo Viblo Asia

Để trích xuất trường clientMessageId từ chuỗi JSON trong Logstash bằng cách sử dụng filter grok, bạn có thể thêm mẫu (pattern) grok mới vào cấu trúc hiện tại của bạn. Dưới đây là cách thực hiện:

Cấu trúc cập nhật với grok để trích xuất clientMessageId

filter { grok { match => { "message" => ".*?,\"thread\":\"%{DATA:thread}\",\"level\":\"%{DATA:level}\",\"loggerName\":\"%{DATA:loggerName}\",\"message\":\"%{GREEDYDATA:messageLog}\",\"endOfBatch\".*?,\"clientMessageId\":\"%{DATA:clientMessageId}\"" } }
}

Giải thích về mẫu grok: .?: Được sử dụng để cho phép bất kỳ ký tự nào trước phần cần trích xuất. .? có nghĩa là không tham lam (non-greedy), vì vậy nó sẽ dừng lại ngay khi tìm thấy mẫu tiếp theo. "clientMessageId":"%{DATA:clientMessageId}": Phần này được thêm vào để trích xuất giá trị của clientMessageId. %{DATA:clientMessageId} sẽ lấy giá trị tương ứng và gán nó vào trường clientMessageId. Ví dụ hoàn chỉnh của filter grok

 filter { # Loại bỏ ký tự không mong muốn trong message mutate { gsub => ["message", "\u001b|\n", ""] } # Phân tích và trích xuất thông tin từ message grok { match => { "message" => ".*?,\"thread\":\"%{DATA:thread}\",\"level\":\"%{DATA:level}\",\"loggerName\":\"%{DATA:loggerName}\",\"message\":\"%{GREEDYDATA:messageLog}\",\"clientMessageId\":\"%{DATA:clientMessageId}\",\"endOfBatch\"" } } # Chuyển đổi trường timestamp thành @timestamp date { match => [ "timestamp", "ISO8601" ] timezone => "+07:00" remove_field => [ "timestamp" ] target => "@timestamp" } # Phân tích dữ liệu JSON từ trường body json { source => "body" target => "body_json" } # Lưu trữ ngày tháng vào trường indexDay ruby { code => "event.set('indexDay', event.get('[@timestamp]').time.localtime('+07:00').strftime('%Y%m%d'))" }
} odec => rubydebug }
} 

Lưu ý Đảm bảo rằng chuỗi đầu vào của bạn luôn có định dạng JSON như đã mô tả, vì grok phụ thuộc vào việc khớp đúng với mẫu đã định nghĩa. Bạn có thể điều chỉnh các mẫu khác nếu cần thiết để phù hợp với định dạng cụ thể của dữ liệu bạn đang xử lý. Nếu bạn cần thêm thông tin hoặc có câu hỏi khác, hãy cho mình biết!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Xử lý Apache Access logs với LogStash trong ELK Stack

Mở đầu. Xin chào các bạn, nhân dịp đang có cơ hội được tìm hiểu về ELK Stack mình muốn chia sẻ với các bạn một số thứ mà mình mò mẫm và học được từ công nghệ đang khá hot này.

0 0 55

- vừa được xem lúc

[Elastic Stack] - Xây dựng, triển khai giám sát và quản lý tập trung request logs theo kiến trúc microservices

Elastic Stack - ELK là một nhóm các dự án mã nguồn mở (open source) được triển khai nhằm mục đích thu thập, phân tích, thống kê, tìm kiếm và trực quan hóa dòng dữ liệu (Data Stream) theo thời gian thự

0 0 51

- vừa được xem lúc

Elasticsearch, Kibana, Logstash - Tổng quan, cài đặt và sử dụng

Trong bài viết này mình sẽ không đi sâu về định nghĩa Elastic search cũng như Kibana, Logstash là gì mà sẽ hướng dẫn cách cài đặt cũng như cách import dữ liệu từ database vào Elasticsearch bằng Logsta

0 0 42

- vừa được xem lúc

[K8S] Phần 12 - Logging trên k8s - section1

Lời tựa. Tiếp tục series về Kubernetes, mình sẽ giới thiệu với các bạn về một chủ đề rất quan trọng đó là Logging.

0 0 33

- vừa được xem lúc

[K8S] Phần 14 - Logging trên k8s sử dụng ELK - section3

Lời tựa. Trong 2 bài viết trước mình đã tự đặt ra bài toán logging cho hệ thống cũng như xây dựng xong môi trường gồm các service opensource và tự build.

0 0 49

- vừa được xem lúc

[K8S] Phần 13 - Logging trên k8s sử dụng ELK - section2

Lời tựa. Tiếp tục về chủ đề logging trên Kubernetes, bài viết này sẽ đi vào xây dựng môi trường và thiết kế giải pháp trước khi xây dựng hệ thống logging ELK.

0 0 35