# Logstash не отправляет логи в эластик

**URL:** <https://discuss.elastic.co/t/logstash/212490>\
**Category:** Вопросы на русском языке\
**Created:** [December 19, 2019, 1:00pm UTC](https://discuss.elastic.co/t/logstash/212490 "2019-12-19T13:00:51Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![alex.tregub](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/alex.tregub/32/45644_2.png) [@alex.tregub](https://discuss.elastic.co/u/alex.tregub)\
**Post date:** [December 19, 2019, 1:00pm UTC](https://discuss.elastic.co/t/logstash/212490/1 "2019-12-19T13:00:52Z")

</div>

Здравствуйте!

Уже писал вот сюда [Использование файлов из output path, для восстановления удаленного индекса](https://discuss.elastic.co/t/output-path/210727/8), но там сумбур какой-то получился, поэтому решил создать отдельный топик по этому вопросу.  
Итак, у меня есть пример лога:

2019-06-10T20:32:08.505Z {name=srv-1} {"tags":["event","quick-login","success"],"userId":"100000000","organizationId":"000000000003"}  
2019-06-10T20:32:08.505Z {name=srv-1} 20:32:08.505 [elastic-993] INFO LogMessage - {"tags":["event","quick-login","success"],"userId":"100000000","organizationId":"000000000003"}

По сути это один и тот же лог, но второй более детален, и нужно распарсить и положить в эластик именно его. Для этого я сделал грок фильтр:

```
input {
  file {
    path => "/path/to/log-file"
    tags => ["recovery"]
    start_position => "beginning"
    sincedb_path => "/path/to/sincedb_access"
  }
}

filter {
  if "recovery" in [tags] {
    grok {
         match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \{name=(%{DATA:beat.name})\} %{TIME:time} \[%{DATA:thread}\] %{DATA:level} %{DATA:logger} - %{GREEDYDATA:msg}" }
    }

    date {
        match => ["timestamp", "ISO8601", "YYYY-MM-dd HH:mm:ss,SSS"]
        target => "@timestamp"
    }

    mutate { remove_field => ["time"] }

    json {
        source => "msg"
        target => "message"
    }

    mutate { remove_field => ["msg"] }

  }
}

output {
    if "recovery" in [tags] {
      elasticsearch {
        hosts => "127.0.0.1:9200"
        index => "index.log"
    }
    file {
        path => "/path/to/test-output"
        codec => rubydebug
    }
  }
}

```

Я сделал вывод в файл, помимо вывода в индекс, чтобы можно было понимать, что происходит с логами после грок фильтра. Возможно это не оптимальный вариант, но другого не придумал.  
По итогу работы в файл попадает следующее:

```
{
          "host" => "srv-1",
          "tags" => [
        [0] "recovery",
        [1] "_grokparsefailure"
    ],
      "@version" => "1",
       "message" => "2019-06-10T20:32:08.505Z {name=srv-1} {\"tags\":[\"event\",\"quick-login\",\"success\"],\"userId\":\"100000000\",\"organizationId\":\"000000000003\"}",
    "@timestamp" => 2019-12-19T12:28:31.779Z,
          "path" => "/path/to/log-file"
}
{
          "host" => "srv-1",
          "tags" => [
        [0] "recovery"
    ],
      "@version" => "1",
        "logger" => "LogMessage",
     "beat.name" => "srv-1",
       "message" => {
                  "tags" => [
            [0] "event",
            [1] "quick-login",
            [2] "success"
        ],
                "userId" => "100000000",
        "organizationId" => "000000000003"
    },
    "@timestamp" => 2019-06-10T20:32:08.505Z,
     "timestamp" => "2019-06-10T20:32:08.505Z",
        "thread" => "elastic-993",
          "path" => "/path/to/log-file",
         "level" => "INFO"
}

```

Первый лог не был обработан гроком, и это правильно, второй был. Но в эластик отправляется только первый лог. ЧЯДНТ?

---

<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:** [December 23, 2019, 3:27pm UTC](https://discuss.elastic.co/t/logstash/212490/2 "2019-12-23T15:27:29Z")

</div>

Скорее всего, у вас поле `message` в схеме появляется как текстовое, а вы тут пытаетесь его как объект добавить.

---

<div class="post-metadata">

**Author:** ![alex.tregub](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/alex.tregub/32/45644_2.png) [@alex.tregub](https://discuss.elastic.co/u/alex.tregub)\
**Post date:** [December 24, 2019, 8:09am UTC](https://discuss.elastic.co/t/logstash/212490/3 "2019-12-24T08:09:51Z")

</div>

Да, все так. Я видел такую конструкции в некоторых примерах, но не понимал как это устроено. Благодарю за ответ, получилось восстановить все что хотел.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [January 21, 2020, 8:09am UTC](https://discuss.elastic.co/t/logstash/212490/4 "2020-01-21T08:09:59Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
