在Mac OS X上记录HAProxy日志

5

有人知道在Mac OSX上haproxy日志写在哪里吗? 我想使用capture cookie _secure len 32记录发送到我的Rails后端的安全cookie。

我检查了Console.app,但是日志没有显示出来。

4个回答

4

HAProxy将日志记录到syslog中,因此您的确需要检查Console.app以查看输出。

问题在于,在OSX上,您首先需要设置syslog以包括其网络监听器。

以下是对我有效的说明:

[来源]
 HA Proxy Logging on Lion
 -------------------------

 # To enable haproxy logging we need to change syslogd
 # startup procedure to include its network listener.

 # Backup syslogd start up file
 sudo cp /System/Library/LaunchDaemons/com.apple.syslogd.plist   /System/Library/LaunchDaemons/com.apple.syslogd.plist.bakup


 # Convert binary file to xml to be human readable / editable
 sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

 # Edit /System/Library/LaunchDaemons/com.apple.syslogd.plist 
 # and add the following snippet under the sockets  node

 <key>NetworkListener</key>
 <dict>
   <key>SockServiceName</key>
   <string>syslog</string>
   <key>SockType</key>
   <string>dgram</string>
 </dict>

 # Should read like this now
 <key>Sockets</key>
 <dict>
    <key>AppleSystemLogger</key>
    <dict>
        <key>SockPathMode</key>
        <integer>438</integer>
        <key>SockPathName</key>
        <string>/var/run/asl_input</string>
    </dict>
    <key>BSDSystemLogger</key>
    <dict>
        <key>SockPathMode</key>
        <integer>438</integer>
        <key>SockPathName</key>
        <string>/var/run/syslog</string>
        <key>SockType</key>
        <string>dgram</string>
    </dict>
    <key>NetworkListener</key>
    <dict>
        <key>SockServiceName</key>
        <string>syslog</string>
        <key>SockType</key>
        <string>dgram</string>
    </dict>
 </dict>

 # Save the file

 # Convert back to binary file
 sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

 # Restart syslogd
 sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
 sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

 # I added the following entry to /etc/syslog.conf
 local2.*                       /var/log/haproxy.log

 # Include logging options in haproxy.cfg
 global
    log 127.0.0.1   local2 debug

 defaults
    mode http
    option httplog
    log global


 # Restart HAproxy

如果可以的话,我会给你巨额的奖励分数。这太棒了,谢谢你。 - Tyler Zale

2

由于我的声望不够,无法评论(呜呜),我想在alanning的答案中添加以下内容:

如果你正在运行OS X 10.11+ (El Capitan或更高版本),并且无法复制plist文件(即使使用sudo命令),则可能会遇到苹果的新系统完整性保护。

要禁用SIP:

  1. 重新启动进入恢复模式(重新启动并按住Cmd-R)
  2. 打开终端
  3. 使用此命令:csrutil disable
  4. 重新启动并运行在El Capitan之前有效的命令

强烈建议您通过同样的步骤重新启用SIP,但在第3步中使用csrutil enable

参考资料:

如何在Stack Overflow上禁用根模式

关于Apple.com上的系统完整性保护


0

使用dtruss在haproxy上查看它们被写入的位置。当您观察时,应该会出现文件I/O系统调用。

更好的方法是,它是开源的。只需查看代码即可。


0

在使用macOS Catalina时,我无法通过其他syslogd策略描述的方式使日志记录正常工作,但我找到了两种捕获日志的方法:

策略1:从配置中注释掉daemon,并手动运行进程(在停止任何服务实例后):sudo haproxy -f /usr/local/etc/haproxy.cfg

策略2:记录到远程rsyslog服务器,该服务器已设置为接受传入的日志:log "rsyslogserver:514" local0,其中rsyslogserver是服务器名称或IP。您可以查找“配置远程rsyslog日志记录 <您的操作系统/版本>”以获取有关服务器设置的详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接