Мне было бы очень интересно, особенно про маппинг
BigData LogManager для 1С
А собственно файлы lgf каким образом парсятся?
ktb
alex
Конфиги логстеша: https://github.com/ggerogery/logstash-1c-security-logs
А собственно файлы lgf каким образом парсятся?
“В лоб”, скриптом на баше, который в репе лежит - lgp-to-yml.sh. Он по крону парсит lgf в формат словарей для logstash’а(“KEY”: “VALUE”). Потом, главное, правильно расставить интервалы, чтобы за секунду до получения событий логстешем словари были обновлены. Рабочий конфиг логстеша - logstash/conf.d/raw_files_1.conf. Там есть фильтры translate:
translate {
field => “[UserId]”
destination => “[User]”
dictionary_path => “/etc/logstash/conf.d/custom_mapping_1C/DB_NAME_UserId.yml”
refresh_interval => 104
fallback => “Nothing to match!”
}
в этом примере он будет смотреть в поле UserId, увидит там, например, запись 1984, в словаре DB_NAME_UserId.yml посмотрит, что 1984 - это Петров_А_А, которого и поместит в User
raw_files_1.conf - там описан пайплайн, который смотрит в диру с сырыми логами конкретной БД 1С, каждое отдельное событие склеивает в одну строку(codec multiline) и прогоняет через все фильтры(mutate’ты -> grok -> translate), готовый результат складывает в эластик. Логи 1С неоднородные слишком, у меня вышло 6 разных GROK паттернов, которые покрывают все логи.
Попробовал. Тестовая база разобралась хорошо, а рабочая нет. Все таки паттерны grok не подойдут под то что 1С сделала - у меня вылезло что в данных {P, {6 к примеру дополнительно 197 объектных полей. Предварительно получается неплохо, если я перед logstash файл прогоняю через рег-выражения, для приведения pattern.
Добрый день!
Пытаюсь получить наименование файла логов ТЖ 1с, но ничего не выходит. За пример взял часть кода из вашего сообщения:
{
"grok": {
"field": "source",
"patterns": [
"%{NUMBER:tempyymmddhh}.log"
]
}
}
в логах выдает ошибку:
(status=400): {“type”:“illegal_argument_exception”,“reason”:“field [source] not present as part of path [source]”}
Без данного куска, все работает и разбирается
полный pipeline
{
"description" : "onec tj pipeline",
"processors": [
{
"grok": {
"field": "message",
"patterns": ["%{NUMBER:num_min}:%{BASE10NUM:num_sec}-%{NUMBER:duration},%{WORD:event1c},%{NUMBER:level}"]
}
},
{
"grok": {
"field": "message",
"patterns": [
"process=%{WORD:process1c}"
],
"on_failure": [
{
"set": {
"field": "process1c",
"value": ""
}
}
]
}
},
{
"grok": {
"field": "message",
"patterns": [
"Usr=%{WORD:usr}"
],
"on_failure": [
{
"set": {
"field": "usr",
"value": ""
}
}
]
}
},
{
"grok": {
"field": "message",
"patterns": [
"Context=%{WORD:context}"
],
"on_failure": [
{
"set": {
"field": "context",
"value": ""
}
}
]
}
},
{
"grok": {
"field": "source",
"patterns": [
"%{NUMBER:tempyymmddhh}.log"
]
}
}
]
}
Подскажите пожалуйста в чем может быть проблема?
Заранее благодарен!