ghi nhật ký không đồng bộ qua rsyslogd (8) và ghi bộ đệm tăng


10

Trên một trang web lưu lượng truy cập khá cao chạy trong các thùng chứa ảo (VMware) và thiếu bộ nhớ cục bộ, chúng tôi đã quản lý để tăng lưu lượng (yêu cầu mỗi giây) đáng kể bằng cách chuyển từ đăng nhập trực tiếp vào tệp nhật ký (nằm trên bộ nhớ mạng từ xa) sang rsyslogd .

Về cơ bản, chúng tôi đã chuyển từ đăng nhập đồng bộ sang đăng nhập không đồng bộ. Các nhân viên máy chủ web viết bằng syslog (3) vào một số bộ nhớ đệm và rsyslogd (8) gửi dữ liệu tới một tệp thực tế song song và theo tốc độ của chính nó, vì vậy các quy trình không chặn IO khi đăng nhập.

Càng xa càng tốt. Vấn đề là rsyslogd tám phần bị ngăn không cho ghi (ví dụ như mất mạng tạm thời / kéo dài) và bộ đệm đến nhanh chóng lấp đầy.

Câu hỏi của tôi là:

  • Khách hàng có thể chặn khi viết vào rsyslogd bằng syslog (3) không?
  • Có cách nào để xem số liệu thống kê rsyslogd , ví dụ như bộ đệm lớn / đầy đủ như thế nào không?
  • Có cách nào để tăng kích thước của bộ đệm đến rsyslogd không?

2
Bạn đã bao giờ giải quyết điều này? Nếu vậy, tôi rất muốn đọc câu trả lời của bạn.
djeikyb

1
@djeikyb: xin lỗi không. Tôi thấy sự quan tâm (bỏ phiếu cho câu hỏi) nhưng chưa có ai trả lời. Có vẻ như điều này đòi hỏi một lần lặn mã nguồn.
arielf

1
Bạn không nói máy chủ web nào bạn đang sử dụng. Có lẽ bạn không nên sử dụng syslog. Có phải Apache, ví dụ, sử dụng syslog để ghi nhật ký, hoặc chỉ ghi vào tệp nhật ký? Đăng nhập vào cơ sở dữ liệu là một khả năng khác.
blujay

Câu trả lời:


1

Theo tôi nhớ chế độ mặc định cho hàng đợi tin nhắn chính trong rsyslog là mảng kích thước cố định. Nó có giới hạn cho các yếu tố 10k hoặc hơn. Cố gắng thay đổi điều này thành hàng đợi danh sách được liên kết, nó sẽ xử lý các thông điệp thỉnh thoảng của bạn bùng nổ tốt hơn nhiều.

Vâng, có FixedArrayLinkedListhàng đợi.


"Cố gắng thay đổi" ... Bạn có thể rõ ràng hơn không? Nhìn vào /etc/rsyslog.conf: Tôi thấy không có gì liên quan đến các loại hàng đợi bạn đề cập. Điều này có yêu cầu thay đổi mã không? Chúng có thể được cấu hình ở đâu và như thế nào? Cảm ơn!
thân

1

Câu trả lời cho câu hỏi đầu tiên của bạn là:

Có, mọi cuộc gọi đến syslog () đều bị chặn. Có thể trong một thời gian rất ngắn, nhưng nó vẫn là một cuộc gọi đồng bộ liên quan đến một bộ mô tả tệp. Xem man 3 syslogđể biết thêm sự gièm pha.

Trừ khi các máy chủ của bạn sử dụng các kiến ​​trúc và nguyên thủy không đồng bộ, sẽ luôn có một số khóa. Thsi có thể được giảm nhẹ, nhưng không được loại bỏ, ví dụ bằng cách sử dụng một dấu tách để ghi nhật ký. Đối với hai câu hỏi khác tôi không thực sự biết nhưng kiểm tra mã nguồn rsyslogd (cũng như câu hỏi cho họ hàm syslog ()) là cách duy nhất để biết.

Nói chung, nếu bạn di chuyển việc ghi nhật ký sang máy chủ bên ngoài thông qua "giao thức syslog mạng" UDP: 514, thì bạn mang các khả năng tạo khóa đến gần như bằng không. Với nhược điểm có thể mất một số đăng nhập trong khi tải cao.

Đầu tiên , trong các máy chủ "khởi tạo", bạn cần đảm bảo tất cả việc ghi nhật ký xảy ra thông qua syslog. Ví dụ, trong Apache2, bạn cần chỉ định:

ErrorLog "syslog:daemon"

Đối với các máy chủ khác xin vui lòng tham khảo trang người đàn ông thích hợp. Nếu bạn không thể đảm bảo điều này, xin lưu ý rằng việc đăng nhập vào hệ thống tệp có thể tạo

Thứ hai , trong cấu hình rsyslogd ban đầu, bạn yêu cầu chỉ đạo tất cả lưu lượng nhật ký hệ thống cho cơ sở bạn chọn ("daemon" trong ví dụ này) đến một hoặc nhiều máy chủ nhật ký hệ thống bên ngoài. Trong tệp cấu hình rsyslog, bạn có thể chỉ định:

daemon.* @192.168.128.1
daemon.* @192.168.254.1

để có hai bản sao của các bản ghi được gửi đến hai máy chủ khác nhau cùng một lúc.

Thứ ba , trong (các) máy chủ đích, bạn cho phép nhận thông báo nhật ký hệ thống qua UDP: 514. Nó nằm trong tệp cấu hình rsyslogd (đích) và thường bị vô hiệu hóa bởi defualt (nó sẽ đủ để xóa #s hàng đầu:

$ModLoad imudp
$UDPServerRun 514

Thứ tư , tùy chọn nhưng rất khuyến khích, tôi cũng sẽ kích hoạt dấu thời gian độ phân giải cao:

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

Ngoài ra, tùy chọn này thường bị tắt theo mặc định (tại sao trên Trái đất?).

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.