Как включить syslogd для приема входящих подключений на Snow Leopard от удаленных регистраторов?

20502
Emmel

Как заставить syslogd принимать входящие соединения от удаленных хостов на Snow Leopard?

Я хотел бы централизовать ведение журналов таким образом, чтобы различные устройства и системы отправляли журналы в syslogd Snow Leopard, который обычно зависает на UDP 514. Однако я не могу заставить их успешно приниматься хорошим ole syslogd. Я tcpdumped на поле Snow Leopard, чтобы проверить, что пакеты направляются на порт 514 - они есть. Я проверил, что syslogd слушает на 514 - это не так.

Погуглив, мне сказали, что в старых версиях OSX (разве вам не нравится, как в OSX все так быстро меняется), нужно просто добавить флаг в демон syslogd, чтобы разрешить удаленное управление; один сделал это в com.apple.syslogd.plist. Однако у демона syslogd нет флагов (по крайней мере, на его странице руководства), которые предлагают что-либо удаленное.

Какое решение для этого?

Вторичный, менее важный, но актуальный вопрос: что такое «newsyslog»? Я вижу файл plist, но он не работает (по-видимому).

Спасибо

10
Anyone know the answer? I have a penchant for asking unanswered questions. Emmel 14 лет назад 0

3 ответа на вопрос

11
Joe Carroll

Обратите внимание, что если вы пытаетесь сделать это на компьютере Snow Leopard Server (по крайней мере с 10.6.4), вы обнаружите, что в /System/Library/LaunchDaemons/com.apple.syslogd нет раздела с комментариями .plist (и что файл plist хранится в двоичном формате).

Тем не менее, копирование и вставка ключа, который цитирует Дуг выше, пойдет на пользу, хотя сначала вам нужно будет преобразовать формат файла в текст таким образом:

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

... и вам, вероятно, следует впоследствии преобразовать его (преобразования происходят на месте):

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

... затем перезагрузите демон launchd в соответствии с инструкциями Дуга.

После этого полный файл 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) на ваш сервер, они используют функцию 0, которую нельзя изменить . Это означает, что они будут автоматически зарегистрированы в /var/log/appfirewall.log из-за следующей записи по умолчанию в /etc/syslog.conf:

local0.* /var/log/appfirewall.log 

На серверной версии ОС вы можете смело изменять имя файла, например, AirPort.log, выполнив следующую команду:

sudo touch /var/log/AirPort.log 

... поскольку брандмауэр приложений Apple (socketfilterfw) по умолчанию отключен (и должен оставаться отключенным на сервере - ipfw - это все, что вам действительно нужно). Я не уверен, что возможно переконфигурировать socketfilterfw для использования другого средства системного журнала.

Как раз то, что я искал, идеальный ответ! deceze 13 лет назад 1
Проверено на 10.6.7 и работает отлично. Спасибо! Alexandre L Telles 13 лет назад 0
Это было именно то, что я пытался сделать! А именно, получить мои 4 AEBS для входа в мой Xserve под управлением SLS. Очень признателен! Dennis Wurster 13 лет назад 0
Обычно я добавляю аргумент -udp_in, чтобы из команды ps определить, работает ли он в качестве удаленного прослушивателя. `ProgramArguments / USR / SBIN / Syslogd -udp_in ` tgunr 11 лет назад 0
Эти инструкции отлично работают на Mountain Lion (не на сервере) Nelson 11 лет назад 0
5
aid

Еще один метод включения сетевого доступа к syslogd в Snow Leopard - использование программы командной строки 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 9 лет назад 0
4
Doug Harris

Я не пробовал этого, но я посмотрел в списке для syslogd (/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> --> 

Удалите комментарии, а затем перезагрузите сервис:

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

и вы, скорее всего, уже в пути.


Ответ на дополнительный вопрос - newsyslogпохож на logrotate, часто встречающийся в системах Linux. man newsyslog(или онлайн ) расскажет вам больше.

Как установлено с Snow Leopard, он запускается каждые 30 минут launchdсогласно этому биту в своем списке:

<key>StartCalendarInterval</key> <dict> <key>Minute</key> <integer>30</integer> </dict> 
Awesome! That's exactly the answer I was looking for. I just tested it and yes, confirmed it works. Thanks, Doug. Emmel 14 лет назад 0

Похожие вопросы