Thứ hai, 07/07/2014 | 00:00 GMT+7

Thêm bộ lọc Logstash để cải thiện tính năng ghi log tập trung

Logstash là một công cụ mạnh mẽ để tập trung và phân tích log , có thể giúp cung cấp và tổng quan về môi trường của bạn cũng như xác định các vấn đề với server của bạn. Một cách để tăng hiệu quả của cài đặt ELK Stack (Elasticsearch, Logstash và Kibana) là thu thập log ứng dụng quan trọng và cấu trúc dữ liệu log bằng cách sử dụng bộ lọc, do đó, dữ liệu có thể được phân tích và truy vấn một cách dễ dàng. Ta sẽ xây dựng bộ lọc của ta xung quanh các mẫu "dò tìm", sẽ phân tích dữ liệu trong log thành các bit thông tin hữu ích.

Hướng dẫn này là phần tiếp theo của hướng dẫn Cách cài đặt Elasticsearch, Logstash và Kibana 4 trên Ubuntu 14.04 và chủ yếu tập trung vào việc thêm bộ lọc Logstash cho các log ứng dụng phổ biến khác nhau.

Yêu cầu

Để làm theo hướng dẫn này, bạn phải có server Logstash đang hoạt động đang nhận log từ người gửi hàng, chẳng hạn như Filebeat. Nếu bạn chưa cài đặt Logstash để nhận log , đây là hướng dẫn sẽ giúp bạn bắt đầu: Cách cài đặt Elasticsearch, Logstash và Kibana 4 trên Ubuntu 14.04 .

Giả định server ELK

  • Logstash được cài đặt trong /opt/logstash
  • Các file cấu hình Logstash của bạn nằm trong /etc/logstash/conf.d
  • Bạn có một file đầu vào có tên 02-beats-input.conf
  • Bạn có một file kết quả có tên 30-elasticsearch-output.conf

Bạn có thể cần tạo folder patterns bằng cách chạy lệnh này trên Server Logstash của bạn :

  • sudo mkdir -p /opt/logstash/patterns
  • sudo chown logstash: /opt/logstash/patterns

Giả định Server Khách hàng

  • Bạn đã cấu hình Filebeat trên mỗi server ứng dụng để gửi syslog / auth.log đến server Logstash của bạn (như trong phần Cài đặt Filebeat của hướng dẫn yêu cầu )

Nếu cài đặt của bạn khác, chỉ cần điều chỉnh hướng dẫn này để phù hợp với môi trường của bạn.

Về Grok

Grok hoạt động bằng cách phân tích cú pháp các mẫu văn bản, sử dụng biểu thức chính quy và gán chúng cho một mã định danh.

Cú pháp cho một mẫu thử nghiệm là %{ PATTERN : IDENTIFIER } . Bộ lọc Logstash bao gồm một chuỗi các mẫu tìm kiếm khớp và gán các phần khác nhau của thông báo log cho các số nhận dạng khác nhau, đó là cách cấu trúc của các log .

Để tìm hiểu thêm về Grok , hãy truy cập trang Logstash Grokdanh sách Các mẫu mặc định của Logstash .

Cách sử dụng Hướng dẫn này

Mỗi phần chính sau phần này sẽ bao gồm các chi tiết cấu hình bổ sung cần thiết để thu thập và lọc log cho một ứng dụng nhất định. Đối với mỗi ứng dụng mà bạn muốn đăng nhập và lọc, bạn sẽ phải thực hiện một số thay đổi cấu hình trên cả server khách (Filebeat) và server Logstash.

Tiểu mục Mẫu Logstash

Nếu có một tiểu mục Mẫu Logstash, nó sẽ chứa các mẫu rãnh có thể được thêm vào file mới trong /opt/logstash/patterns trên Server Logstash. Điều này sẽ cho phép bạn sử dụng các mẫu mới trong bộ lọc Logstash.

Tiểu mục Bộ lọc Logstash

Các phần phụ của Bộ lọc Logstash sẽ bao gồm một bộ lọc có thể được thêm vào một file mới, giữa các file cấu hình đầu vào và kết quả , trong /etc/logstash/conf.d trên Server Logstash. Bộ lọc xác định cách server Logstash phân tích cú pháp các file log liên quan. Hãy nhớ khởi động lại dịch vụ Logstash sau khi thêm bộ lọc mới để tải các thay đổi .

Tiểu mục Kiểm tra viên Filebeat

Filebeat Prospectors được sử dụng để chỉ định log nào sẽ gửi đến Logstash. Các cấu hình trình tìm kiếm bổ sung sẽ được thêm vào file /etc/filebeat/filebeat.yml ngay sau những khách hàng tiềm năng hiện có trong phần prospectors :

Ví dụ về thanh tra
filebeat:   # List of prospectors to fetch data.   prospectors:     -       - /var/log/secure       - /var/log/messages       document_type: syslog     -       paths:         - /var/log/app/*.log       document_type: app-access ... 

