Thêm bộ lọc Logstash để cải thiện tính năng ghi log tập trung (Logstash Forwarder)
Lưu ý: Hướng dẫn này dành cho version cũ hơn của cài đặt ngăn xếp ELK sử dụng Logstash Forwarder thay vì Filebeat. Phiên bản mới nhất của hướng dẫn này có sẵn tại Thêm Bộ lọc Logstash Để Cải thiện 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ài đặt Logstash của bạn 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 các bộ lọc, do đó, dữ liệu có thể dễ dàng được phân tích và có thể truy vấn. 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 1.7, Logstash 1.5 và Kibana 4.1 (ELK Stack) trên Ubuntu 14.04 và tập trung chủ yếu vào việc thêm bộ lọc 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ó một server Logstash đang hoạt động và cách gửi log của bạn đến Logstash. Nếu bạn chưa cài đặt Logstash, đây là một hướng dẫn khác sẽ giúp bạn bắt đầu: Cách cài đặt Elasticsearch 1.7, Logstash 1.5 và Kibana 4.1 (ELK Stack) trên Ubuntu 14.04 .
Các giả định về server Logstash:
- Logstash được cài đặt trong
/opt/logstash
- Bạn đang nhận log từ Logstash Forwarder trên cổng 5000
- 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
01-lumberjack-input.conf
- Bạn có file kết quả có tên
30-lumberjack-output.conf
Các giả định của Logstash Forwarder:
- Bạn đã cấu hình Logstash Forwarder, 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 Logstash Forwarder của hướng dẫn trước)
Nếu cài đặt của bạn khác với những gì ta giả định, 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.
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:logstash /opt/logstash/patterns
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 ứng dụng và server Logstash.
Tiểu mục Logstash Forwarder
Các phần phụ Logstash Forwarder liên quan đến server ứng dụng đang gửi log của nó. Cấu hình tệp bổ sung sẽ được thêm vào file /etc/logstash-forwarder.conf
ngay sau các dòng sau:
"files": [ { "paths": [ "/var/log/syslog", "/var/log/auth.log" ], "fields": { "type": "syslog" } }
Đảm bảo rằng cấu hình bổ sung nằm trước ]
đóng phần “tệp”. Điều này sẽ bao gồm các file log thích hợp để gửi đến Logstash và gắn nhãn chúng là một loại cụ thể (sẽ được sử dụng bởi bộ lọc Logstash). Logstash Forwarder phải được reload để mọi thay đổi có hiệu lực.
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 server Logstash sau khi thêm bộ lọc mới để tải các thay đổi .
Đế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
Logstash Forwarder: Nginx
Trên server Nginx của bạn, hãy mở file cấu hình logstash-forwarder.conf
để chỉnh sửa:
sudo vi /etc/logstash-forwarder.conf
Thêm phần sau, trong phần “tệp”, để gửi log truy cập Nginx dưới dạng loại “nginx-access” đến server Logstash của bạn:
, { "paths": [ "/var/log/nginx/access.log" ], "fields": { "type": "nginx-access" } }
Lưu và thoát. Reload cấu hình Logstash Forwarder để các thay đổi có hiệu lực:
sudo service logstash-forwarder restart
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 Logstash 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. Mẫu NGINXACCESS phân tích cú pháp và gán dữ liệu cho các số nhận dạng khác nhau (ví dụ: clientip, danh tính, auth, v.v.).
Tiếp theo, thay đổi quyền sở hữu của file mẫu thành logstash
:
sudo chown logstash:logstash /opt/logstash/patterns/nginx
Bộ lọc Logstash: Nginx
Trên server Logstash của bạn, hãy tạo file cấu hình bộ lọc mới có tên 11-nginx.conf
:
sudo vi /etc/logstash/conf.d/11-nginx.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 đối sánh các thông báo thuộc 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
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ụ.
Logstash Forwarder
Trên server Apache của bạn, hãy mở file cấu hình logstash-forwarder.conf
để chỉnh sửa:
sudo vi /etc/logstash-forwarder.conf
Thêm phần sau, trong phần “tệp”, để gửi log truy cập Apache dưới dạng loại “apache-access” đến server Logstash của bạn:
, { "paths": [ "/var/log/apache2/access.log" ], "fields": { "type": "apache-access" } }
Lưu và thoát. Reload cấu hình Logstash Forwarder để các thay đổi có hiệu lực:
sudo service logstash-forwarder restart
Bộ lọc Logstash: Apache
Trên server Logstash của bạn, 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ông báo 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
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 thứ ba trong loạt bài này: Cách Sử dụng Hình ảnh và Trang tổng quan Kibana .
Các tin liên quan