У меня есть клиентская машина, которая пересылает файлы журналов на центральный сервер rsyslog. Я вижу журналы на центральном сервере системных журналов здесь:
root@server:/var/log# ls -al /var/log/client/
всего 1952
drwxr-xr-x 2 системный журнал системный журнал 4096 19 июня 07:06 .
drwxrwxr-x 14 root syslog 4096 19 июня 10:26 ..
-rw-r----- 1 системный журнал adm 324895 19 июня 16:02 auth.log
-rw-r----- 1 системный журнал adm 31787 19 июня 15:17 authpriv.log
-rw-r----- 1 системный журнал adm 3859 19 июня 15:17 cron.log
-rw-r----- 1 системный журнал adm 96770 19 июня 15:38 daemon.log
-rw-r----- 1 системный журнал adm 1475044 19 июня 16:03 kern.log
-rw-r----- 1 системный журнал adm 11019 19 июня 12:50 local0.log
-rw-r----- 1 системный журнал adm 15883 19 июня 12:49 syslog.log
-rw-r----- 1 системный журнал adm 1688 19 июня 07:16 user.log
Меня больше всего интересует local0.log.
Я настроил центральный сервер rsyslog для пересылки журналов в logstash:
root@server:/etc/rsyslog.d# cat /etc/rsyslog.d/70-output.conf
шаблон (имя = "JSON-шаблон"
тип = "список") {
константа (значение = "{")
константное (значение = "\"@timestamp\":\"") свойство (имя = "timereported" dateFormat = "rfc3339")
константа (значение = "\", \"@версия\":\"1")
свойство константы (значение = "\", \"сообщение\":\"") (имя = "msg" format = "json")
свойство константы (значение = "\", \"sysloghost\":\"") (имя = "имя хоста")
постоянное (значение = "\", \"серьезность\":\"") свойство (имя = "syslogseverity-text")
постоянное (значение = "\", \"средство\":\"") свойство (имя = "syslogfacility-text")
постоянное (значение = "\", \"имя программы\":\"") свойство (имя = "имя программы")
постоянное (значение = "\", \"procid\":\"") свойство (имя = "procid")
константа (значение = "\"}\n")
}
*.* action(type="omfwd" target="localhost" port="10514" протокол="udp" template="json-template")
Logstash настроен на пересылку журналов в elasticsearch:
root@server:/etc/rsyslog.d# cat /etc/logstash/conf.d/logstash.conf
вход {
TCP {
хост => "127.0.0.1"
порт => 10514
кодек => "json"
введите => "rsyslog"
}
}
фильтр { }
вывод {
если [тип] == "rsyslog" {
эластичный поиск {
хосты => [ "127.0.0.1:9200" ]
}
}
}
Я вижу, что у elasticsearch теперь есть журналы:
root@server:/etc/rsyslog.d# curl -XGET 'http://localhost:9200/logstash-*/_search?q=*&pretty'
{
"взял": 4,
"timed_out": ложь,
...
"хиты" : [
{
"_index": "logstash-2021.06.19-000001",
"_тип": "_doc",
"_id": "3YxQJHoBrZHyFIavQWQZ",
"_оценка": 1,0,
"_источник" : {
«сообщение»: «[20468.211706] [UFW BLOCK] IN=eth0 OUT= MAC=<snip> SRC=<snip> DST=<snip> LEN=40 TOS=0x00 PREC=0x00 TTL=245 ID=15690 PROTO=TCP SPT=43024 DPT=6780 WINDOW=1024 RES=0x00 SYN URGP=0 ",
...
Однако кажется, что только некоторые файлы журналов пересылаются в logstash (или logstash не пересылает их в elasticsearch).
Глядя на все журналы в elasticsearch (или в кибане), я вижу /var/журнал/клиент/local0.log
полностью игнорируется.
Есть ли способ принудительно включить этот файл журнала? Как я могу устранить эту проблему?
Спасибо!