BigData LogManager для 1С

Хозяйке на заметку - самый быстрый способ потоковой записи текста - это

ЗаписьXML.ЗаписатьБезОбработки(ВашТекст);

быстрее ЗаписьТекста и уж тем более ТекстовогоДокумента.

3 Симпатий

Добрый день.
Решаю задачу разбора логов ТЖ 1С и их анализа средствами ELK.
Архитектура следующая:
Сервер 1. На нем: Служба 1С, FileBeat.
Сервер 2. На нем: logstash, elasticsearch (with watcher plagin), kibana, membrane-service-proxy (вместо elastic Shield).

Принцип работы (beats+ELK).
FileBeat выступает в роли агента, при появлении новых данных (причем склеивает их используя multiline) отправляет пакет в logstash. Logstash преобразовывает данные в JSON и отправляет в elasticsearch. Kibana выступает в роли вьюшки. Membrane-service-proxy используется для авторизации к elasticsearch и Kibana.

При реализации этой схемы столкнулся со следующими проблемами:

  1. Лишний символ (0xEF 0xBB 0xBF)

Логи ТЖ (*.log) записываются в кодировке UTF-8. Как следствие в начало каждого файла добавляется ‘п»ї’ (0xEF 0xBB 0xBF). Подробнее W3 UTF-8.
В filebeat.yml я указал encoding: utf-8, но проблема осталась.
Как следствие я теряю одно событие в каждом новом файле лога.

Пример того что filebeat отправляет в logstash:

{
  "@timestamp": "2016-05-12T12:06:53.593Z",
  "beat": {
    "hostname": " 1CAPP-07",
    "name": "1CAPP-07"
  },
  "count": 1,
  "fields": null,
  "input_type": "log",
  "message": "**?**06:45.0409-229386,SDBL,3,process=rphost,p:processName=PP
,t:clientID=919,t:applicationName=1CV8,t:computerName=TERM4,t:connectID=9603,
SessionID=6119,Usr=...,Trans=0,Func=Transaction,Func=CommitTransa
ction",
  "offset": 5691,
  "source": "T:\\tehjourn\\rphost_8876\\16051215.log",
  "type": "tj1s"
}
  1. Преобразование даты события в UTC

Получая данные в logstash и разбирая их я получаю две даты: @timestamp (дата и время обработки логов из beats) и timestamp (дата события из ТЖ – собирается из 16051215.log и ?06:45.0409).
Обеда даты имеют формат "YYYY-MM-dd HH:mm:ss.SSS Z (mutate {add_field => { “timestamp” => “%{year}-%{month}-%{day}T%{hour}:%{minute}:%{second}Z” }})
@timestamp – если я правильно понимаю в UTC, а timestamp в локальном формате.
Как timestamp перевести в UTC?

Помогите пожалуйста решить эти проблемы.

Этот “лишний символ” - byte offset mark. пересохраните (рядом) в файл без BOM, или вырежьте его кодом

Я понимаю.

пересохраните (рядом) в файл без BOM
в контексте моей задачи - не вариант.

вырежьте его кодом
в filebeat это можно сделать? или наверное только в logstash…

оффтопик - программа вебинара тут http://infostart.ru/webinars/524404/

1 Симпатия

Сам спросил и по классике жанра сам отвечу.

п.1
не нашел простого пути избавиться от BOM средствами filebeat, отрезал его logstash’ом.
mutate {gsub => ["message", "^[\W]{1,}", ""]}

п.2
(mutate {add_field => { "timestamp" => "%{year}-%{month}-%{day}T%{hour}:%{minute}:%{second}Z"}})
не внимательно ознакомился с ISO 8601.
вместо Z (признак времени по UTC) необходимо указать часовой пояс +03:00 ("%{year}-%{month}-%{day}T%{hour}:%{minute}:%{second}+03:00")
Вместо часового пояса +03:00 можно так же указать Europe/Moscow. подробнее тут

Провел свой микро тест.
10 раз по 10 000 строк. 4 метода. Результат в табличке. Победителем оказался ЗаписьТекста

1 Симпатия

Всем привет!
Помогите пожалуйста разобраться в ошибке.
Я использую PaketBeat (Version: 1.2.3) для анализа трафика и записи в elasticsearch.

Регулярно получаю следующую ошибку:
2016/08/08 15:29:09.853618 decoder.go:97: INFO packet decode failed with: Invali d (too small) IP length (0 < 20) 2016/08/08 15:29:12.853618 http.go:421: WARN Response from unknown transaction. Ingoring.

Пакеты c подобной ошибкой PaketBeat соответственно не разбирает.

PaketBeat запускаю с ключами ..\packetbeat.exe -e -dump c:\temp\trace2.pcap.

В trace2.pcap (https://drive.google.com/open?id=0B_459K_hkeaRb2VhNjhZOVhsWEE)
визуально проблем нет, все отображается корректно.

packetbeat.yml:

`
############################# Sniffer #########################################
interfaces:
device: 0

############################# Protocols #######################################
protocols:
http:

ports: [2001]

send_all_headers: true

include_body_for: ["application/json","text/html"]

send_request: true

send_response: true

transaction_timeout: 2s

############################# Output ##########################################
output:
console:

pretty: true
`

Подскажите пожалуйста в чем может быть проблема и как можно ее решить?

Там были особенности с Windows Server’ами

фишка была в том, как определялся IP адрес хоста:

 (Invoke-WebRequest -Method Head -Uri http://elasticsearch.irisnet.be:80).statuscode
500

я чинил как описано вот тут

в итоге оказалось, что я намудрил с прокси и с IPv6

IPv6 - выключен.

Хост к которому ходят запросы^
PS C:\Users\user> (Invoke-WebRequest -Method Head -Uri http://lip-1capp-07:2001).statuscode 200

С этим проблем вроде бы нет, тоже.

В проблеме разобрался.
Если интересно то смотрите тут

2 Симпатий

Ну ничего себе ты исследование провёл ;-). Круто

Да… мозги закипали временами… =)

Не стал создавать новую тему, отпишусь здесь.

В июньском вебинаре по ELK были предоставлены материалы, в которых были конфигурационные файлы для LogStash. В частности фильтр 061-filter-onec.conf, в котором используются grok паттерны из каталога /etc/logstash/patterns. Этих паттернов в материалах нет, а без них фильтр не работает.

Можно ли их как то получить?

Немного некро(?)постинга.

Сейчас прикручиваем у себя эту обработку с BulkAPI - и таки приходится проверять не только на код ответа 200, но и на наличие ошибок - в ответе есть bool поле errors, в котором и можно проверить, действительно ли все операции прошли успешно.

Поделитесь результатами доработки?

Когда допилю до вида, который не стыдно показать - поделюсь. Пока что я просто проверяю успешность строковым поиском по телу ответа на наличие строки “errors”:false и код состояния 200.

@pumbaE пинг :slight_smile:
10символов

1 Симпатия

Добили sqlite из бандла - теперь плагин просто можно скачать и запустить

завтра добью grok и финально выложу.

на досуге добъем вот это https://github.com/silverbulleters-research/sqliteOneCBeat

напишу как сделаем и выложу весь обновленный комплект сюда

1 Симпатия

выложен в публичный доступ

пока не качайте - работаем еще пока над стабильностью в различных режимах.