본문 바로가기

인프라,데이터/Elasticsearch, Logstash, Kibana

Logstash multiple kinesis input

Logstash로 Kinesis Data Streams를 연결하고 나서, 추가적으로 Data Streams 하나를 더 생성해서 연결하려고 하는데 
계속 제대로 연결되지 않았다. 🤔

왜일까... 하고 찾아봤는데,

Logstash Kinesis input plugin (Kinesis Data Streams만 지원한다. Kinesis Firehose Delivery streams는 지원되지 않으니 주의! 대신 Kinesis Firehose Delivery Streams 의 목적지를 S3으로 하면 Logstash S3 input을 사용해서 S3에서 데이터를 받아오고 바로 지울 수 있다.) 은 Dynamodb를 사용하는데, 이 Dynamodb는 기본적으로 'logstash'라는 이름으로 생성되고, 로그스태시 플러그인에서는 이 이름의 테이블을 찾는다.

요렇게 logstash 란 이름으로 테이블이 생긴다.

따라서 2개 이상의 Kinesis Data Streams를 Logstash input으로 받아오려면, 

input {
    kinesis {
        kinesis_stream_name => "kinesis"
        codec => "json"
        region => "ap-northeast-2"
        application_name => "logstash1"
    }
    kinesis {
        kinesis_stream_name => "kinesis-test"
        codec => "json"
        region => "ap-northeast-2"
        application_name => "logstash2"
    }
}

application_name 옵션에 각각 고유한 값을 줘야 한다. (첫 번째 kinesis input의 값은 기재하지 않고 그냥 logstah로 두어도 무방하다. )

이렇게 옵션을 주니 그제야! Logstash에서 데이터를 잘 받아와서 output으로 보내주었다.

뻥 뚫린 데이터와 함께 속이 뻥 뚤리는 이 느낌...