2016-08-23 3 views
0

ntopng은 elasticsearch에 직접 연결할 수 있지만 내 상사는 logtash를 레이어로 사용하여 elasticsearch에 로그를 전송하려고합니다.ntopng 로그를 logstash로 내보내기

나는 여러 번 시도했지만 실패했습니다.

는 로그인 ntopng 같은 :

{"index": {"_type": "ntopng", "_index": "ntopng-2016.08.23"}} 
{ "@timestamp": "2016-08-23T01:49:41.0Z", "type": "ntopng", "IN_SRC_MAC": "04:2A:E2:0D:62:FB", "OUT_DST_MAC": "00:16:3E:8D:B7:E4", "IPV4_SRC_ADDR": "14.152.84.14", "IPV4_DST_ADDR": "xxx.xxx.xxx", "L4_SRC_PORT": 34599, "L4_DST_PORT": 53, "PROTOCOL": 17, "L7_PROTO": 5, "L7_PROTO_NAME": "DNS", "IN_PKTS": 15, "IN_BYTES": 1185, "OUT_PKTS": 15, "OUT_BYTES": 22710, "FIRST_SWITCHED": 1471916981, "LAST_SWITCHED": 1471916981, "SRC_IP_COUNTRY": "CN", "SRC_IP_LOCATION": [ 113.250000, 23.116699 ], "DST_IP_COUNTRY": "VN", "DST_IP_LOCATION": [ 105.849998, 21.033300 ], "NTOPNG_INSTANCE_NAME": "ubuntu", "INTERFACE": "ens192", "DNS_QUERY": "cpsc.gov", "PASS_VERDICT": true } 

Logstash의 설정 :

input { 
    tcp { 
    port => 5000 
    codec => json 
    } 
} 
filter{ 
    json{ 
     source => "message" 
    } 
} 
output { 
    elasticsearch { 
    hosts => ["localhost:9200"] 
} 
stdout{ codec => rubydebug } 
} 

감사

답변

0

ntopng 로그 Elasticsearch 예상 벌크 형식으로 이미 있기 때문에 당신이 사용할 필요가 없습니다 elasticsearch 출력이지만 http 출력을 이와 같이 직접 사용할 수 있습니다. Logstash에서 JSON을 구문 분석 할 필요가 없으며 단순히 대량 대량 명령을 ES로 전달합니다.

두 번째 줄 다음에 줄 바꿈 문자를 추가해야합니다. 그렇지 않으면 ES가 대량 호출을 거부합니다. message 다음에 축약 된 개행 문자를 추가하는 mutate/update 필터를 사용하면이 작업을 수행 할 수 있습니다. 그것을 밖으로 시도하십시오,이 작동합니다.

input { 
    tcp { 
    port => 5000 
    codec => multiline { 
     pattern => "_index" 
     what => "next" 
    } 
    } 
} 
filter{ 
    mutate { 
    update => {"message" => "%{message} 
"} 
    } 
} 
output { 
    http { 
     http_method => "post" 
     url => "http://localhost:9200/_bulk" 
     format => "message" 
     message => "%{message}" 
    } 
} 
+0

새로운 수정 사항이 작동하지 않아 귀하의 도움에 감사합니다. – anhnv

+0

답변을 업데이트했습니다. – Val

+0

감사합니다. 효과가 있습니다! – anhnv

관련 문제