Hãy nói tôi có Nginx chạy bên trong một container (Docker).
Nhật ký truy cập và lỗi bản ghi được gửi thông qua STDOUT, trong Dockerfile:cách tốt nhất để gửi các bản ghi chứa Docker để logstash
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log
RUN ln -sf /dev/stderr /var/log/nginx/error.log
Logspout dường như một giải pháp thanh lịch để gửi STDOUT của container của bạn bên trong logstash (cấu hình với một đầu vào syslog)
input {
syslog {
type => syslog
port => 5514
}
}
Nhưng logout không có ý tưởng về các định dạng của nhật ký được gửi qua STDOUT (Hoặc tôi thiếu một cái gì đó?)
Vì vậy, tôi phải làm một cái gì đó như:
input {
syslog {
type => nginx-access
port => 5514
}
}
Nhưng sau đó về nhật ký lỗi nginx thì sao? Và nếu tôi gửi bản ghi php-fpm thông qua STDOUT thì sao? Logspout quản lý điều này như thế nào?
Một giải pháp khác là chạy rsyslog indose container và gửi các bản ghi thu tới đầu vào của logstatsh ...
Như bạn có thể nhìn thấy nó không thực sự rõ ràng cho tôi ... Tôi muốn để có thể để gửi nginx và php-fpm bản ghi để logstash để họ có thể được hiểu là những gì họ đang ... nhưng tôi không tìm thấy một "thực hành tốt" ...
bạn có thể giúp tôi xin vui lòng
Đây phải là câu trả lời được chấp nhận. – Subfuzion
Điều quan trọng cần lưu ý là trình điều khiển đầu ra GELF chỉ sử dụng UDP (kể từ ngày 20.04.2017) để các gói có thể bị mất nếu logstash nằm trên một số máy khác. – herm
Đó là một điều tốt để ghi nhớ. – womble