Проблема при разборе лога

Добрый день!

Пытаюсь загнать в ELK технологический журнал от 1С, но при разборе лога не могу занести кириллическое значение в индекс.

Есть сообщение вида

49:38.102017-17,CALL,1,p:processName=ut,Context=ОбщийМодуль.Вызов : ОбщийМодуль.прОбщегоНазначенияСервер.Модуль.ПолучитьТекстОповещенийПользователю,MemoryPeak=927719,InBytes=0,OutBytes=0,CpuTime=0

filebeat.yml

filebeat.inputs:

  • type: log
    enabled: true
    paths:
    • C:\1C\calls\rphost**.log
      fields:
      type: onec_call
      fields_under_root: true
      encoding: utf-8

Создал конфиг для Logstash

input {
stdin {
codec => json { charset=>"UTF-8" }
}
}
filter {
if [type] == "onec_call" {
grok {
match => { "message" => ["%{NUMBER:num_min}:%{BASE10NUM:num_sec}-%{WORD:duration},%{WORD:event1c},%{WORD:level_event},p:processName=%{WORD:process1c},Context=%{WORD:context}"]}
}
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
index => "onectj-%{+yyyy.MM.dd}"
}
}

При этом, запись помечается тэгами beats_input_codec_plain_applied, _grokparsefailure и, соответственно, не разбирается.

Если из filter убрать Context=%{WORD:context} (то, что и содержит кириллическое значение), всё нормально разбирается.

Пробовал в input указать codec => plain { charset=>"UTF-8" }, вообще удалить отовсюду указания кодировки, ничего не помогает. В чём может быть проблема?

А вы уверены, что у вас лог в UTF-8, а не, скажем, в какой-нибудь 1251?

Ну, как минимум, Notepad++ распознаёт его как UTF-8 BOM

А если hexdump-ом на байтики посмотреть?

С hexdump не работал, но в WinHex кодовая страница Unicode UTF-8

А какая ошибка в логах filebeat?

А какая ошибка в логах filebeat?

Иногда появляется ошибка:

|2020-02-19T22:06:28.205+0300|ERROR|logstash/async.go:256|Failed to publish events caused by: write tcp 192.168.0.125:57297->192.168.0.204:5044: wsasend: An existing connection was forcibly closed by the remote host.|
|2020-02-19T22:06:29.568+0300|ERROR|pipeline/output.go:121|Failed to publish events: write tcp 192.168.0.125:57297->192.168.0.204:5044: wsasend: An existing connection was forcibly closed by the remote host.|

Но не похоже на то, что это проблема с разбором

В логе logstash ошибок нет

Похоже, что я не там начал копать. Не в кодировке проблема. Проблема, похоже, в том, что %{WORD:event1c}, похоже, не работает с киррилицей. Я бы, наверное, воспользовался csv филтром, а потом потом доработал отдельные поля гроком по необходимости.

1 Like

csv не такой удобный, мне кажется. Но да, через него всё работает, спасибо!

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.