2017-01-24 1 views
-1

일반 텍스트와 xml 태그가있는 사용자 정의 로그 파일이 있습니다. 별도의 필드에서 어떻게 캡처합니까? 2017년 1월 10일 4시 16분 35초은 AM : 던져 오류가 있습니다 : 여기처럼 보이는 방법입니다 전송내부에 xml 태그가있는 logstash 사용자 정의 로그


요청이 없음 오류 : SCEO415154712


응답받은 입니다 : SCEO4151547trueTBAfalse7169-1TBAfalse2389-1

1/10/2017 4:16:35 AM : 
 
Error thrown is: 
 
No Error 
 
************************************************************************* 
 
Request sent is: 
 
<InventoryMgmtRequest xmlns="http://www.af.com/Ecommerce/Worldwide/AvailabilityService/Schemas/InventoryMgmtRequest"><ns0:MsgHeader MessageType="FIXORD" MsgDate="10.01.2017 04:16:32" SystemOfOrigin="ISCS_DE" CommunityID="SG888" xmlns:ns0="http://www.av.com/Ecommerce/Worldwide/AvailabilityService/Schemas/InventoryMgmtRequest"><ns0:OrderID>SCEO4151547</ns0:OrderID><ns0:ReservationID></ns0:ReservationID><ns0:CRD></ns0:CRD></ns0:MsgHeader><ns0:MsgBody xmlns:ns0="http://www.ab.com/Ecommerce/Worldwide/AvailabilityService/Schemas/InventoryMgmtRequest"><ns0:Product Sku="CH562EE" Qty="1" IsExpress="false" IsTangible="true" Region="EMEA" Country="DE"><ns0:ProdType></ns0:ProdType><ns0:LineItemNum>1</ns0:LineItemNum><ns0:JCID></ns0:JCID></ns0:Product><ns0:Product Sku="CH563EE" Qty="1" IsExpress="false" IsTangible="true" Region="EMEA" Country="DE"><ns0:ProdType></ns0:ProdType><ns0:LineItemNum>2</ns0:LineItemNum><ns0:JCID></ns0:JCID></ns0:Product></ns0:MsgBody></InventoryMgmtRequest> 
 
************************************************************************* 
 
Response received is: 
 
<ns0:InventoryMgmtResponse xmlns:ns0="http://www.ad.com/Ecommerce/Worldwide/AvailabilityService/Schemas/InventoryMgmtResponse"><ns0:MsgHeader MsgDate="10.01.2017 04:16:32" MessageType="FIXORD"><ns0:OrderID>SCEO4151547</ns0:OrderID><ns0:ReservationID /><ns0:ReadyToRelease>true</ns0:ReadyToRelease></ns0:MsgHeader><ns0:MsgBody><ns0:Product SKU="CH562EE" LSPSKU="9432GFT" OutOfStock="false" FulfillmentSite="00ZF" SKUExist="true" Region="EMEA" Country="DE" IsTangible="true"><ns0:EDD>TBA</ns0:EDD><ns0:FutureUsed>false</ns0:FutureUsed><ns0:CurrentQty>7169</ns0:CurrentQty><ns0:FutureQty>-1</ns0:FutureQty></ns0:Product><ns0:Product SKU="CH563EE" LSPSKU="9432GFU" OutOfStock="false" FulfillmentSite="00ZF" SKUExist="true" Region="EMEA" Country="DE" IsTangible="true"><ns0:EDD>TBA</ns0:EDD><ns0:FutureUsed>false</ns0:FutureUsed><ns0:CurrentQty>2389</ns0:CurrentQty><ns0:FutureQty>-1</ns0:FutureQty></ns0:Product></ns0:MsgBody></ns0:InventoryMgmtResponse> 
 
*************************************************************************

또한 내 grok 필드에서 줄 구분 기호 (끝에 ****로 가득 찬 줄)를 캡처하고 싶지 않습니다.

+0

@Rumbles 친절하게도이 문제를 살펴볼 수 있습니까? TIA – prosenjit

답변

0

여기 간단한 대답이 없습니다. 두렵습니다. Logstash 및 기타 로그 처리 도구는 줄 단위로 작동하며 각 줄은 이벤트입니다. 이벤트가 한 줄 이상에 걸쳐있는 경우에는 매우 강력한 코덱 인 multiline을 사용할 수 있지만 경험상 원본에서 한 줄로 로그를 가져 오는 것이 좋습니다. 이렇게하면 패턴을 훨씬 더 쉽게 작성할 수 있습니다 프로세스가 안정적으로 작동하도록하십시오.

여기에있는 문제는 많지만, 예를 들어 TCP를 통해 전송 된 메시지 중 하나가 어떤 이유로 재전송되거나 간단히 (UDP를 통해 전송 된) 손실되면 패턴이 메시지의 일부로 손상됩니다 그 logstash는 거기 있지 않을 것으로 기대하고 있습니다.

제 생각에는 할 수있는 일은 이벤트 당 한 줄로 파일에 저장하는 로깅 프로세스를 변경하는 것입니다. 대부분의 로깅 도구는 올바른 구성 옵션으로이를 허용해야합니다. 이상적으로, 응용 프로그램이 json 형식으로 로그인하도록하십시오. (elasticsearch에서 로그를 저장하기 위해 로그를 처리한다고 가정 할 때) 이러한 로그를 처리하는 logstash 서버에서 가장 낮은 오버 헤드가 필요합니다 (elasticsearch가 json 형식으로 저장하므로). 그런 다음 각 이벤트/로그 라인을 json 필터로 전달하면 필드가 응용 프로그램에서 지정한 이름으로 생성됩니다.

관련 문제