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-сервер, который в основном работает так же.

Другие вопросы по тегам