Хобрук: Ваш путь к мастерству в программировании

Ошибка Недопустимый формат: [ISO8601] при индексации журналов в ElasticSearch

Я вижу исключение, когда пытаюсь проиндексировать свои журналы в ElasticSearch (1.3.4). Основная причина исключения, которое я вижу, заключается в следующем (отредактировал мой первоначальный пост, чтобы предоставить полную трассировку стека)

[2015-01-09 15:53:00,953][DEBUG][action.admin.indices.create] [perfgen04 1] [logaggr-2015.01.09] failed to create
org.elasticsearch.index.mapper.MapperParsingException: mapping [test]
    at org.elasticsearch.cluster.metadata.MetaDataCreateIndexService$2.execute(MetaDataCreateIndexService.java:386)
    at org.elasticsearch.cluster.service.InternalClusterService$UpdateTask.run(InternalClusterService.java:328)
    at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:153)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalArgumentException: Invalid format: [ISO8601]: Illegal pattern component: I
    at org.elasticsearch.common.joda.Joda.forPattern(Joda.java:160)
    at org.elasticsearch.common.joda.Joda.forPattern(Joda.java:37)
    at org.elasticsearch.index.mapper.core.TypeParsers.parseDateTimeFormatter(TypeParsers.java:295)
    at org.elasticsearch.index.mapper.core.DateFieldMapper$TypeParser.parse(DateFieldMapper.java:155)
    at org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parseProperties(ObjectMapper.java:289)
    at org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parseObjectOrDocumentTypeProperties(ObjectMapper.java:217)
    at org.elasticsearch.index.mapper.object.RootObjectMapper$TypeParser.parse(RootObjectMapper.java:136)
    at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:209)
    at org.elasticsearch.index.mapper.DocumentMapperParser.parseCompressed(DocumentMapperParser.java:190)
    at org.elasticsearch.index.mapper.MapperService.parse(MapperService.java:440)
    at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:313)
    at org.elasticsearch.cluster.metadata.MetaDataCreateIndexService$2.execute(MetaDataCreateIndexService.java:383)
    ... 5 more
Caused by: java.lang.IllegalArgumentException: Illegal pattern component: I
    at org.elasticsearch.common.joda.time.format.DateTimeFormat.parsePatternTo(DateTimeFormat.java:570)
    at org.elasticsearch.common.joda.time.format.DateTimeFormat.createFormatterForPattern(DateTimeFormat.java:693)
    at org.elasticsearch.common.joda.time.format.DateTimeFormat.forPattern(DateTimeFormat.java:181)
    at org.elasticsearch.common.joda.Joda.forPattern(Joda.java:158)
    ... 16 more

Я использую logstash (1.4.2) для отправки своих журналов в ElasticSearch. Мой фильтр grok довольно прост и выглядит следующим образом. Я сохраняю временную метку в виде строки «logts».

filter {
    grok {
        match => [ "message", "%{DATA:logts}%{SPACE}\[%{LOGLEVEL:level}%{SPACE}]%{SPACE}\[%{DATA:thread}]%{SPACE}\[%{DATA:classname}]%{SPACE}%{GREEDYDATA:details}" ]
    }    
}

Пример строки из моего файла журнала:

2015-01-09 14:53:07,035-0800 [ERROR] [pool-1-thread-2] [LogGenerator] invocation count=101,time=95840107816543,metric=6688916707300087716

Я запустил logstash с флагом «-vv» и не вижу в выводе «[ISO8601]».

Кто-нибудь знает, где вводится недопустимый формат?

Gist доступен здесь.

10.01.2015

  • Сообщение об ошибке, указанное в строке темы, не отображается во вставленном тексте. Ваш шаблон отлично работает в отладчике. Обратите внимание на недопустимый компонент шаблона: I. 10.01.2015
  • Я подозреваю, что у OP есть еще один файл конфигурации в /etc/logstash/conf.d. Я бы попробовал grep ISO8601 /etc/logstash/conf.d/*. 11.01.2015
  • Отредактировал мой вопрос, показав сообщение об ошибке в заголовке. Это похоже на попытку разобрать строку формата ISO8601, которая в свою очередь жалуется на компонент Illegal pattern: I. Но я не могу объяснить, откуда он берет формат ISO8601. Я проверил свой файл /etc/logstash/conf.d и не обнаружил там никаких файлов конфигурации. 12.01.2015
  • Обновление: добавлено date_detection : false, как в этом документе (elasticsearch.org/guide/en/elasticsearch/reference/current/), но я все равно вижу ошибку "Недопустимый формат". 12.01.2015

Ответы:


1

Я удалил свою установку Elasticsearch (это была тестовая среда) и переустановил, и это снова заработало.

Я подозреваю, что если бы я удалил свой индекс, это также решило бы проблему.

13.01.2015
Новые материалы

Почему шаблоны проектирования и почему нет?
Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

Создание дизайна обуви с помощью машинного обучения
Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

GraalVM в 2022 году: итоги года
2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..

Быстрая разработка: волшебный мир больших языковых моделей
РУКОВОДСТВО Быстрая разработка: волшебный мир больших языковых моделей Подход, основанный на данных, для получения наилучшего ответа Искусство и наука Можно ли совместить машинное..

Ускоренный курс по Node Redis
Сегодня мы будем учиться использовать Redis в Node.js, однако я не собираюсь вываливать сюда всю документацию и утомлять вас до смерти. Это руководство для начинающих? — спросите вы. Ну..

Обзор Python для науки о данных и машинного обучения
Python стал наиболее предпочтительным языком программирования среди разработчиков, которые в основном занимаются наукой о данных и машинным обучением. Интуитивно понятные и уникальные функции..

Принудительный сброс состояния компонента React с помощью ключевого свойства
Принудительный сброс состояния компонента React с помощью ключевого свойства Знаете ли вы, что вы можете использовать опору key для принудительного сброса состояния компонента? В..