Trong ví dụ trên, các dòng được đánh dấu màu đỏ thể hiện một Trình kiểm tra gửi tất cả các file .log trong /var/log/app/ tới Logstash với kiểu app-access . Sau khi thực hiện bất kỳ thay đổi nào, Filebeat phải được reload để mọi thay đổi có hiệu lực.

Đến đây bạn đã biết cách sử dụng hướng dẫn này, phần còn lại của hướng dẫn sẽ chỉ cho bạn cách thu thập và lọc log ứng dụng!

Ứng dụng: Nginx

Các mẫu logstash: Nginx

Các mẫu log Nginx không có trong các mẫu mặc định của Logstash, vì vậy ta sẽ thêm các mẫu Nginx theo cách thủ công.

Trên server ELK của bạn, hãy tạo một file mẫu mới có tên nginx :

  • sudo vi /opt/logstash/patterns/nginx

Sau đó chèn các dòng sau:

Nginx Grok Pattern
NGUSERNAME [a-zA-Z\.\@\-\+_%]+ NGUSER %{NGUSERNAME} NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent} 

Lưu và thoát. Các NGINXACCESS phân tích mô hình, và chuyển nhượng các dữ liệu để định danh khác nhau (ví dụ clientip , ident , auth , vv).

Tiếp theo, thay đổi quyền sở hữu của file mẫu thành logstash :

  • sudo chown logstash: /opt/logstash/patterns/nginx

Bộ lọc Logstash: Nginx

Trên server ELK của bạn, tạo file cấu hình bộ lọc mới có tên 11-nginx-filter.conf :

  • sudo vi /etc/logstash/conf.d/11-nginx-filter.conf

Sau đó, thêm bộ lọc sau:

Bộ lọc Nginx
filter {   if [type] == "nginx-access" {     grok {       match => { "message" => "%{NGINXACCESS}" }     }   } } 

Lưu và thoát. Lưu ý bộ lọc này sẽ cố gắng khớp các thông báo của loại nginx-access với mẫu NGINXACCESS , được xác định ở trên.

Bây giờ khởi động lại Logstash để reload cấu hình:

  • sudo service logstash restart

Trình kiểm tra Filebeat: Nginx

Trên server Nginx của bạn, hãy mở file cấu hình filebeat.yml để chỉnh sửa:

  • sudo vi /etc/filebeat/filebeat.yml

Thêm Trình kiểm tra sau trong phần filebeat để gửi log truy cập Nginx dưới dạng nginx-access server Logstash của bạn:

Kiểm tra viên Nginx
    -       paths:         - /var/log/nginx/access.log       document_type: nginx-access 

Lưu và thoát. Reload Filebeat để thay đổi có hiệu lực:

  • sudo service filebeat restart

Bây giờ log Nginx của bạn sẽ được thu thập và lọc!

Ứng dụng: Web server Apache HTTP

Các mẫu log của Apache có trong các mẫu Logstash mặc định, vì vậy việc cài đặt bộ lọc cho nó khá dễ dàng.

Lưu ý: Nếu bạn đang sử dụng biến thể RedHat, chẳng hạn như CentOS, log được đặt tại /var/log/httpd thay vì /var/log/apache2 , được sử dụng trong các ví dụ.

Bộ lọc Logstash: Apache

Trên server ELK của bạn, hãy tạo file cấu hình bộ lọc mới có tên 12-apache.conf :

  • sudo vi /etc/logstash/conf.d/12-apache.conf

Sau đó, thêm bộ lọc sau:

Bộ lọc Apache
filter {   if [type] == "apache-access" {     grok {       match => { "message" => "%{COMBINEDAPACHELOG}" }     }   } } 

Lưu và thoát. Lưu ý bộ lọc này sẽ cố gắng đối sánh các thư thuộc loại apache-access với mẫu COMBINEDAPACHELOG , một trong các mẫu Logstash mặc định.

Bây giờ khởi động lại Logstash để reload cấu hình:

  • sudo service logstash restart

Trình kiểm tra Filebeat: Apache

Trên server Apache của bạn, hãy mở file cấu hình filebeat.yml để chỉnh sửa:

  • sudo vi /etc/filebeat/filebeat.yml

Thêm Trình kiểm tra sau trong phần filebeat để gửi log Apache dưới dạng apache-access vào server Logstash của bạn:

Kiểm tra viên Apache
    -       paths:         - /var/log/apache2/access.log       document_type: apache-access 

Lưu và thoát. Reload Filebeat để thay đổi có hiệu lực:

  • sudo service filebeat restart

Bây giờ log Apache của bạn sẽ được thu thập và lọc!

Kết luận

Có thể thu thập và phân tích cú pháp các bản ghi thuộc bất kỳ loại nào. Hãy thử và viết các bộ lọc và mẫu của bạn cho các file log khác.

Hãy comment với các bộ lọc mà bạn muốn xem hoặc với các mẫu của bạn !

Nếu bạn chưa quen với việc sử dụng Kibana, hãy xem hướng dẫn này: Cách sử dụng Kibana Visualizations và Dashboards .


Tags:

Các tin liên quan