전체 글 87

로그 모니터링 개발 기록 01. 검색엔진의 저장 구조 이해하기

2021년 11월부터 현재(24년 1월)까지 약 2년동안 와탭 로그 모니터링을 개발하면서 배우고 느꼈던 것들을 정리하려고 합니다. 전체적인 흐름을 어떻게 구조를 잡을까 고민해보다가 Lucene In Action에서 Lucene에 대해서 설명하고 있는 구조를 그대로 차용하겠습니다. 와탭 로그 모니터링 훑어보기 먼저 와탭 로그 모니터링의 화면을 가볍게 훑어보면서 어떤 종류의 서비스인지 느낌을 알아보겠습니다. 아래의 사진은 ‘로그 트렌드’ 라는 페이지입니다. 왼쪽 사이드바에서 Key-Value 쌍을 선택하면 지정된 시간 범위에서 ‘1분당 수집된 로그 수’를 알 수 있고, 해당 1분 구간에 수집된 로그를 확인할 수 있습니다. 아래의 예시는 문제가 발생한 13:00 ~ 13:10 시간에 문제가 된 서버 이름(on..

Java OutOfMemory 분석 방법 (heapdump, HeapAnalyzer)

분석 방법 IBM HeapAnalyzer 다운로드 https://www.ibm.com/support/pages/ibm-heapanalyzer IBM HeapAnalyzer www.ibm.com heapDump 옵션 추가 heapDump를 생성하고 싶은 jar에 아래 옵션 추가해서 서비스 재시작 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/{YOUR_DIRECTORY}/heapdump.hprof -XX:+CrashOnOutOfMemoryError HeapAnalyzer 실행 HeapAnalyzer 실행 및 생성된 heapdump 로딩 (heapdump 사이즈가 클 수록 로딩 시간 오래 걸림) java -Xmx2g -jar {HeapAnalyzer}.jar 분석 ..

PessimisticLockException 원인 파악하고 해결하기

현상 점심을 먹고 가볍게 산책을 하고 있는데.. RDB와 연결된 서버에서 헤비 트래잭션이 발생했다. */userBehavior API는 사용자 행위를 추적하는 기능으로 "어떤 사용자가 어떤 행위를 했다"의 정보를 저장하는 단순한 기능이다. 그런데 이렇게 간단한 기능이 50초 이상 여러 번 수행된 흔적이 보였다. 게다가 Select도 아닌 insert query에서 발생했다. 원인 원인 분석 우선 트랜잭션 히트맵을 확인했다. 문제가 발생한 13:00 ~ 13:10 구간으로 조회했더니 헤비 트랜잭션이 조회되긴하지만 별다른 근거를 찾지 못했다. 다음으로 로그를 확인했다. 로그 트렌드 페이지는 선택한 Key-Value 쌍으로 로그를 검색해서 "분 당 로그 수"의 추이를 확인하고 원본 로그까지 확인할 수 있는 페..

AWS Marketplace 연동 가이드 | 04. BatchMeterUsage

AWS Marketplace 연동 가이드 | 01. AWS Marketplace Seller 계정 생성부터 x-amzn-marketplace-token 토큰 수신까지 AWS Marketplace 연동 가이드 | 02. AWS Marketplace Client 생성하기 AWS Marketplace 연동 가이드 | 03. ResolveCustomer AWS Marketplace 연동 가이드 | 04. BatchMeterUsage BatchMeterUsage BatchMeterUsage는 AWS로 미터링 정보를 1시간마다 1번씩 전송해야합니다. AWS MP로 미터링 정보를 전송하기 위해서는 아래의 과정이 필요합니다 미터링 정보 조회 MeteringRawData AWS 미터링 단위로 변환하기 : MetringR..

AWS/AWS Marketplace 2024.01.17

AWS Marketplace 연동 가이드 | 03. ResolveCustomer

AWS Marketplace 연동 가이드 | 01. AWS Marketplace Seller 계정 생성부터 x-amzn-marketplace-token 토큰 수신까지 AWS Marketplace 연동 가이드 | 02. AWS Marketplace Client 생성하기 AWS Marketplace 연동 가이드 | 03. ResolveCustomer AWS Marketplace 연동 가이드 | 04. BatchMeterUsage ResolveCustomer 호출하기 ResolveCustomer는 token을 사용해서 CustomerIdentifier, CustomerAWSAccountId, ProductCode 3가지 필드를 조회합니다. 이 3가지 필드들은 모두 영구적으로 저장되어야합니다. resolveCu..

AWS/AWS Marketplace 2024.01.17

AWS Marketplace 연동 가이드 | 02. AWS Marketplace Client 생성하기

AWS Marketplace 연동 가이드 | 01. AWS Marketplace Seller 계정 생성부터 x-amzn-marketplace-token 토큰 수신까지 AWS Marketplace 연동 가이드 | 02. AWS Marketplace Client 생성하기 AWS Marketplace 연동 가이드 | 03. ResolveCustomer AWS Marketplace 연동 가이드 | 04. BatchMeterUsage AWS Marketplace Client 생성하기 AWS Marketplace Client를 생성하는 방법은 아래와 같습니다. public AWSMarketplaceMetering createAWSMarketplaceClient(){ AWSMarketplaceMeteringClien..

AWS/AWS Marketplace 2024.01.17

AWS Marketplace 연동 가이드 | 01. AWS Marketplace Seller 계정 생성부터 x-amzn-marketplace-token 토큰 수신까지

AWS Marketplace 연동 가이드 | 01. AWS Marketplace Seller 계정 생성부터 x-amzn-marketplace-token 토큰 수신까지 AWS Marketplace 연동 가이드 | 02. AWS Marketplace Client 생성하기 AWS Marketplace 연동 가이드 | 03. ResolveCustomer AWS Marketplace 연동 가이드 | 04. BatchMeterUsage AWS Marketplace란 구글이나 애플의 앱 스토어에 앱을 등록하는 것처럼, AWS Marketplace에 서비스를 등록할 수 있습니다. 사용자 입장에서는 신용카드 등록, 청구서 발송 대신에 새로운 타입의 결제수단으로써 AWS Maketplace라는 선택지가 생기게 됩니다. A..

AWS/AWS Marketplace 2024.01.17

AWS Marketplace AssumeRole 적용하기

AssumeRole을 적용해야하는지 판단하기 AssumeRole API를 적용할 필요성이 있는지 먼저 확인해봐야합니다. AssumeRole이 필요한 상황 아래의 2가지 에러가 발생한 경우에는 AssumeRole이 대안이 될 수 있습니다. API를 호출할 권한이 없는 경우 is not authorized to perform: aws-marketplace:ResolveCustomer because no identity-based policy allows the aws-marketplace:ResolveCustomer action AWS Marketplace Seller Account가 아닌 경우 User is not authorized to call ResolveCustomer for this product..

AWS/AWS Marketplace 2024.01.17

AWS API에서 AccessKey, SecretAccessKey 대신 Role ARN 사용하기

AWS 에서는 API Key보다 Role ARN을 통해서 권한 관리하는 것을 권장하고 있습니다. 먼저 AWS API AccessKey, AccessSecretKey를 발급받는 방법은 아래의 포스팅에 있습니다. 2024.01.16 - [개발/AWS Marketplace] - AWS API에 사용할 Access Key, Access Secret Key 발급하는 방법 AWS API에 사용할 Access Key, Access Secret Key 발급하는 방법 AWS API를 사용할 계정을 생성해야합니다. 그리고 그 계정에 API를 사용할 적절한 권한을 부여해야 합니다. 어떤 권한이 필요한지는 사용할 API에 따라서 관련 문서에 적혀있을겁니다. 권한을 부여 lucky-developer.tistory.com 위의 ..

AWS/AWS Marketplace 2024.01.16

AWS API에 사용할 Access Key, Access Secret Key 발급하는 방법

AWS API를 사용할 계정을 생성해야합니다. 그리고 그 계정에 API를 사용할 적절한 권한을 부여해야 합니다. 어떤 권한이 필요한지는 사용할 API에 따라서 관련 문서에 적혀있을겁니다. 권한을 부여했으면 AccessKey, Secret AccessKey를 발급할 수 있습니다. 이렇게 찾은 API 키들은 가장 간단하게는 system property를 사용해서 지정할 수 있습니다. private void setAwsRegionProps() { System.setProperty("aws.region", conf.aws_marketplace_region); } private void setAwsMarketplaceClientProps() { // @See com.amazonaws.services.marketp..

AWS/AWS Marketplace 2024.01.16