제니퍼 성능 데이터 RDB에 적재해서 활용하기
제니퍼 성능 데이터를 SQL를 활용해서 사용하고 싶다는 고객 요구사항을 위해, 제니퍼 R&D팀에서 연구 개발 통해 2가지 방법으로 제니퍼 데이터를 SQL로 사용할 수 있는 기능을 제공한다고 이전 기술 블로그 “제니퍼 API서버 활용하기”에서 소개해 드렸었습니다.
이번 글은 제니퍼 데이터 SQL로 활용하기 2번째 방법을 소개합니다.
제니퍼 뷰 서버가 제니퍼 성능데이터를 읽어서 직접 관계형 데이터베이스에 제니퍼 데이터를 각 성능별 테이블에 적재하고 이를 사용자가 데이터베이스 접속해서 자유롭게 제니퍼 데이터를 활용하는 방식입니다.
아래의 그림에서 보시는 것과 같이 제니퍼 뷰 서버가 제니퍼 성능데이터를 데이터베이스 (오라클, mysql, postgres)에 주기적으로 적재해 주게 됩니다.
현재 제니퍼 뷰 서버에서 성능데이터 적재를 위해 지원하는 데이터베이스는 오라클 12, Mysql 5.7, Postgres 9.x입니다. 그리고 데이터 종류는 다음과 같습니다.
- 도메인 메트릭스 (5분/1시간/하루)
- 인스턴스 매트릭스 (5분/1시간/하루)
- 애플리케이션 데이터 (하루)
- X-View 데이터(1분)
어떤 종류의 데이터가 어떤 테이블에 저장되는지는 아래의 테이블을 참고해 주세요.
DOMAIN_INFO | 도메인 정보 저장 |
DOMAIN_METRIC_1DAY | 하루치 도메인 메트릭 저장(summary 계열만 저장) |
DOMAIN_METRIC_1HOUR | 한시간 평균 도메인 매트릭 저장 |
DOMAIN_METRIC_5MIN | 5분평균 도메인 매트릭 저장 |
INSTANCE_INFO | 인스턴스 정보 저장 |
INSTANCE_METRIC_1DAY | 하루치 인스턴스 매트릭 저장(summary 계열만 저장) |
INSTANCE_METRIC_1HOUR | 한시간평균 인스턴스 매트릭 저장 |
INSTANCE_METRIC_5MIN | 5분평균 인스턴스 매트릭 저장 |
APPLICATION_METRIC_1DAY | 하루치 애플리케이션 통계 저장 (시간단위는 지원 안함) |
TRANSACTION_{domain_id}_YYYYMMDD | X-View 트랜잭션 데이터 저장 |
실제 구성하고 사용하는 방법을 살펴볼까요?
일단 server.vier/lib디렉토리에 제니퍼 성능 데이터를 적재할 데이터베이스jdbc 드라이버를 복사해서 넣어 줍니다.
그리고 server.view/conf/server_view.conf에 아래의 옵션만 추가해 주시면 간단하게 제니퍼 성능 데이터를 데이터베이스로 적재할 수 있습니다.
rdb_export_jdbc_driver_class_name=oracle.jdbc.OracleDriver rdb_export_jdbc_url=jdbc:oracle:thin:@192.168.9.210:1521/JENNIFER # RDB 사용자 및 암호 rdb_export_jdbc_user=jennifer rdb_export_jdbc_password=jennifer # RDB로 저장할 종류의 도메인id를 콤마로 넣는다 rdb_export_instance_metric_domain=1004,7002,7908 rdb_export_domain_metric_domain=1004,7002,7908 rdb_export_application_metric_domain=1004,7002,7908 rdb_export_transaction_domain=1004,7002,7908
설정 후 제니퍼 뷰 서버를 재기동하시면 그걸로 모든 설정은 마치게 됩니다.
정상적으로 데이터 적재가 이루어 지고 있다면 제니퍼 뷰 서버 로그파일에서 아래와 같은 로그 메세지를 볼 수 있을 것입니다.
2020-07-24 17:19:10.678 [main] INFO com.aries.view.export.RDBExportLog - RDB Export: Enabled. config=RDBExportConfig(connection=Connection(driverClassName=oracle.jdbc.OracleDriver, url=jdbc:oracle:thin:@192.168.9.230:1521/JENNIFER, user=jennifer, password=████), instanceMetric=Category(domainIds=[1004, 7002, 7908], batch=false), domainMetric=Category(domainIds=[1004, 7002, 7908], batch=false), applicationMetric=Category(domainIds=[1004, 7002, 7908], batch=true), transaction=Category(domainIds=[1004, 7002, 7908], batch=false), batchMinuteOffsetInDay=925) 2020-07-24 17:19:11.735 [:ME:RDBExportBatch:Running:com.aries.view.export.RDBExporter$start$1] INFO com.aries.view.export.RDBExportLog - RDB Export: Test connection succeeded. url=jdbc:oracle:thin:@192.168.9.230:1521/JENNIFER
여기서 로그 메시지 읽는 법 몇 가지를 예시를 통해 설명해 드리겠습니다.
예제 1)
RDB Export: Exported. table=instance_metric_5min, domain=7002, range=2020-07-26T13:55~PT5M, records=3, elapsed=0s
이 메시지는 도메인 7002의 인스턴스 매트릭스 중 13:55-14:00까지의 3개 메트릭을 저장하는데 소요되는 시간은 0초라는 의미입니다.
예제 2)
RDB Export: Exported. table=domain_metric_1hour, domain=1004, range=2020-07-26T13:00~PT1H, records=1, elapsed=0s
이 메시지는 도메인 1004의 도메인 매트릭 중 13:00 – 14:00까지의 1개 매트릭을 저장하는데 소요되는 시간은 0초라는 의미입니다.
예제 3)
RDB Export: Exported. table=application_metric_1day, domain=1004, range=2020-07-25T00:00~PT24H, records=1380, elapsed=0s
도메인 1004의 7월 25일 전체 애플리케이션 통계 1380건을 저장하는데 걸린 시간은 0초라는 의미입니다.
예제 4)
RDB Export: Exported. table=transaction_7908_20200726, domain=7908, range=2020-07-26T14:13~PT1M, records=634, elapsed=3s
도메인 7908의 X-View 데이터 중 14:13 – 14:14까지의 데이터 634건을 저장하는데 걸린시간은 3초 라는 의미입니다.
메시지 내용이 직관적으로 표현되어 있어 쉽게 읽고 확인할 수 있습니다.
이제 실제 쿼리를 수행해서 제니퍼 성능 데이터를 조회해 보겠습니다.
이상으로 제니퍼 성능데이터 활용하기 2번째 방법인 RDB에 적재해서 사용하는 방법을 살펴보았습니다.
좀 더 구체적인 사용 방법이 궁금하시다면 tech@jennifersoft.com로 문의해 주세요.
감사합니다.