Добрый день.
Есть сеть. В ней есть несколько почтовых серверов и сотни свичей и роутеров. Когда логи прилетают от серверов хочу раскидывать по каталогам с доменным именем сервера. Когда логи прилетают от свичей,хочу чтобы в качтсве имени каталога был ip свича. Вот кусок конфига.
/etc/syslog-ng/syslog-ng.conf
options {
...
long_hostnames(off);
use_fqdn(yes);
use_dns(yes);
};
...
#Указываю,что нужно автоматически создавать каталоги и именем устройства из $FULLHOST
destination mail_log{ file("/var/log/servers/$FULLHOST/$DAY-$MONTH-$YEAR.log" create_dirs(yes) owner("log") group("log") dir_owner("log") perm(0640) dir_perm(0750) dir_group("log") ); };
#Указываю,что нужно автоматически создавать каталоги и именем устройства из $HOST. Хотя разницы между $FULLHOST не особо заметил.
destination device_log{ file("/var/log/devices/$HOST/$DAY-$MONTH-$YEAR.log" create_dirs(yes) owner("log") group("log") dir_owner("log") perm(0640) dir_perm(0750) dir_group("log") ); };
#Фильтр для почтовых серверов
filter mail { program ("mail|pop|imap|exim|smtp|dovecot") or facility(mail) and not program ("last|syslog|^$|^[0-9]+$"); };
#Фильтр для цисок всяких и прочего сетевого оборудования
filter device { host ("paradyne|zyxel|voip|catalyst|dialup") or program("^[0-9]+$") or facility(local7) ;};
log { source(net); filter(mail); destination(mail_log); };
log { source(net); filter(device); destination(device_log); };
Если опция use_dns(yes) , то все PTR записи ip адресов разрешаются в DNS и заносятся в переменные $HOST и $FULLHOST. Если use_dns(no),то $HOST и $FULLHOST содержат ip адрес хоста.
Не нашел переменной которая бы всегда содержала только ip адрес хоста. Тогда я бы ее мог использовать в destination.
Как решить данную задачу?
Спасибо.