2014-09-29 4 views
1

메시지 속성에 계층 적 메시지 데이터가 포함되어있을 때 Logstash가 elasticsearch에 구문 분석 문서를 쓰지 않는 오류가 발생했습니다. 메시지 속성에 계층 적 데이터가 포함되어 있지 않으면 잘 작동합니다.Logstash가 Elasticsearch에 쓰지 않습니다.

다음
{ 
    "Enviroment": "Dev", 
    "Level": "Fatal", 
    "CreatedOn": "2014-09-29 20:46:30.5042", 
    "WindowsIdentity": "XXX\\XXX", 
    "Application": "LoggingTest", 
    "UserAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36", 
    "SessionId": "wrm11rken3lc442humrxyhoe", 
    "URL": "/LoggingTest/jsnlog.logger", 
    "UserAddress": "XXX.XXX.XXX.XXX", 
    "Message": { 
    "stack": "TypeError: undefined is not a function\n at Log (http://XXX/LoggingTest/:58:16)\n at HTMLInputElement.onclick (http://XXX/LoggingTest/:66:141)", 
    "message": "undefined is not a function", 
    "name": "TypeError", 
    "logData": "JS Fatal Exception" 
    }, 
    "@version": "1", 
    "@timestamp": "2014-09-29T20:46:30.331Z", 
    "type": "JS" 
} 

내 logstash의 설정입니다 : 여기

{ 
    "Layer": "Web", 
    "DurationMilliseconds": 65, 
    "CreatedOn": "2014-09-29T20:44:40.5380157Z", 
    "Enviroment": "Dev", 
    "AssemblyName": "LoggingTest", 
    "ClassName": "HomeController", 
    "MethodName": "Index", 
    "WindowsIdentity": "XXX\\YYY", 
    "SessionId": "wrm11rken3lc442humrxyhoe", 
    "Application": "LoggingTest", 
    "Machine": "XXX.XXX.XXX.XXX", 
    "Browser": "Chrome", 
    "@version": "1", 
    "@timestamp": "2014-09-29T20:45:38.432Z", 
    "type": "Perf" 
} 

는 일부 데이터 (가) 작동하지 않을 수 있습니다 : 여기에 작동 일부 데이터는

input { 
    redis { 
     host => "127.0.0.1" 
     type => "JS" 
     data_type => "list" 
     key => "JS" 
    } 
} 

filter 
{ 
    json{ source => "message"} 
} 

output { 
    stdout { codec => rubydebug} 

    elasticsearch { 
     host => localhost 
     index => dev 
    } 
} 

나는 위의 코드를 통해 프로그램을 실행할 때 첫 번째 항목은 내 elasticsearch로 성공적으로 파싱되지만 두 번째 항목은 logstash에 의해 작성된 오류없이 사라집니다.

답변

0

로그가 변경되었습니다. 여기 내 설정,이 설정으로

input { 
    stdin{} 
} 

filter{ 
    json{ source => "message"} 
} 

output { 
    stdout { 
      codec => "rubydebug" 
    } 
    elasticsearch { 
      host => localhost 
      cluster => "BENLIM" 
    } 
} 

내가 logstash 위해 작동하지 않는 로그를 보낼 때, 그것은 구문 분석하고 elasticsearch로 출력 할 수있다. 참고하시기 바랍니다.

+0

메시지가 Redis 대기열에서 검색되고 유효한 JSON으로 구문 분석된다는 사실을 stdout에서 알 수 있습니다. 나는 elasticsearch 출력에 클러스터 이름을 추가하려고 시도했지만 문제가 해결되지 않았습니다. 첫 번째 것은 여전히 ​​탄성 검색에 추가되고 두 ​​번째 것은 추가되지 않습니다. – bechbd

+0

자식 메시지를 중첩되지 않고 별도의 필드로 구문 분석하여이 작업을 수행 할 수있었습니다. – bechbd

관련 문제