Tutaj wychodzę z głowy. Mam aplikację, która zapisuje logi do pliku. Każda pozycja dziennika jest obiektem JSON. Przykładem moim pliku .json wygląda następująco:Używanie JSON-a z LogStash
{"Property 1":"value A","Property 2":"value B"}
{"Property 1":"value x","Property 2":"value y"}
Próbuję rozpaczliwie dostać wpisy dziennika w LogStash. Próbując to zrobić, mam następujący LogStash stworzony plik konfiguracyjny:
input {
file {
type => "json"
path => "/logs/mylogs.log"
codec => "json"
}
}
output {
file {
path => "/logs/out.log"
}
}
Teraz mam ręczne dodawanie rekordów do mylogs.log aby spróbować i dostać pracę. Jednak pojawiają się one dziwnie na wyjściu standardowym. Kiedy patrzę otwarty out.log, widzę coś jak następuje:
{"message":"\"Property 1\":\"value A\", \"Property 2\":\"value B\"}","@version":"1","@timestamp":"2014-04-08T15:33:07.519Z","type":"json","host":"ip-[myAddress]","path":"/logs/mylogs.log"}
z tego powodu, jeśli mogę wysłać wiadomość do ElasticSearch, nie dostać pola. Zamiast tego mam pomieszany bałagan. Potrzebuję moich właściwości, aby nadal były własnością. Nie chcę, żeby były wciśnięte w część wiadomości lub wyjście. Mam przeczucie, że ma to coś wspólnego z kodekami. Jednak nie jestem pewien. Nie jestem pewien, czy powinienem zmienić kodek w konfiguracji wejścia logstash. Lub, jeśli powinienem zmienić wejście w konfiguracji wyjściowej. Będę szczerze wdzięczny za każdą pomoc, ponieważ jestem zdesperowany w tym momencie.
Dzięki.
słodkie! To się udało. Z wyjątkiem tego, że nie pomogło mi przejść przez mój prawdziwy JSON :(Dam ci zasługę za odpowiedź. Otworzyłem drugie pytanie na http://stackoverflow.com/questions/22944168/json-variants-log4j- z-logstash – user70192
Wspaniale! Pójdę popatrzeć później Witam – vzamanillo
Witam! Użyłem tego pliku konfiguracyjnego logstash 'input {tcp {port => '9563'}} filter {json {source =>" message "}} output {elasticsearch {hosts => ["localhost: 9200"]}} 'ale wciąż w elastycznym wyszukiwaniu mój json jest umieszczany jako ciąg w polu wiadomości jako _'message:" {\ "container \": \ "DOCKER \", \ "msg \": \ "From python 26 oct \"} "' _. Nie mogę pobrać _container'_ i _msg'_ jako innego pola w kibanie. Mam to dodatkowe pole w kibana mówiąc: _tagi: _jsonparsefailure_. Mój json to _ {"container": "DOCKER", "msg": "From python 26 oct"} _ –