[TAROYAKI] Ep17. 사용자 로그 모니터링 (2)

Yihoon·2025년 6월 1일

TAROYAKI

목록 보기
20/20
post-thumbnail

로그 기록을 위한 인프라를 구축했으므로, 이제 해당 기록을 분석하기 위한 아키텍처를 설계한다.

Tableau에서 최종적으로 테이블이 읽히지 않아 최종 대시보드/시트 구성은 중단된 상태이다. 문제가 해결되는 대로 추가할 예정.

IAM

Tableau를 Athena와 연결하기 위해서는 IAM 사용자를 생성해야 한다. 새 사용자를 만들고 거기다 AmazonAthenaFullAccess, AmazonS3ReadOnlyAccess 정책을 부여한다.

해당 사용자의 액세스 키를 생성하고 액세스 키와 Secret을 복사해 둔다.

S3

쿼리가 저장될 query-results 폴더를 생성한다.

Athena

쿼리 실행 전 쿼리 결과가 저장될 경로를 지정하자. 앞에서 만든 폴더를 지정하면 된다.

쿼리 실행 전, 오래된 쿼리 결과를 지우기 위해 lifecycle rules를 만드는 게 바람직한 방향이긴 하나 서비스 운영 중단으로 로그가 더 쌓일 일이 없기 때문에 해당 과정은 생략한다.

우선 데이터베이스를 생성하였다. 이 작업을 수행하고 나면 새 데이터베이스가 생성된 것을 볼 수 있다.
CREATE DATABASE IF NOT EXISTS taroyaki_analytics;

이어서 로그 전체를 테이블로 변환해야한다.
이때 Athena는 HIVE를 기반으로 하는 테이블 구조 엔진인데 반해 S3에 저장된 데이터는 Json 포맷이기 때문에, Serde 라이브러리를 통해 컬럼형으로 변환이 필요하다.

CREATE EXTERNAL TABLE taroyaki_analytics.taroyaki_logs (
  eventType string,
  userId string,
  timestamp string,
  data struct<sessionCount:int>,
  clientTimestamp string,
  server_processed_at string,
  aws_request_id string
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = '1'
)
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://yihoon-tarotchat-bucket/logs/'
TBLPROPERTIES (
  'has_encrypted_data' = 'false'
);

간단한 SELECT문으로 정상적으로 테이블로 변환되었는지 확인해 보자.
SELECT * FROM taroyaki_analytics.taroyaki_logs LIMIT 10;

Tableau

silicon mac을 기준으로 설명한다.

일단 java를 통해 데이터베이스에 접근할 수 있도록 jdbc 드라이버를 다운로드한다. 여기에서 받을 수 있다.
/library/Tableau/Library 디렉토리를 생성하고 해당 jar 파일을 붙여넣는다.


Tableau에서 Connect --> Athena 선택


이렇게 연결하면 만들어 둔 데이터베이스가 보여야 함 but 안 보임
TBD

profile
딴짓 좋아하는 데이터쟁이

0개의 댓글