Logstash - Phân tích cú pháp Nhật ký

Logstash nhận nhật ký bằng các plugin đầu vào và sau đó sử dụng các plugin bộ lọc để phân tích cú pháp và chuyển đổi dữ liệu. Việc phân tích cú pháp và chuyển đổi các bản ghi được thực hiện theo các hệ thống hiện diện trong đích đầu ra. Logstash phân tích cú pháp dữ liệu ghi nhật ký và chỉ chuyển tiếp các trường bắt buộc. Sau đó, các trường này được chuyển thành dạng tương thích và dễ hiểu của hệ thống đích.

Làm thế nào để phân tích cú pháp Nhật ký?

Việc phân tích các bản ghi được thực hiện bằng cách sử dụng GROK (Biểu diễn bằng đồ họa của tri thức) và bạn có thể tìm thấy chúng trong Github -

https://github.com/elastic/logstash/tree/v1.4.2/patterns.

Logstash khớp dữ liệu của nhật ký với Mẫu GROK được chỉ định hoặc chuỗi mẫu để phân tích cú pháp nhật ký như "% {COMBINEDAPACHELOG}", thường được sử dụng cho nhật ký apache.

Dữ liệu được phân tích cú pháp có cấu trúc hơn và dễ tìm kiếm và thực hiện các truy vấn. Logstash tìm kiếm các mẫu GROK được chỉ định trong nhật ký đầu vào và trích xuất các dòng phù hợp từ nhật ký. Bạn có thể sử dụng trình gỡ lỗi GROK để kiểm tra các mẫu GROK của mình.

Cú pháp cho mẫu GROK là% {SYNTAX: SEMANTIC}. Bộ lọc Logstash GROK được viết dưới dạng sau:

%{PATTERN:FieldName}

Ở đây, PATTERN đại diện cho mẫu GROK và tên trường là tên của trường, đại diện cho dữ liệu được phân tích cú pháp trong đầu ra.

Ví dụ: sử dụng trình gỡ lỗi GROK trực tuyến https://grokdebug.herokuapp.com/

Đầu vào

Một dòng lỗi mẫu trong nhật ký -

[Wed Dec 07 21:54:54.048805 2016] [:error] [pid 1234:tid 3456829102]
   [client 192.168.1.1:25007] JSP Notice:  Undefined index: abc in
   /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11

Trình tự mẫu GROK

Chuỗi mẫu GROK này khớp với sự kiện nhật ký, bao gồm dấu thời gian, theo sau là Cấp nhật ký, Id quy trình, Id giao dịch và Thông báo lỗi.

\[(%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[.*:%{LOGLEVEL:loglevel}\]
   \[pid %{NUMBER:pid}:tid %{NUMBER:tid}\] \[client %{IP:clientip}:.*\]
   %{GREEDYDATA:errormsg}

đầu ra

Đầu ra ở định dạng JSON.

{
   "day": [
      "Wed"
   ],
   "month": [
      "Dec"
   ],
   "loglevel": [
      "error"
   ],
   "pid": [
      "1234"
   ],
   "tid": [
      "3456829102"
   ],
   "clientip": [
      "192.168.1.1"
   ],
   "errormsg": [
      "JSP Notice:  Undefined index: abc in
      /home/manu/tpworks/tutorialspoint.com/index.jsp on line 11"
   ]
}