В настоящее время я сталкиваюсь с проблемой при попытке расшифровать сообщение системного журнала, полученное с устройства CylancePROTECT (AntiVirus). Обычно я получаю сообщение об ошибке, имеющей формат, при обнаружении угрозы на компьютере.
Я использовал Fluentular для построения своего выражения, и все правильно сопоставляется в Fluentular, но когда я помещаю это в контейнер Fluentd , Я получаю сообщение об ошибке «неверный формат времени».
Что у меня уже есть
Это файл /fluentd/etc/fluent.conf, который я использую:
<source>
@type syslog
port 5140
bind "0.0.0.0"
tag "system"
<transport tcp>
</transport>
</source>
<filter system.**>
@type parser
key_name "message"
<parse>
@type "regexp"
expression /^\<(?<pri>[0-9]{1,3})\>[1-9]\d{0,2} (?<time>[^ ]+) (?<host>[^ ]+) CylancePROTECT - - - Event Type: Threat, Event Name: (?<EventName>\S+), Device Name: (?<Hostname>\S+), IP Address: \((?<IpAddress>\S+)\), File Name: (?<FileName>\S+), Path: (?<Path>.*), Drive Type: (?<DriveType>.*), SHA256: (?<Sha256>\S+), MD5: (?<Md5>\S+), Status: (?<Status>\S+), Cylance Score: (?<Score>\S+), Found Date: (?<FoundDate>[^\]]*), File Type: (?<FileType>\S+), Is Running: (?<IsRunning>\S+), Auto Run: (?<AutoRun>\S+), Detected By: (?<Detector>\S+), Zone Names: \((?<Zones>\S+)\), Is Malware: (?<IsMalware>.*), Is Unique To Cylance: (?<UniqueToCylance>\S+), Threat Classification: (?<Classification>.*), Device Id: (?<DeviceId>\S+), Policy Name: (?<PolicyName>\S+).*/
time_format "%Y-%m-%dT%H:%M:%S.%LZ"
</parse>
</filter>
<match system.local3.*>
@type s3
s3_bucket "s3-some-bucket"
s3_region "eu-west-1"
path "logs/"
time_slice_format %Y%m%d%H%M
<instance_profile_credentials>
</instance_profile_credentials>
<buffer tag,time>
@type "file"
path "/var/log/fluent/s3"
timekey 60
timekey_wait 30s
timekey_use_utc true
chunk_limit_size 256m
</buffer>
</match>
<match system.**>
@type stdout
</match>
Это сообщение, которое я пытаюсь проанализировать:
<156> 1 2020-03-09T10: 58: 06.249000Z sysloghost CylancePROTECT - - - Тип события: Угроза, Имя события: угрожающий_карантин, Имя устройства : ip-10-xxx.appcode.ew1.bucode.some.domain.com, IP-адрес: (10.xxx), имя файла: virus.exe, путь: / путь /, тип диска: внутренний жесткий диск, SHA256: A8D76D6EFD4, MD5: B8F4F2CC08, Статус: Помещен в карантин, Счетчик баллов: 69, Дата обнаружения: 09.03.2020 10:58:06, Тип файла: Исполняемый, Выполняется: Ложь, Автоматический запуск: Ложь, Обнаружен: FileWatcher, Имена зон: (зона), Вредоносное ПО: Ложное, Уникальное для Цилиндра: Ложное, Классификация угроз : UNCLASSIFIED, идентификатор устройства: 89473712-450e-4355, имя политики: по умолчанию
Это ссылка на Fluentular для этого выражения и пример рабочего доказательства: fluentular.herokuapp.com / regexp
Сообщения об ошибках
И вот, это полное сообщение об ошибке, которое я получаю:
2020-03-09 10:58:12 +0000 [ ошибка]: # 0 неверные входные данные = "<156> 1 2020-03-09T10: 58: 06.249000Z sysloghost CylancePROTECT - - - Тип события: Угроза, Имя события: угрожающий_карантин, Имя устройства: ip-10-xxx.appcode. ew1.bucode.some.domain.com, IP-адрес: (10.xxx), имя файла: virus.exe, путь: / path /, тип диска: внутренний жесткий диск, SHA256: A8D76D6EFD4, MD5: B8F4F2CC08, статус: помещен на карантин , Цилиндрическая оценка: 69, Дата обнаружения: 09.03.2020 10:58:06, Тип файла: Исполняемый файл, Выполняется: Ложь, Автоматический запуск: Ложь, Обнаружен: FileWatcher, Имена зон: (зона), Является вредоносным ПО : Ложь, уникальна для цилиндра: Ложь, Классификация угроз: НЕКЛАССИФИЦИРОВАНО, Идентификатор устройства: 89473712-450e-4355, Имя политики: По умолчанию "e rror_class = Fluent :: TimeParser :: TimeParseError error = "неверный формат времени: значение = 1 2020-03-09T10: 58: 06.249000Z sysloghost, error_class = ArgumentError, error = строка не соответствует"
У меня также есть трассировка стека, которая следует за этим сообщением об ошибке:
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/time.rb:266:in `rescue in parse'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/time.rb:263:in `parse'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/plugin/parser_syslog.rb:117:in `block (2 levels) in parse_plain'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/plugin/parser_syslog.rb:114:in `synchronize'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/plugin/parser_syslog.rb:114:in `block in parse_plain'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/plugin/parser_syslog.rb:108:in `each'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/plugin/parser_syslog.rb:108:in `parse_plain'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/plugin/in_syslog.rb:218:in `message_handler'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/plugin/in_syslog.rb:192:in `block (2 levels) in start_tcp_server'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/plugin_helper/server.rb:612:in `on_read_without_connection'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/cool.io-1.5.4/lib/cool.io/io.rb:123:in `on_readable'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/cool.io-1.5.4/lib/cool.io/io.rb:186:in `on_readable'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/cool.io-1.5.4/lib/cool.io/loop.rb:88:in `run_once'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/cool.io-1.5.4/lib/cool.io/loop.rb:88:in `run'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/plugin_helper/event_loop.rb:93:in `block in start'
2020-03-09 10:58:12 +0000 [error]: #0 /usr/local/bundle/gems/fluentd-1.6.3/lib/fluent/plugin_helper/thread.rb:78:in `block in thread_create'
Что я уже пробовал
- Я пытался изменить time_format% L на% 6N с того времени имеет микросекунды, но она не устранила ошибку
Версия
fluent@cylance-fluentd-0: / $ fluentd --version fluentd 1.6.3
Ожидаемый результат
Что-то, что работает и правильно анализирует ввод без ошибки форматирования времени.