У меня есть сервер rsyslog, работающий на CentOS (CentOS Linux, выпуск 7.4.1708 (Core)). Мы используем это в основном для сетевых устройств, в основном Cisco. Я отправляю имя хоста со всеми своими событиями регистрации. Мой сервер создает каталог для каждого хоста на основе его имени хоста. Однако многие имена хостов не распознаются, и каталог создается с использованием IP-адреса устройства. Я пытаюсь выяснить, могу ли я изменить свои настройки, чтобы распознать эти отсутствующие имена хостов.
Вот пример правильно функционирующего устройства:
Этот Cisco ASA отправляет имя хоста сразу после отметки времени:
Sep 12 10:04:13 FIREWALL01 : %ASA-6-302016: Teardown UDP connection ...
Эти журналы ASA помещены в каталог с названием «FIREWALL01». Я хочу именно такого поведения.
Неправильное поведение:
Это устройство является маршрутизатором Cisco ISR. Он по-прежнему включает имя хоста, но он появляется позже в журнале событий:
Sep 12 09:33:07 10.X.X.X 38174: ISRROUTER01: Sep 12 14:33:06.233: %BGP-5-ADJCHANGE: neighbor ...
В этом примере я ожидал бы, что rsyslog выбрасывает эти события в каталог с названием «ISRROUTER01», однако он помещает их в каталог с названием «10». .XXX ".
Текущая конфигурация:
Вот мой текущий файл конфигурации /etc/rsyslog.conf:
# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on
# File to store the position in the journal
$IMJournalStateFile imjournal.state
#### Templates ####
# log every host in its own directory
$template RemoteHost,"/var/log/syslog/%HOSTNAME%/%HOSTNAME%.log"
# Local Logging
$RuleSet local
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
# use the local RuleSet as default if not specified otherwise
$DefaultRuleset local
# Remote Logging
$RuleSet remote
*.* ?RemoteHost
#### Listeners ####
# bind rulesets to listeners
$InputTCPServerBindRuleset remote
$InputUDPServerBindRuleset remote
# activate listeners
$InputTCPServerRun 514
$UDPServerRun 514
Итак, есть ли у кого-нибудь идеи по поводу изменений конфигурации, которые я мог бы внести, чтобы выбрать имя хоста из нескольких различных типов файлов журнала? Может быть, какой-нибудь шаблон?
Заранее спасибо!
У меня была аналогичная проблема с моим сервером rsyslog. Я собираю сообщения системного журнала со многих устройств Linux box, устройств Cisco и MikroTik и так далее. Похоже, что имена хостов сетевых устройств не разрешаются должным образом и отображаются с их IP-адресами или другими именами, такими как, например, _gateway.
Я придумал поместить все отслеживаемые хосты в /etc/hosts на сервере rsyslog, и проблема была решена. Я лично запускаю локальный DNS-сервер, который в основном достигает того же.