# Logstash и JSON

**URL:** <https://discuss.elastic.co/t/logstash-json/75314>\
**Category:** Вопросы на русском языке\
**Created:** [February 16, 2017, 10:47am UTC](https://discuss.elastic.co/t/logstash-json/75314 "2017-02-16T10:47:18Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [March 2, 2017, 4:51pm UTC](https://discuss.elastic.co/t/logstash-json/75314/21 "2017-03-02T16:51:25Z")

</div>

Спасибо. Я открыл [https://github.com/elastic/kibana/issues/10658](https://github.com/elastic/kibana/issues/10658). Будем разбираться. Возможно, будут дополнительные вопросы.

---

<div class="post-metadata">

**Author:** ![cwt](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cwt](https://discuss.elastic.co/u/cwt)\
**Post date:** [March 2, 2017, 5:08pm UTC](https://discuss.elastic.co/t/logstash-json/75314/22 "2017-03-02T17:08:43Z")

</div>

хорошо, могу дополнить: ubuntu 16.04.01 LTS, Google Chrome 56.0.2924.87 (64-bit) Mac OS, установка deb-пакетом из офиц. реп,

---

<div class="post-metadata">

**Author:** ![cwt](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cwt](https://discuss.elastic.co/u/cwt)\
**Post date:** [March 28, 2017, 5:38am UTC](https://discuss.elastic.co/t/logstash-json/75314/23 "2017-03-28T05:38:21Z")

</div>

Если я сделал:

> ```
> "app_json" : {
> "properties" : {
> "extra" : {
> "type" : "object",
> "enabled" : false
> },
> "context" : {
> "type" : "object",
> "enabled" : false
> }
> }
> 
> ```

То можно ли вручную добавить маппинг на конкретный field в json внутри этих отключенных?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [March 28, 2017, 4:15pm UTC](https://discuss.elastic.co/t/logstash-json/75314/24 "2017-03-28T16:15:41Z")

</div>

Нет, не думаю, что это возможно. Лучше скопировать это поле куда-нибудь в logstash или ingest processor.

---

<div class="post-metadata">

**Author:** ![cwt](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cwt](https://discuss.elastic.co/u/cwt)\
**Post date:** [March 29, 2017, 5:28am UTC](https://discuss.elastic.co/t/logstash-json/75314/25 "2017-03-29T05:28:17Z")

</div>

Спасибо за совет, пробую первое так как про второе не в курсе)  
Вообще как-то тяжеловато все идет((  
Вот например пробую

> if [extra][http][POST][access\_token] ~= /.+/ {  
> mutate {  
> add\_field =\> {"access\_token" =\> "%{[extra][http][POST][access\_token]}"}  
> }  
> }

То логсташ валится с большой ошибкой INTERPRET\_BLOCK и все.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [March 29, 2017, 6:12pm UTC](https://discuss.elastic.co/t/logstash-json/75314/26 "2017-03-29T18:12:45Z")

</div>

`~=` → `=~`

---

<div class="post-metadata">

**Author:** ![cwt](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cwt](https://discuss.elastic.co/u/cwt)\
**Post date:** [March 30, 2017, 4:37am UTC](https://discuss.elastic.co/t/logstash-json/75314/27 "2017-03-30T04:37:44Z")

</div>

это не играет роли, я пробовал и без этого - if [extra][http][POST][access\_token] {  
все равно логсташ вырубается. ищу варианты, спасибо

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [March 30, 2017, 12:37pm UTC](https://discuss.elastic.co/t/logstash-json/75314/28 "2017-03-30T12:37:01Z")

</div>

Как он вырубается? Я только что попробовал - такой скрипт работает на 5.3.0.

```auto
input {
    stdin { }
}
filter {
    json { 
      source => message
    }

    if [extra][http][POST][access_token] =~ /.+/ {
      mutate {
        add_field => {"access_token" => "%{[extra][http][POST][access_token]}"}
      }
    }
}
# For debugging
output {
    stdout { codec => rubydebug }
}

```

---

<div class="post-metadata">

**Author:** ![cwt](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cwt](https://discuss.elastic.co/u/cwt)\
**Post date:** [March 31, 2017, 3:46am UTC](https://discuss.elastic.co/t/logstash-json/75314/29 "2017-03-31T03:46:25Z")

</div>

Logstash после перечтения конфига, через полминуты выдает вот такие ошибки (штук 5 одинаковых), и начинает писать что он busy. И ничего не работает.

[Лог](http://paste.org.ru/?b4ig52)

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [March 31, 2017, 12:39pm UTC](https://discuss.elastic.co/t/logstash-json/75314/30 "2017-03-31T12:39:16Z")

</div>

Какая версия logstash?

---

<div class="post-metadata">

**Author:** ![cwt](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cwt](https://discuss.elastic.co/u/cwt)\
**Post date:** [March 31, 2017, 3:11pm UTC](https://discuss.elastic.co/t/logstash-json/75314/31 "2017-03-31T15:11:12Z")

</div>

все элементы последней версии. ubuntu 16

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [March 31, 2017, 3:12pm UTC](https://discuss.elastic.co/t/logstash-json/75314/32 "2017-03-31T15:12:29Z")

</div>

logstash v5.3.0? Вы обновили его на этой неделе?

---

<div class="post-metadata">

**Author:** ![cwt](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cwt](https://discuss.elastic.co/u/cwt)\
**Post date:** [March 31, 2017, 3:35pm UTC](https://discuss.elastic.co/t/logstash-json/75314/33 "2017-03-31T15:35:12Z")

</div>

Да, все обновил на этой неделе. Тестировал проблему на последней версии только

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [March 31, 2017, 4:22pm UTC](https://discuss.elastic.co/t/logstash-json/75314/34 "2017-03-31T16:22:20Z")

</div>

А можно тогда полный лог посмотреть, а не только эту строку?

---

<div class="post-metadata">

**Author:** ![cwt](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cwt](https://discuss.elastic.co/u/cwt)\
**Post date:** [March 31, 2017, 4:47pm UTC](https://discuss.elastic.co/t/logstash-json/75314/35 "2017-03-31T16:47:50Z")

</div>

Итак, logstash 1:5.3.0-1  
Конфиг приемника:

> ```
> input {
> udp {
> type => "app_json"
> host => "0.0.0.0"
> port => "2514"
> }
> }
> filter {
> if [type] == "app_json" {
> json {
> source => "message"
> remove_tag => ["_jsonparsefailure"]
> }
> mutate {
> remove_field => ["datetime", "LEVEL_NUM"]
> }
> if [extra][http][POST][access_token] =~ /.+/ {
> mutate {
> add_field => {"access_token" => "%{[extra][http][POST][access_token]}"}
> }
> }
> date {
> match => ["ISODATE", "YYYY-MM-dd'T'HH:mm:ssZ"]
> target => "@timestamp"
> remove_tag => ["_dateparsefailure"]
> }
> }
> }
> output {
> if [type] == "app_json" {
> elasticsearch {
> hosts => ["localhost:9200"]
> sniffing => false
> index => "applications-%{+YYYY.MM.dd}"
> document_type => "%{type}"
> template => "/etc/logstash/templates/applications-template.json"
> template_name => "applications-*"
> template_overwrite => true
> }
> }
> }
> 
> ```

Вот лог с момента старта logstash - [Log](http://paste.org.ru/?h5tqe7)  
Больше ничего, и logstash не работает, но если сделать рестарт то:

> [2017-03-31T19:44:59,621][WARN][logstash.runner] SIGTERM received. Shutting down the agent.  
> [2017-03-31T19:44:59,827][WARN][logstash.agent] stopping pipeline {:id=\>".monitoring-logstash"}  
> [2017-03-31T19:45:01,306][WARN][logstash.agent] stopping pipeline {:id=\>"main"}  
> [2017-03-31T19:45:06,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:45:06,376][ERROR][logstash.shutdownwatcher] The shutdown process appears to be stalled due to busy or blocked plugins. Check the logs for more information.  
> [2017-03-31T19:45:11,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:45:16,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:45:21,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:45:26,381][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:45:31,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:45:36,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:45:41,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:45:46,351][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:45:51,363][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:45:56,339][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:46:01,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:46:06,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:46:11,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:46:16,339][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:46:21,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:46:26,338][WARN][logstash.shutdownwatcher] {"inflight\_count"=\>4, "stalling\_thread\_info"=\>{}}  
> [2017-03-31T19:46:50,509][INFO][logstash.outputs.elasticsearch] Elasticsearch pool URLs updated {:changes=\>{:removed=\>, :added=\>[[http://logstash\_system:xxxxxx@localhost:9200/\_xpack/monitoring/?system\_id=logstash&system\_api\_version=2&interval=1s](http://logstash_system:xxxxxx@localhost:9200/_xpack/monitoring/?system_id=logstash&system_api_version=2&interval=1s)]}}  
> [2017-03-31T19:46:50,515][INFO][logstash.outputs.elasticsearch] Running health check to see if an Elasticsearch connection is working {:healthcheck\_url=\>[http://logstash\_system:xxxxxx@localhost:9200/](http://logstash_system:xxxxxx@localhost:9200/), :path=\>"/"}  
> [2017-03-31T19:46:50,712][WARN][logstash.outputs.elasticsearch] Restored connection to ES instance {:url=\>#\<URI::HTTP:0x649ab33c URL:[http://logstash\_system:xxxxxx@localhost:9200/](http://logstash_system:xxxxxx@localhost:9200/)\>}  
> [2017-03-31T19:46:50,727][INFO][logstash.outputs.elasticsearch] New Elasticsearch output {:class=\>"LogStash::Outputs::Elasticsearch", :hosts=\>[#\<URI::HTTP:0x5c455e13 URL:[http://localhost:9200](http://localhost:9200)\>]}  
> [2017-03-31T19:46:50,729][INFO][logstash.pipeline] Starting pipeline {"id"=\>".monitoring-logstash", "pipeline.workers"=\>1, "pipeline.batch.size"=\>2, "pipeline.batch.delay"=\>5, "pipeline.max\_inflight"=\>2}

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [April 3, 2017, 6:27pm UTC](https://discuss.elastic.co/t/logstash-json/75314/36 "2017-04-03T18:27:00Z")

</div>

Похоже, что когда вы обновили logstash до 5.3.0, y вас осталась старая конфигурация для log4j. В файле `log4j2.properties` должна быть строка

```auto
appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %.10000m%n

```

Вы не могли бы заменить ее на строку из 5.3.0:

```auto
appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %-.10000m%n

```

С вашим конфигурационным файлом ошибка выводиться с последними 10000 символами вместо первых 10000, и поэтому сложно сказать, что у вас там происходит. Самая полезная информация, как правило, в начале сообщения а не в конце.

После этого, воспроизведите ошибку и пришлите, пожалуйста, опять полный лог.

---

<div class="post-metadata">

**Author:** ![cwt](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cwt](https://discuss.elastic.co/u/cwt)\
**Post date:** [April 18, 2017, 4:56am UTC](https://discuss.elastic.co/t/logstash-json/75314/37 "2017-04-18T04:56:58Z")

</div>

прошу прощения, за длительный ответ.  
За это время я перенес инстанс на ubuntu 14.04. Версии ELK последние.  
В конфигурации логов все верно.  
Все равно получаю тоже самое. [Лог](http://paste.org.ru/?931o2b)

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [April 18, 2017, 7:22pm UTC](https://discuss.elastic.co/t/logstash-json/75314/38 "2017-04-18T19:22:26Z")

</div>

Поговорил с разработчиком logstash и по его мнению, если конфигурация лога правильная, то такого лога в принципе получится не может. Может, у вас несколько файлов конфигурации и вы проверили не тот файл, который используется. Вы не могли бы изменить pattern в файле (скажем увеличить его с 10000 до 50000) чтобы посмотреть, а тот ли конфигурационный файл используется.

---

<div class="post-metadata">

**Author:** ![cwt](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cwt](https://discuss.elastic.co/u/cwt)\
**Post date:** [April 19, 2017, 8:52am UTC](https://discuss.elastic.co/t/logstash-json/75314/39 "2017-04-19T08:52:05Z")

</div>

Только один файл.

> ```
> # ls /etc/logstash/
> GeoLite2-City.mmdb conf.d jvm.options log4j2.properties logstash.yml patterns startup.options templates
> 
> ```

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [April 19, 2017, 12:21pm UTC](https://discuss.elastic.co/t/logstash-json/75314/40 "2017-04-19T12:21:35Z")

</div>

Да, он один в этой директории, а вы уверены, что именно он используется и другого такого файла в системе не существует? Вы пробовали его менять?

[Previous page](https://discuss.elastic.co/t/logstash-json/75314.md?page=1)

[Next page](https://discuss.elastic.co/t/logstash-json/75314.md?page=3)
