Mam instancję Logstash działającą jako usługa, która odczytuje dane z usługi Redis i wyświetla wyniki w trybie Elasticsearch. Właśnie zauważyłem, że w ciągu ostatnich kilku dni nie było nic nowego w Elasticsearch, ale listy Redis rosły.Agent programu Logstash już się nie indeksuje.
Logstash dziennika została wypełniona 2 błędów powtarzanych przez tysiące wierszach:
:message=>"Got error to send bulk of actions"
:message=>"Failed to flush outgoing items"
Powodem jest:
{"error":"IllegalArgumentException[Malformed action/metadata line [107], expected a simple value for field [_type] but found [START_ARRAY]]","status":500},
Dodatkowo, próbując zatrzymać usługę wielokrotnie nie miałem go zabić . Ponowne uruchomienie opróżniło listę Redis i zaimportowało wszystko do Elasticsearch. Wydaje się działać teraz dobrze.
Ale nie mam pojęcia, jak temu zapobiec. Wymienione pole type
jest ustawione jako ciąg znaków dla każdej dyrektywy wejściowej, więc nie rozumiem, w jaki sposób mogła stać się tablicą.
Czego mi brakuje?
Używam Elasticsearch 1.7.1 i Logstash 1.5.3. Plik logstash.conf
wygląda następująco:
input {
redis {
host => "127.0.0.1"
port => 6381
data_type => "list"
key => "b2c-web"
type => "b2c-web"
codec => "json"
}
redis {
host => "127.0.0.1"
port => 6381
data_type => "list"
key => "b2c-web-staging"
type => "b2c-web-staging"
codec => "json"
}
/* other redis inputs, only key/type variations */
}
filter {
grok {
match => ["msg", "Cache hit %{WORD:query} in %{NUMBER:hit_total:int}ms. Network: %{NUMBER:hit_network:int} ms. Deserialization %{NUMBER:hit_deserial:int}"]
add_tag => ["cache_hit"]
tag_on_failure => []
}
/* other groks, not related to type field */
}
output {
elasticsearch {
host => "[IP]"
port => "9200"
protocol=> "http"
cluster => "logstash-prod-2"
}
}
Mógłbyś podać swój config lub co najmniej fragment gdzie można ustawić pole typu? Wygląda na to, że ma on związek ze zbiorczym interfejsem elasticsearch: https://github.com/elastic/elasticsearch/issues/11458 – hurb
Rzeczywiście problem wygląda podobnie, ale z problemem macierzy zamiast wartości NULL. – Antoine
Czy można wyczyścić plik logstash.log, zaktualizować wtyczkę elasticsearch-logstash i uruchomić ją ponownie. Miałem podobny problem iw moim przypadku moje elastyczne wyszukiwanie zepsuło się najpierw w b/w, a po ponownym uruchomieniu miałem problem z wtyczką i połączeniem. –