Выражение Fluentd работает в Fluentular, но возвращает «неверный формат времени» с Syslog - PullRequest
0 голосов
/ 09 марта 2020

В настоящее время я сталкиваюсь с проблемой при попытке расшифровать сообщение системного журнала, полученное с устройства 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

Ожидаемый результат

Что-то, что работает и правильно анализирует ввод без ошибки форматирования времени.

...