暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

HAProxy学习(4)——HAProxy开启日志记录

原创 Tonyhacks 2024-06-12
1829

通过正确配置 HAProxy 日志,您可以监视代理的活动、诊断问题和优化性能。在处理生产环境中的问题时,请务必谨慎行事,并对配置进行适当的测试。在修改配置时,请确保遵循最佳实践,以便在保护网络安全的同时,确保最佳性能。

一.配置HAProxy配置文件

在 HAProxy 配置文件中,日志部分主要用于指定 HAProxy 如何记录事件和错误信息

1.全局日志配置

global 部分定义日志参数,这些参数适用于整个 HAProxy 实例。

global log<address><facility><level>

address:指定日志守护进程的地址。对于 rsyslog,它是 /dev/log 或一个远程地址,如 192.168.1.1:514。对于 journald,它是 `/run/systemd/journal/syslog.socket。

facility:rsyslog设施代码,可以是 local0local7 之间的任何一个值。这些设施用于对日志消息进行分类。

level:指定日志级别,可以是 emergalertcriterrwarningnoticeinfodebug。较低级别的日志包含较详细的信息,但可能导致性能下降。

示例:

global log /dev/log local3 info

2.代理日志配置

defaultsfrontend/backend 部分定义日志参数,这些参数仅适用于特定代理。

defaults log global option httplog option dontlognull
  • log global:表示继承 global 部分定义的日志参数。
  • option httplog:启用 HTTP 日志记录,包括请求和响应标头。
  • option dontlognull:禁止记录空连接(即没有请求或响应内容的连接)。

示例:

defaults log global option httplog option dontlognull

3.访问日志配置

frontend 部分定义访问日志格式和路径。

frontend http_front ... capture request header Host len 30 capture request header X-Forwarded-For len 50 log-format "%ci:%cp [%t] %ft %b/%s %Tq/%Tw/%Tc/%Tr/%Tt %ST %B %CC %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r" access-log /var/log/haproxy/access.log
  • capture request header:捕获请求头中的特定值,以便在访问日志中使用。
  • log-format:定义访问日志的格式。格式字符串中的占位符将替换为实际值。
  • access-log:指定访问日志文件的路径。如果未设置,访问日志将不会记录。

示例:

frontend http_front ... capture request header Host len 30 capture request header X-Forwarded-For len 50 log-format "%ci:%cp [%t] %ft %b/%s %Tq/%Tw/%Tc/%Tr/%Tt %ST %B %CC %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r" access-log /var/log/haproxy/access.log

二.配置rsyslog配置文件

1.删除/etc/rsyslog.conf中”*.info;” 字段

image.png

*.info: 这部分表示所有设施(facility)的info级别及以上的日志都应该被捕获。在rsyslog中,设施是消息来源的类别,例如authauthprivcrondaemonkernlprmailnewssysloguseruucp等。而*表示所有设施。日志级别从低到高有debuginfonoticewarningerrcritalertemerg。因此,*.info表示所有设施的infonoticewarningerrcritalertemerg级别的日志都应该被捕获。

删除字段”*.info;”,如果不删除,日志也会记录到/var/log/messages

2.开启/etc/rsyslog.conf的UDP

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

3./etc/rsyslog.conf添加HAProxy的设施

image.png

三.配置/etc/sysconfig/rsyslog

将/etc/sysconfig/rsyslog配置为

SYSLOGD_OPTIONS="-c 2 -r -m 0"

/etc/sysconfig/rsyslog 文件是 rsyslog 服务的配置文件,用于定义 rsyslog 守护进程的行为

以下是这三个选项的含义:

  1. -r:此选项启用接收来自远程主机的日志消息。当启用此选项时,rsyslog 将监听所有网络接口上的 UDP 端口 514(默认的 syslog 端口)。

  2. -m 0:此选项设置了 rsyslog 守护进程在启动时生成标记时间戳的间隔(以分钟为单位)。设置为 0 表示禁用时间戳标记功能。这意味着 rsyslog 将在每条日志消息的开头插入当前时间,而不是每隔特定分钟数插入时间戳。

  3. -c 2:此选项指定 rsyslog 使用的配置文件版本。-c 2 表示使用 rsyslog v2 语法。rsyslog 支持多个版本的配置文件语法,不同版本之间可能存在一些差异。通过指定版本,您可以确保 rsyslog 使用正确的语法解析配置文件。

总之,SYSLOGD_OPTIONS="-r -m 0 -c 2" 这一行配置了 rsyslog 守护进程以接收远程日志消息,禁用时间戳标记功能,并使用 rsyslog v2 语法解析配置文件。在处理生产环境中的问题时,请务必谨慎行事,并对配置进行适当的测试。在修改配置时,请确保遵循最佳实践,以便在保护网络安全的同时,确保最佳性能。

四.重启服务

systemctl restart haproxy rsyslog

五.查看日志

[root@localhost ~]# tail -f /var/log/haproxy.log 
Jun 12 14:07:43 localhost haproxy[9229]: 192.168.116.1:61967 [12/Jun/2024:14:07:43.223] main web/web2 0/0/0/0/0 403 5168 - - ---- 1/1/0/0/0 0/0 "GET / HTTP/1.1"
Jun 12 14:07:43 localhost haproxy[9229]: 192.168.116.1:61967 [12/Jun/2024:14:07:43.224] main static/<NOSRV> 18/-1/-1/-1/18 503 212 - - SC-- 0/0/0/0/0 0/0 "GET /noindex/css/bootstrap.min.css HTTP/1.1"
Jun 12 14:07:43 localhost haproxy[9227]: 192.168.116.1:61969 [12/Jun/2024:14:07:43.231] main static/<NOSRV> 11/-1/-1/-1/11 503 212 - - SC-- 0/0/0/0/0 0/0 "GET /noindex/css/open-sans.css HTTP/1.1"
Jun 12 14:07:43 localhost haproxy[9227]: 192.168.116.1:61971 [12/Jun/2024:14:07:43.243] main static/<NOSRV> 0/-1/-1/-1/0 503 212 - - SC-- 1/1/1/0/0 0/0 "GET /images/apache_pb.gif HTTP/1.1"
Jun 12 14:07:43 localhost haproxy[9227]: 192.168.116.1:61970 [12/Jun/2024:14:07:43.243] main static/<NOSRV> 0/-1/-1/-1/0 503 212 - - SC-- 0/0/0/0/0 0/0 "GET /images/poweredby.png HTTP/1.1"
最后修改时间:2024-06-12 17:09:11
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论