đăng nhập haproxy vào syslog


13

Tôi đã cài đặt haproxy 1.5 qua apt-get trên Ubuntu 14.04 qua ppa:vbernat/haproxy-1.5mỗi http://haproxy.debian.net/

Vấn đề là nó đăng nhập /var/log/syslogthay vì/var/log/haproxy.log

Thiết lập về cơ bản là mặc định:

/etc/haproxy/haproxy.cfg

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL).
    ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
        ssl-default-bind-options no-sslv3

defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

/etc/rsyslog.d

# 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.log
&~

có lẽ liên kết này giúp bạn: kvz.io/blog/2010/08/11/haproxy-logging
Federico Sierra

Câu trả lời:


21

Rất khôn lanh. :-) Và đây là câu trả lời mẹo:

Lưu ý tập tin trong /etc/rsyslog.dNó nói rằng đăng nhập haproxy vào /var/log/haproxy.logNhưng điều này sẽ không có hiệu lực nếu không khởi động lại rsyslog:

service rsyslog restart

9

Tệp mặc định haproxy.confcung cấp các hướng dẫn rõ ràng trong cài đặt Toàn cầu - global. Ở đây tôi đang sao chép nó cho bạn -

# ------------------------------------------------- --------------------
# Thiết lập toàn cầu
# ------------------------------------------------- --------------------
toàn cầu
    # để những tin nhắn này kết thúc bằng /var/log/haproxy.log bạn sẽ
    # cần phải:
    #
    # 1) định cấu hình nhật ký hệ thống để chấp nhận các sự kiện nhật ký mạng. Xong rồi
    # bằng cách thêm tùy chọn '-r' vào SYSLOGD_OPTIONS trong
    # / etc / sysconfig / syslog
    #
    # 2) định cấu hình các sự kiện local2 để đi đến /var/log/haproxy.log
    # tập tin. Một dòng như sau có thể được thêm vào
    # / etc / sysconfig / syslog
    #
    #

Ví dụ, trong trường hợp của tôi, tôi đang chạy haproxy trong CentOS 6.6, cùng một máy chủ syslogd và phải thực hiện các thao tác sau để đăng nhập vào /var/log/haproxy.log:

  1. Thêm dòng dưới đây vào /etc/rsyslog.d/haproxy.conf-

    cục bộ2. * /var/log/haproxy.log
  2. Cho phép đăng nhập syslogd trên máy chủ -

# Cung cấp nhận syslog UDP
$ ModLoad imudp
$ UDPServerRun 514
$ UDPServerĐịa chỉ 127.0.0.1

2
Trong phần cuối cùng, trong bước thứ hai (Kích hoạt tính năng ghi nhật ký syslogd trên máy chủ); bạn thay đổi các cài đặt này trong tập tin /etc/rsyslog.conf. Sau đó, khởi động lại dịch vụ rsyslog: service rsyslog restart
Edenshaw

6

Nhận xét dòng này từ /etc/rsyslog.d

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

1
/etc/rsyslog.dlà một thư mục, không phải là một tập tin. Tôi không chắc chắn về sự khác biệt 1,5 so với 1,6 trên Ubuntu, nhưng tệp /etc/rsyslog.d/49-haproxy.conftồn tại sau khi cài đặt 1.6. Điều này có 3 dòng sau: $AddUnixListenSocket /var/lib/haproxy/dev/log \n if $programname startswith 'haproxy' then /var/log/haproxy.log \n &~(Tôi đã thêm "\ n" để biểu thị các dòng mới)
fideloper

3

vấn đề chính là haproxy bị chroot sẽ không thể truy cập /dev/logvà để tránh sự cố bạn có thể:

  • Cho phép nhật ký hệ thống để nghe trên ổ cắm UDP (thường ở cổng 514) như được mô tả trong các thông báo khác
  • Tạo thư mục /var/lib/haproxy/devvà gắn kết /devvới tùy chọn liên kết lên/var/lib/haproxy/dev

Nó hoạt động một trong hai cách.

[biên tập]

Sau 3 năm, một cái gì đó đã thay đổi. Haproxy bây giờ tạo một tập tin gọi là /etc/rsyslog.d/49-haproxy. Một trong những dòng trong tệp là:

$AddUnixListenSocket /var/lib/haproxy/dev/log.

Trong trường hợp này, môi trường chroot có thể sử dụng /dev/log


bạn cũng có thể chỉ cần thêm một ổ cắm nhật ký trong chroot. rsyslog có thể có nhiều. (tôi sẽ đưa ra một ví dụ nhưng đã nhiều năm rồi)
Florian Heigl

Đây không còn là trường hợp của các phiên bản HAProxy mới hơn, tôi đang chạy phiên bản 1.5.4 với cấu hình chroot nhưng đăng nhập vào /dev/log.
Overbryd

@Overbryd có và không. Haproxy mới hơn thêm một tệp trong /etc/rsyslog.d, với câu lệnh sau bên trong: $ AddUnixListenSocket / var / lib / haproxy / dev / log Tôi sẽ chỉnh sửa nhận xét của mình cho phù hợp.
maxadamo
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.