개요

Kinesis Agent를 이용한 Data Streams, Firehose 전송을 테스트 해본 뒤 기록해둔다.

agent 설치방법

github 코드로 직접 아래 스크립트로 설치했다.

sudo ./setup --install

/etc/aws-kinesis/agent.json 설정

aws key는 다른 파일에 기록하기 때문에 굳이 여기 중복으로 적을 필요는 없을듯 하다.

필자는 region정보를 명시하지 않으면 에러가 나서 명시하였다.

kinesisStreamData Streams용도이고 deliveryStreamFirehose 용도이다.

{
  "awsAccessKeyId":"",
  "awsSecretAccessKey":"",
  "cloudwatch.emitMetrics": true,
  "kinesis.endpoint": "https://url",
  "kinesis.region": "ap-northeast-2",
  "firehose.endpoint": "https://url",
  "flows": [
    {
      "filePattern": "/tmp/app.log*",
      "initialPosition": "START_OF_FILE",
      "kinesisStream": "ds",
      "partitionKeyOption": "RANDOM"
    },
    {
      "filePattern": "/tmp/app.log*",
      "initialPosition": "START_OF_FILE",
      "deliveryStream": "s3"
    }

  ]
}

/etc/sysconfig/aws-kinesis-agent 설정

confidential한 정보는 여기 기록해둔다.

# Set AWS credentials for accessing Amazon Kinesis Stream and Amazon Kinesis Firehose
#
# AWS_ACCESS_KEY_ID=
# AWS_SECRET_ACCESS_KEY=
# AWS_DEFAULT_REGION=
#
# AGENT_ARGS=""

구동 스크립트

sudo service aws-kinesis-agent restart

로그 관측

/var/log/aws-kinesis-agent/aws-kinesis-agent.log 로 로그기록이 남는다.

샘플 테스트 스크립트

kinesis data streams 는 아래 스크립트로 테스트가 가능하다.

aws kinesis put-record --stream-name kwangsik-stream --partition-key 123 --data "Abcd1" --cli-binary-format raw-in-base64-out --endpoint-url https://endpoint-url
si=$(aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name kwangsik-stream --endpoint-url https://endpoint-url | jq '.ShardIterator')
echo $si
aws kinesis get-records --shard-iterator $si --endpoint-url https://endpoint-url

kinesis firehose로 바로 쏘는것은 Direct PUT으로 만든 뒤 deliveryStream 설정으로 전송하면 된다.

검증

Data Streams

아래와 같은 로그가 남으면 성공이다.

Agent: Progress: 2 records parsed (7 bytes), and 2 records sent successfully to destinations. Uptime: 90064ms

데이터 전송 후 데이터뷰어로 확인해보면 레코드가 확인 된다.

Firehose

아래와 같은 로그가 남으면 성공이다.

2023-06-08 05:44:06.170+0000  (FileTailer[fh:s3:/tmp/app.log*].MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent.tailing.FileTailer [INFO] FileTailer[fh:s3:/tmp/app.log*]: Tailer Progress: Tailer has parsed 1 records (8 bytes), transformed 0 records, skipped 0 records, and has successfully sent 1 records to destination.

모니터링 화면에서도 레코드 전송 및 s3 적재를 확인 할 수 있다.

S3에도 정상적으로 데이터가 적재된 것을 확인 할 수 있다.