Rsyslog не распознает некоторые имена хостов
У меня есть сервер 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
Итак, есть ли у кого-нибудь идеи об изменениях конфигурации, которые я мог бы сделать, чтобы выбрать имя хоста из нескольких различных типов файлов журнала? Какой-то тип шаблона, может быть?
Заранее спасибо!
0 ответов
У меня была аналогичная проблема с моим сервером rsyslog. Я собираю сообщения системного журнала со многих устройств Linux, устройств Cisco и MikroTik и так далее. Похоже, что имена хостов сетевых устройств не разрешаются должным образом, и они отображаются с их IP-адресом или другими именами, например, _gateway.
Я решил поместить весь отслеживаемый хост в /etc/hosts на сервере rsyslog, и проблема была решена. Я лично использую локальный DNS-сервер, который в основном работает так же.