본문 바로가기

Data Engineering24

OpenSearch Index Mapping 설정 및 변경 아래의 Workshop을 학습과정에서 Mapping을 변경을 수행하고 이를 정리한 것으로, 해당 Workshop와 동일한 데이터를 이용했다. Workshop Studio catalog.us-east-1.prod.workshops.aws Opensearch는 따로 매핑을 정의해 놓지 않으면 데이터가 입력되면서 자동으로 매핑이 생성된다. (사실, 위의 워크샵을 그대로 잘 따라가면 데이터 저장 전데매핑을 먼저 생성하는데.. 유튜브를 같이 보면서 따라하다가 놓쳐버렸다;;) 아래는 데이터를 저장하니 자동으로 생성된 매핑이다. GET /aws-blog/_mapping { "aws-blog": { "mappings": { "properties": { "author": { "type": "text", "fields":.. 2023. 4. 2.
Kinesis Firehose Dynamic partitioning 설정 Kinesis Data Streams를 이용하면서, 다른 AWS 서비스에 DataStreams에 write된 데이터를 전달하는 경우에 Kinesis Firehose (Delivery Stream)을 사용한다. 내 경우에는 AWS S3로 데이터를 전달하는 용도로 사용하는데, Firehose는 UTC의 타임존을 기준으로 S3 경로를 설정하기 때문에 실제 데이터에 기록되는 KST기준의 시간과 디렉토리의 경로 명이 맞지 않는 문제가 발생했다. 그래서 방법을 찾아본 결과, Firehose의 타임존을 설정으로 변경할 수는 없다. 하지만, Dynamic partitioning을 사용해서 S3 Prefix를 커스터마이징 할 수 있다. 타임존을 변경하는것 외에도 시간이 아닌 다른 key를 설정 할 수도 있고, 데이터를 .. 2022. 12. 4.
Fluent Bit으로 쿠버네티스 컨테이너의 로그파일에서 로그 수집 Why Fluent Bit? Fluent bit은 로그 수집기인 Fluentd의 경량화된 버전이다. 각 컨테이너의 로그를 수집하여 전달하는 Forwarder의 역할만 수행할 것이고, 사이드카 컨테이너로 구성 예정이므로 메인컨테이너의 성능에 영향을 적게 하기 위해 Fluentd 보다 리소스를 작게 필요로 하는 Fluent Bit을 사용하려고 한다. (Fluent bit&Fluent Bit: https://docs.fluentbit.io/manual/about/fluentd-and-fluent-bit) EKS에서 구동중인 각 Deployment에는 N개의 파드가 작업을 분산하여 실행한다. 각각의 파드에서 발생하는 로그를 모으기 위해서, 각 파드의 사이드카 컨테이너로써 Fluent Bit을 배치하여, 메인 컨.. 2022. 11. 27.
Fluent-bit에서 multiline parser 사용 현재는 log파일을 input으로 하여 로그 데이터를 수집한다. 이때, input을 tail로 하고 파일에서 로그를 읽어오다 보니, 하나의 로그가 여러줄로 이루어져 있는경우에 각 줄이 다른 로그로 인식되어 전달 된다. 그래서 아래와 같은 예시처럼 가독성이 매우 떨어지는 문제가 발생했다. #로그파일 [INFO ] 2022-10-25 14:33:10.127 [main] sqltiming - UPDATE t_request SET confirm_yn = 'Y', response_code = '1200', response_message = 'Success' WHERE request_id = 'abcde' {executed in 3 msec} #cloudwatch log { "log": "[INFO ] 2022-1.. 2022. 10. 30.