?

Log in

No account? Create an account
Remote host logging with syslogd on OSX Mavericks - Them's the breaks
December 3rd, 2013
11:11 pm

[Link]

Previous Entry Share Next Entry
Remote host logging with syslogd on OSX Mavericks
Оказалось не совсем тривиально. Этот пост - чтобы самому не забыть. Если ли кому-то будет интересно, вся умственность под катом.

Задача: хранить логи удаленного хоста (маршрутизатора Airport Extreme) на компьютере для удобства просмотра. Конфигурация маршрутизатора тривиальна и здесь не рассматривается.

1) Разрешить syslogd слушать сеть.
Для этого нужно редактировать файл /System/Library/LaunchDaemons/com.apple.syslogd.plist - он бинарный, поэтому придется использовать утилиту PListBuddy.
Команда:
sudo /usr/libexec/PlistBuddy -x /System/Library/LaunchDaemons/com.apple.syslogd.plist

После ввода системного пароля утилита переходит в интерактивный режим и пишет
Command:

Ввести команду "print" - напечатает текущую конфигурацию. Посмотреть, нет ли уже строки
<key>NetworkListener</key>

Если такая строка есть, то скорее всего входящий логгинг уже разрешен. Если нет, ввести и выполнить последовательно следующие команды:
add :Sockets:NetworkListener dict
add :Sockets:NetworkListener:SockServiceName string syslog
add :Sockets:NetworkListener:SockType string dgram

После этого снова скомандовать "print". В напечатанном файле внутри "Sockets" должна быть такая конструкция:
<key>NetworkListener</key>
<dict>
	<key>SockServiceName</key>
	<string>syslog</string>
	<key>SockType</key>
	<string>dgram</string>
</dict>

После этого скомандовать последовательно "save" и "exit".

PListBuddy завершит работу и вернется в shell. Теперь надо перезапустить syslogd:
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist


С этого момента, если удаленный хост посылает сообщения, они должны появляться в system.log (смотреть через Console.app).

2) Направлять сообщения в другой лог-файл.
Надо править /etc/asl.conf (или, для более ранних версий OSX, /etc/syslog.conf)

Сначала надо узнать, как именно удаленный хост посылает сообщеня, что пишется в полях Host и Facility. Для этого надо запустить команду "syslog -F raw", найти в напечатанном строки с удаленного хоста и поглядеть, что там что. Например, у меня строка выглядит так:
[ASLMessageID 107220] [Time 1386128302] [TimeNanoSec 0] [Level 5] [PID 4294967295] [UID 4294967294] [GID 4294967294] \
[ReadGID 80] [Host utroom] [Sender 80211] [Facility local0] [Message Rotated CCMP group key.]


Видим, что Host здесь "utroom", а Facility "local0".
Теперь в файл /etc/asl.conf (или /etc/syslog.conf) нужно добавить строку:
? [= Host utroom] [= Facility local0] file /var/log/utroom.log

Естественно, вместо utroom и local0 надо взять значения, почерпнутые из вывода "syslog -F raw".
Снова перезапустить syslogd.
Все.

Tags: ,

(2 comments | Leave a comment)

Comments
 
[User Picture]
From:Kirill Rak
Date:March 12th, 2014 11:31 am (UTC)
(Link)
Извини за глупый вопрос.

Видим, что Host здесь "utroom", а Facility "local0".
Теперь в файл /etc/asl.conf (или /etc/syslog.conf) нужно добавить строку:
? [= Host utroom] [= Facility local0] file /var/log/utroom.log


где именно находятся файлы asl.conf или syslog.conf ?
или если я не так понимаю все, то как именно с помощью команды можно это сделать.

За ранее извиняюсь. с Мак Ос я пока на Вы. За ранее благодарю за ответ.


[User Picture]
From:cold_n_sour
Date:March 12th, 2014 01:47 pm (UTC)
(Link)
> где именно находятся файлы asl.conf или syslog.conf ?

В каталоге /etc/, который находится в корне.

> как именно с помощью команды можно это сделать.

редактировать с помощью текстового редактора nano.

"sudo nano /etc/syslog.conf"

sudo здесь потому, что иначе не даст сохранить - файлы системные.

Edited at 2014-03-12 01:47 pm (UTC)
Мои фотографии Powered by LiveJournal.com