【问题标题】:How to start Syslogd server on Mac to accept remote logging messages?如何在 Mac 上启动 Syslogd 服务器以接受远程日志消息?
【发布时间】:2011-07-27 12:04:39
【问题描述】:

有人知道如何在 Mac 上启动 Syslogd 服务器以接受远程日志消息吗?

我启动了 Syslogd,但它似乎不接受远程消息。

如果我执行 netstat -an,它看起来 udp 端口​​ 514 正在侦听。但是,如果我使用 nmap 从笔记本电脑扫描服务器,则看不到 udp 514。端口很可能在某处被阻塞。我检查了 ipfw,但它看起来不像任何定义的规则。

我看过很多文章说必须指定 -r 选项。 Mac上也是这样吗? 如何在 Mac 上做到这一点?

【问题讨论】:

    标签: macos logging


    【解决方案1】:

    Syslogd 应该已经在您的系统上运行;您需要做的是启用其 UDP 侦听选项。这由靠近 /System/Library/LaunchDaemons/com.apple.syslogd.plist 末尾的部分控制;删除评论标记,使其看起来像这样:

    <!--
            Un-comment the following lines to enable the network syslog protocol listener.
    -->
                    <key>NetworkListener</key>
                    <dict>
                            <key>SockServiceName</key>
                            <string>syslog</string>
                            <key>SockType</key>
                            <string>dgram</string>
                    </dict>
            </dict>
    </dict>
    </plist>
    

    然后通过重新启动或运行来重新加载 syslogd 守护进程:

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

    更新:从 OS X v10.7 开始,Apple 将 com.apple.syslogd.plist 转换为二进制 plist 格式,该格式不包含相关注释,并且不能作为纯文本进行编辑。使用新格式,PlistBuddy 似乎是添加监听器的最简单方法:

    cd /System/Library/LaunchDaemons
    sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener dict" com.apple.syslogd.plist
    sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener:SockServiceName string syslog" com.apple.syslogd.plist
    sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener:SockType string dgram" com.apple.syslogd.plist
    sudo launchctl unload com.apple.syslogd.plist
    sudo launchctl load com.apple.syslogd.plist
    

    【讨论】:

    • 这适用于哪个 OS X 版本?在 Mountain Lion 服务器上,我在控制台中收到“com.apple.launchd[1]: (com.apple.syslogd) Unknown key for dictionary: NetworkListener”,但我仍然看不到远程日志消息……
    • @JohnYeates:尝试更新后的说明(但请务必从 com.apple.syslogd.plist 的“库存”版本开始)。
    • 我按照您更新中的步骤操作,但在 OS X 系统日志中没有看到来自我的路由器的任何其他消息。我没有启用防火墙,我知道路由器可以 ping 我的 OS X 机器。我在 com.apple.syslogd.plist 中看到了这一点:&lt;key&gt;NetworkListener&lt;/key&gt; &lt;dict&gt; &lt;key&gt;SockServiceName&lt;/key&gt; &lt;string&gt;syslog&lt;/string&gt; &lt;key&gt;SockType&lt;/key&gt; &lt;string&gt;dgram&lt;/string&gt; &lt;/dict&gt; 我还卸载并加载了 syslogd。我错过了什么吗?
    • 这在 El Capitan 将不再适用,因为我猜是 SIP 限制。见stackoverflow.com/questions/30768087/…
    • 坏消息:这对 El Captain 不起作用。请参阅:discussions.apple.com/thread/7322612?start=0&tstart=0 好消息:您可以使用 Xcode 编辑 plist 文件 - 即使是二进制文件。
    【解决方案2】:

    有点老了,但我今天确实必须这样做,在四处寻找一个简单的软件来为我做这件事时,我遇到了这个问题。

    我真正想做的只是在短时间内观察一些系统日志条目,看看来自服务器的内容,所以我最终做的是:

    sudo tcpdump -lns 0 -w - udp and port 514 | strings
    

    这将简单地在输出上打印发送到您的机器的任何消息,以便您可以显示它。

    无论如何,如果您这样做并且它会输出正在传输到您的服务器的消息,您可以确定它没有被您的防火墙或中间的任何其他硬件阻止。

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      相关资源
      最近更新 更多