Разбор JSON в Logstash

У меня есть несколько файлов журнала, созданныхLog4J2, Я вывожу журналы в файл .json, используя JSONLayout в файле конфигурации log4j2.xml. Мой JSONLayout определяется так:

<JSONLayout complete="false"></JSONLayout>

Когда журналы вводятся в файл журнала на моей машине, они добавляются один за другим и выглядят так в logs.log:

  {
    "logger":"com.mycompany.myLogger",
    "timestamp":"1396792374326",
    "level":"ERROR",
    "thread":"pool-2-thread-2",
    "message":"System: unable to perform action",
    "throwable":"java.lang.NullPointerException\\n\tat com.myCompany.MyClass $.java:432)\\n\tat java.lang.Thread.run(Thread.java:744)\\n"
  },

Я пытаюсь структурировать этот JSON, чтобы я мог запросить его из ElasticSearch. Во время этого процесса я пытаюсь добавить настраиваемое поле для ВСЕХ записей. Для этого я использую следующее:

input {
  file {
    type => "json"
    path => "/var/logs/myApp/logs.log"
  }
}
filter {
  json {
    add_tag => [ "HardcodedTagName"]
    source => "message"
  }
}
output {
  elasticsearch {
    protocol => "http"
    codec => "json"
    host => "[myServerAddress]"
    port => "9200"
  }
}

Как ни странно, мой пользовательский тег НИКОГДА не добавляется. В то же время я бы очень хотел разбить свой JSON на поля, которые я могу запросить в ElasticSearch. Вещи, которые я хотел бы запросить, четко доступны. Они есть:

уровеньсообщениеотметка времени

Тем не менее, я не могу получить эту информацию. Когда я вижу записи JSON в Кибане, я просто вижу что-то вроде этого:

{
  "_index": "logstash-2014.04.07",
  "_type": "json",
  "_id": "tG-s6-5pSnq5HZwLhM6Dxg",
  "_score": null,
  "_source": {
    "message": "    \"message\":\"System: unable to perform action\"\r",
    "@version": "1",
    "@timestamp": "2014-04-07T18:01:38.739Z",
    "type": "json",
    "host": "ip-MyipAddress",
    "path": "/var/logs/myApp/logs.log"
  },
  "sort": [
    1396893698739,
    1396893698739
  ]
}

Что меня больше всего удивляет, так это то, что уровень журнала даже не существует. Ни информация о потоке. Я был удивлен, что не смог найти запись в блоге примера Log4J, который использует фильтр. Любая помощь искренне ценится!

Ответы на вопрос(1)

Ваш ответ на вопрос