Gửi nhật ký đến máy chủ Graylog2


11

Tôi vừa thiết lập một máy chủ Graylog2 và tôi đang tìm cách gửi tất cả các bản ghi từ máy chủ chính của tôi đến máy chủ Graylog. Tôi đã kích hoạt đăng nhập cho máy chủ chính và đang gửi nhật ký đến máy chủ Graylog của mình bằng cách thêm *.* @logs.example.com:1337vào /etc/rsyslog.conf.

Điều tôi muốn là để Graylog2 thu thập tất cả nhật ký Apache, nhật ký hệ thống (đối với thông tin đăng nhập SSH, thông tin đăng nhập bị từ chối) và bất kỳ nhật ký nào khác tôi cần theo dõi.

Đối với nhật ký Apache, tôi cũng muốn nhật ký Rails. Các trang web của tôi được đặt trong /srv/www/và sau đó cấu trúc là sitename.com/public_htmlsitename.com/logs. Tôi có nhiều trang web trên máy chủ và tôi muốn một cách dễ dàng để xem tất cả các lỗi và tạo một số biểu đồ đẹp từ đó vì vậy tôi muốn sử dụng Graylog2 ...

Các tập tin nhật ký trong thư mục bản ghi là access.logerror.log.

Các bản ghi Rails sẽ được trong sitename.com/public_html/log. Điều này có chứa production.log.


Câu hỏi ở đây là gì? Nếu bạn đã cài đặt rsyslog, bạn có thể sử dụng nó để gửi nhật ký Rails / Apache tới Graylog2 ( rsyslog.com/doc/imfile.html )
đa thức

Câu trả lời:


10

Điều này đã cũ, nhưng tôi nghĩ rằng tôi sẽ viết phương pháp này mà tôi sử dụng cho trang lưu lượng truy cập thấp / trung bình (không biết liệu nó có hoạt động tốt cho trang lưu lượng truy cập lớn không):

Trong Apache, tôi định nghĩa một định dạng CustomLog được gọi là graylog2_accessđịnh dạng nhật ký truy cập thành định dạng GELF và sau đó tôi gửi nhật ký của mình qua Graylog2 bằng cách chuyển dữ liệu nhật ký qua nc để gửi tin nhắn GELF đến đầu vào của Graylog2.

Đây là định dạng tùy chỉnh mà nó tạo ra (con người có thể đọc được):

{ 
 "version": "1.1",
 "host": "%V",
 "short_message": "%r",
 "timestamp": %{%s}t,
 "level": 6,
 "_user_agent": "%{User-Agent}i",
 "_source_ip": "%a",
 "_duration_usec": %D,
 "_duration_sec": %T,
 "_request_size_byte": %O,
 "_http_status": %s,
 "_http_request_path": "%U",
 "_http_request": "%U%q",
 "_http_method": "%m",
 "_http_referer": "%{Referer}i"
}

Đối với cấu hình Apache, đây là phiên bản sao chép / dán:

LogFormat "{ \"version\": \"1.1\", \"host\": \"%V\", \"short_message\": \"%r\", \"timestamp\": %{%s}t, \"level\": 6, \"_user_agent\": \"%{User-Agent}i\", \"_source_ip\": \"%a\", \"_duration_usec\": %D, \"_duration_sec\": %T, \"_request_size_byte\": %O, \"_http_status\": %s, \"_http_request_path\": \"%U\", \"_http_request\": \"%U%q\", \"_http_method\": \"%m\", \"_http_referer\": \"%{Referer}i\" }" graylog2_access

Sau đó, trong cấu hình máy chủ của bạn:

CustomLog "|nc -u graylogserver 12201" graylog2_access

+1 Đẹp đấy! Phải thử điều này trên một trong các hệ thống của chúng tôi, nhưng với ERROR thay thế.
Henk

@Henk - nếu bạn thực hiện định dạng cho Nhật ký lỗi, vui lòng cho tôi biết, tôi muốn nhưng chưa mất thời gian. Ngoài ra, hãy kiểm tra serverfault.com/questions/582510/ Khăn để biết một số thông tin về những điều tôi gặp phải sau này.
ETL

5

Bạn cũng có thể gửi tệp nhật ký của mình đến máy chủ Graylog2 bằng lệnh đơn giản này:

tail -F -q $yourlogfile |   while read -r line ; do   echo "<7> $hostnamesendingthelog $line" | nc -w 1 -u $graylogserver 514;   done;

Tôi sử dụng chủ yếu cho mục đích thử nghiệm để xác định xem định dạng nhật ký của tôi có phù hợp để truy vấn dễ dàng trong Graylog2 không. Để sử dụng sản xuất, bạn sẽ không thiết lập rsyslog hoặc syslog-ng.

Bạn có thể có thể theo đuôi tệp nhật ký đường ray của bạn và xem những gì sẽ xảy ra.


Tôi thích sự đơn giản của câu trả lời này: Đơn giản và không có công cụ bổ sung. Tôi không biết phải làm gì về dấu thời gian của Tệp nhật ký: có lẽ không có gì để làm và chúng không quan trọng?
texas-bronius

2

Graylog2 chỉ chấp nhận nhật ký ở hai định dạng: syslog tiêu chuẩn và định dạng nhật ký mở rộng Graylog (còn gọi là GELF). Nhật ký tùy ý trên đĩa sẽ cần một số quy trình của bên thứ ba để sử dụng nhật ký và dịch nó thành một hình thức hữu ích cho bạn.

Hãy xem Logstash . Hầu hết mọi người nghĩ về nó như một công cụ để lập chỉ mục các logfiles bằng cách sử dụng ElasticSearch, nhưng nó cũng chứa một "bộ định tuyến nhật ký" cho mục đích chung cho phép bạn điều chỉnh một loạt các tệp trên đĩa và gửi chúng đến một thành phần ghi nhật ký như Graylog.


2
Rsyslog có thể dễ dàng đọc nhật ký: rsyslog.com/doc/imfile.html
đa thức

1
Mặc dù rsyslog có thể sử dụng các tệp khác làm đầu vào, nhưng sử dụng logstash có lợi thế là có thể sử dụng các biểu thức chính quy được xác định trước của Grok (xem logstash.net/docs/1.0.17/filters/grok ) để đưa một số cấu trúc vào thông điệp tường trình và không chỉ là bản rõ.
joschi

syslog-ng có thể làm tương tự với cấu hình sạch hơn so với rsyslog: loggly.com/support/seinating-data/logging-from/syslog/syslog-ng/
HVNSweeting 28/03

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.