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 Grok và danh 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
:
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:
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:
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:
- 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:
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:
- 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 .
Các tin liên quan