HAProxy có hỗ trợ đăng nhập vào một tập tin không?


14

Tôi vừa cài đặt haproxy trên máy chủ thử nghiệm của mình.

Có cách nào để làm cho nó ghi nhật ký của nó vào một tệp cục bộ, thay vì syslog không?

Điều này chỉ dành cho thử nghiệm vì vậy tôi không muốn bắt đầu mở các cổng / làm lộn xộn syslog với tất cả dữ liệu thử nghiệm của mình.

Thật không may, thông tin duy nhất tôi có thể tìm thấy đều xoay quanh việc đăng nhập vào máy chủ nhật ký hệ thống.

Tôi đã thử sử dụng:

log /home/user/ha.log local0

trong cấu hình của tôi. Nhưng điều đó nói với tôi:

[ALERT] 039/095022 (9528) : sendto logger #1 failed: No such file or directory (errno=2)

Khi tôi khởi động lại. Vì vậy, tôi đã tạo tập tin với touch /home/user/ha.logvà khởi động lại tại điểm tôi nhận được:

[ALERT] 039/095055 (9593) : sendto logger #1 failed: Connection refused (errno=111)

Điều này có thể không, hay tôi sẽ phải cấu hình syslog, v.v. để xem dữ liệu thử nghiệm của mình?


2
Tôi không nghĩ HAProxy có thể đăng nhập vào một tệp và tôi nghi ngờ lý do cho việc này là ghi vào đĩa là một hoạt động chặn. Tại sao bạn thực sự không muốn sử dụng syslog? Cấu hình không phải là tất cả mà khó khăn. Bạn có thể gán một cơ sở cục bộ cho HAProxy và định cấu hình trình nền syslog của bạn để ghi các mục đó vào một tệp khác và không cho các tệp syslog khác (hoặc luồng mạng), nếu bạn không muốn các bản ghi HAProxy không bị trộn lẫn với mọi thứ khác
Michael - sqlbot

Câu trả lời:


14

Haproxy đơn giản là không hỗ trợ đăng nhập vào tập tin. Như đã nêu trong tài liệu ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ), câu lệnh "log" lấy tham số đầu tiên làm địa chỉ. Nếu đó là một tệp, đó là ổ cắm unix và HAProxy sẽ nói ở định dạng nhật ký hệ thống với ổ cắm này. Haproxy được thiết kế như thế này vì khả năng đáp ứng của nó là yêu cầu proxy, không phải ghi tệp, nó ủy quyền ghi tệp nhật ký vào syslog. Nếu bạn không muốn gây rối với máy của mình, ví dụ bạn có thể cài đặt logstash và chạy: logstash -e 'input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }' và thêm: log /tmp/haprxoy_log.sock Trong haproxy.cfg của bạn để kiểm tra nó.


Tôi đang nhận được "E: Không thể xác định vị trí logstash gói". Đã logstash bị xóa khỏi Ubuntu?
dùng568021

@ user568021 dường như logstash không được cung cấp trong Ubuntu, nhưng tính đàn hồi (bộ duy trì của logstash) cung cấp một nguồn apt. Ngoài ra, logstash là một phần mềm java, vì vậy bạn có thể chạy nó bằng cách tải xuống một tệp jar chạy nó với JRE (được cung cấp bởi
ubfox

7

Bạn có thể thay đổi tệp cấu hình nhật ký haproxy bên dưới /etc/rsyslog.d/để trỏ tệp vào đường dẫn bạn thích. Không chắc chắn về phân phối khác. Đối với tôi, tôi đang sử dụng Debian. Tôi đã thay đổi /etc/rsyslog.d/49-haproxy.confđể chỉ đến /var/log/haproxy/haproxy.log,

# Create an additional socket in haproxy's chroot in order to allow logging via
# /dev/log to chroot'ed HAProxy processes
$AddUnixListenSocket /var/lib/haproxy/dev/log

# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy/haproxy.log
&~

Bạn cũng nên cập nhật đường dẫn nhật ký vào /etc/logrotate.d/haproxyđường dẫn mới. Vì vậy, nó sẽ xoay và nén logfile trong đường dẫn được cấu hình mới bằng cách sử dụnggzip .

Sau đó khởi động lại rsyslog.service.

sudo systemctl restart rsyslog.service

Bây giờ haproxy.log.*tập tin sẽ có trong /var/log/haproxy/thư mục.


Làm cách nào để tạo nhật ký riêng cho các lỗi như /var/log/haproxy-errors.log mà không ảnh hưởng đến haproxy.log ban đầu?
Khurshid Alam

0

Bạn đã cố gắng định cấu hình trong thư mục nhà của người dùng, haproxy không có quyền truy cập vào thư mục chính của người dùng, do đó gây ra sự cố.

Thay vào đó hãy thử ở vị trí khác, tạo thư mục trong /var/<directory>

log /var/<directory>/ha.log

2
Tôi đã thử sudo touch /var/log/ha.logvà thêm vào log /var/log/ha.log local0cấu hình của mình, nhưng gặp lỗi tương tự như trên connection refused.
IGGt

Trong nhật ký tại sao bạn đưa ra local0 cuối cùng?
KKD

1
Tôi đã cố gắng để nó ra ngoài, nhưng khi tôi khởi động lại, tôi đã gặp lỗi 'log' expects <address> and <facility> as arguments.nên yêu cầu một cái gì đó ở đó. Theo hướng dẫn <facility> must be one of the 24 standard syslog facilities(mà tôi nghĩ có thể là một phần của vấn đề)
IGGt
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.