원격 로거의 Snow Leopard에서 syslogd가 들어오는 연결을 수락하도록하려면 어떻게합니까?


11

Snow Leopard의 원격 호스트에서 들어오는 연결을 수락하도록 syslogd를 어떻게 얻습니까?

다양한 장치와 시스템이 Snow Leopard의 syslogd로 로그를 보내도록 로깅을 중앙 집중화하고 싶습니다.이 로그는 일반적으로 UDP 514에서 중단됩니다. 그러나 좋은 ole syslogd에서 성공적으로 받아 들일 수는 없습니다. 패킷이 포트 514로 튀어 나오고 있는지 확인하기 위해 Snow Leopard 상자에 tcpdumped했습니다. syslogd가 514에서 수신 대기하고 있는지 확인했습니다.

인터넷 검색은 이전 버전의 OSX에서 (OSX에서 너무 빠르게 변경되는 방식을 좋아하지 않음) 원격 시스템을 허용하기 위해 syslogd 데몬에 플래그를 추가해야한다고 나에게 말했습니다. 하나는 com.apple.syslogd.plist에서이 작업을 수행했습니다. 그러나 syslogd 데몬에는 원격 항목을 제안하는 플래그가 없습니다 (적어도 설명서 페이지에는 없음).

이것에 대한 해결책은 무엇입니까?

수입이 적지 만 관련성 높은 질문 : 'newsyslog'란 무엇입니까? plist 파일이 보이지만 (명백하게) 실행되고 있지 않습니다.

감사


누구든지 답을 알고 있습니까? 답변이없는 질문을하는 데 어려움을 겪고 있습니다.
Emmel

답변:


5

나는 이것을 시도하지 않았지만 syslogd (/System/Library/LaunchDaemons/com.apple.syslogd.plist) 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>
-->

주석을 제거한 후 서비스를 다시로드하십시오.

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

그리고 당신은 아마 당신의 방법에 있습니다.


두 번째 질문에 대한 답 newsyslog은 Linux 시스템에서 자주 사용되는 logrotate 와 유사 합니다. man newsyslog(또는 온라인 ) 자세한 내용을 알려줍니다.

Snow Leopard와 함께 설치 launchd하면 plist에서이 비트별로 30 분마다 실행됩니다 .

<key>StartCalendarInterval</key>
<dict>
    <key>Minute</key>
    <integer>30</integer>
</dict>

대박! 그것이 바로 내가 찾던 대답입니다. 방금 테스트 한 결과 작동합니다. 고마워, 더그
Emmel

11

Snow Leopard Server 컴퓨터 (적어도 10.6.4 이상) 에서이 작업을 수행하려는 경우 /System/Library/LaunchDaemons/com.apple.syslogd에 주석 처리 된 섹션이 없습니다. .plist (및 plist 파일은 이진 형식으로 저장 됨).

그러나 Doug가 인용 한 키를 복사하여 붙여 넣으면 트릭을 수행하지만 먼저 파일 형식을 텍스트로 변환해야합니다.

sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

... 그리고 나중에 다시 변환해야합니다 (변환은 현장에서 발생합니다).

sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

그런 다음 Doug의 지시에 따라 시작된 데몬을 다시로드하십시오.

그 후 전체 plist 파일은 다음과 같이 읽어야합니다.

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>EnableTransactions</key>
    <true/>
    <key>HopefullyExitsLast</key>
    <true/>
    <key>Label</key>
    <string>com.apple.syslogd</string>
    <key>MachServices</key>
    <dict>
        <key>com.apple.system.logger</key>
        <true/>
    </dict>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/syslogd</string>
    </array>
    <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>
</dict>
</plist>

한 가지 더 참고 : 나와 같이 AirPort베이스 스테이션 (및 / 또는 Time Capsules)의 syslog 출력을 서버로 보내려면 시설 0을 사용합니다.이 기능 은 변경할 수 없습니다 . 이는 /etc/syslog.conf의 다음 기본 항목으로 인해 자동으로 /var/log/appfirewall.log에 기록됨을 의미합니다.

local0.*                                               /var/log/appfirewall.log

OS의 서버 버전에서 다음 명령을 실행하면 파일 이름을 AirPort.log로 안전하게 변경할 수 있습니다.

sudo touch /var/log/AirPort.log

... Apple의 응용 프로그램 방화벽 (socketfilterfw)이 기본적으로 해제되어 있기 때문에 (서버에서 꺼져 있어야합니다. ipfw 만 있으면됩니다). 다른 syslog 기능을 사용하도록 socketfilterfw를 다시 구성 할 수 있는지 확실하지 않습니다.


1
내가 찾던 것, 완벽한 답변!
5

10.6.7에서 테스트되었으며 정상적으로 작동합니다. 감사!
Alexandre L Telles

이것은 내가하려고했던 것입니다! 즉, 4 개의 AEBS가 SLS를 실행중인 Xserve에 로그인하도록합니다. 매우 감사!
Dennis Wurster

나는 보통 -udp_in arg를 추가하여 원격 리스너로 실행중인 경우 ps 명령에서 알 수 있습니다. <key>ProgramArguments</key> <array> <string>/usr/sbin/syslogd</string> <string>-udp_in</string> </array>
tgunr

이 지침은 Mountain Lion (서버 아님)에서 잘 작동합니다.
Nelson

6

Snow Leopard에서 syslogd에 대한 네트워크 액세스를 활성화하는 또 다른 방법은 명령 줄 프로그램 PlistBuddy를 사용하는 것입니다.

sudo /usr/libexec/PlistBuddy /System/Library/LaunchDaemons/com.apple.syslogd.plist
add :Sockets:NetworkListener dict
add :Sockets:NetworkListener:SockServiceName string syslog
add :Sockets:NetworkListener:SockType string dgram
save
quit

그런 다음 데몬을 다시 시작하십시오.

sudo launchctl unload com.apple.syslogd.plist 
sudo launchctl load com.apple.syslogd.plist 

lsof를 사용하여 syslogd가 표준 syslog 포트 514에서 수신 대기 중인지 확인할 수 있습니다.

$ sudo lsof -i:514
COMMAND   PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
launchd     1 root   44u  IPv6 0x0e459370      0t0  UDP *:syslog
launchd     1 root   56u  IPv4 0x0f7a9ef0      0t0  UDP *:syslog
syslogd 24319 root    5u  IPv6 0x0e459370      0t0  UDP *:syslog
syslogd 24319 root    6u  IPv4 0x0f7a9ef0      0t0  UDP *:syslog

이 솔루션은 요세미티에서도 작동하는 것으로 보입니다. 감사합니다.
Steve Powell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.