개요
Kinesis Agent를 이용한 Data Streams, Firehose 전송을 테스트 해본 뒤 기록해둔다.
agent 설치방법
github 코드로 직접 아래 스크립트로 설치했다.
/etc/aws-kinesis/agent.json 설정
aws key는 다른 파일에 기록하기 때문에 굳이 여기 중복으로 적을 필요는 없을듯 하다.
필자는 region정보를 명시하지 않으면 에러가 나서 명시하였다.
kinesisStream
은 Data Streams
용도이고 deliveryStream
은 Firehose
용도이다.
{
"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=""
구동 스크립트
로그 관측
/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에도 정상적으로 데이터가 적재된 것을 확인 할 수 있다.