Haproxy:仅记录错误请求(http:4xx、5xx)

Haproxy:仅记录错误请求(http:4xx、5xx)

我目前正在 haproxy 中为 http 和 mqtt 服务添加速率限制。这些服务正在运行,但我还想在日志中显示被阻止的请求。在 http 前端,我返回 429,在 mqtt 上,我关闭被阻止请求的连接。

但是当我启用日志时,所有日志都会显示出来。

global
    log 127.0.0. local notice

defaults
    log global
    option httplog



#sticky tables
backend st_http
    stick-table type ipv6 size 100k expire 10s store http_req_rate(10s)

backend st_mqtt
    stick-table type ipv6 size 100k expire 10s store conn_rate(10s)



frontend public-https
    log stdout format short daemon warning

    #rate limiting
    http-request track-sc0 src table st_api_requests
    http-request deny deny_status 429 if { sc_http_req_rate(0) gt 100 }

    # ...

listen mqtt:
    mode tcp
    option tcplog
    log stdout format short daemon warning

    # rate limiting
    tcp-request connection track-sc0 src table st_mqtt_connections
    tcp-request connection reject if { sc_conn_rate(0) gt 2 }

    # ...

我怎样才能仅显示错误的请求,即 http 上的所有 4xx 和 5xx 请求以及 mqtt 上所有被阻止的连接?

// 我当前的测试仅显示服务的所有日志输出,或者根据日志级别不显示任何日志输出。我如何才能使其更具选择性?

//edit2 添加了用于速率限制的 acl

答案1

查看dontlog 正常记录分离错误。如果您需要的不仅仅是这些,我建议您查看一些日志记录基础设施。

HAProxy 不会记录被拒绝的 TCP 连接。您只能使用 mqtt 级别的速率限制,也许可以使用 HAProxy 来平衡集群负载。

相关内容