WhaTap Server 관리자 가이드

제목 : Server Admin Guide
작성자 : WhaTap Support
이메일 : support@whatap.io
날짜 : 2018-11-12
버전 : 1.0.0

설명 : 본 문서는 WhaTap 서버 관리에 대하여 설명 합니다.

1. 용어 정리

용어 의미

Region

데이터 수집 서버의 묶음

Front

웹 UI 담당

Yard

수집된 데이터 저장소

Keeper

개별 서버들의 정보 관리

Proxy

Agent가 보낸 데이터들을 처리

Gateway

개별 Region들에 속한 Keeper

Eureka

전체 Region들을 관장

Noti

알림 발생 및 알림 발송을 담당

Account

계정정보를 관리

Agent

호스트 서버/애플리케이션의 데이터 수집 및 와탭 서버로의 데이터 전송하는 애플리케이션

2. 관리자 페이지

2.1. SERVERS

  • 해당 URL: /v2/admin/servers

serversCardView
Figure 1. Servers Cardview Page

SERVERS 페이지는 현재 세팅되어 있는 전체 서버들의 현황을 Cardview의 형태로 확인할 수 있습니다.
해당 페이지는 다중 Region으로 구성되어 있을 경우(Eureka 실행시)에만 나타나며, 단일 Region 형태로 구성시 해당 Region에 대한 정보 화면으로 바로 넘어갑니다.

serversGatewayCard
Figure 2. Gateway Server Card

다중 Region으로 구성시에는 Eureka에 등록된 서버들이 모두 Cardview 형태로 표시됩니다.
그 중 해당 Region(Gateway)에 대해서는 카드 우측 하단에 표기 되어있는 화살표 버튼을 누름으로써 해당 Region에 속한 Keeper, Proxy, Yard에 대한 정보 및 속해있는 Project들에 대한 정보들을 확인할 수 있습니다.

2.1.1. 개별 Region 정보

단일 Region 구성시 별도의 Cardview 없이 바로 해당 Region에 대한 정보가 표시됩니다.
해당 화면에서는 Keeper, Proxy, Yard, Project에 대한 정보를 확인할 수 있으며 아래 일들을 수행할 수 있습니다.

regionDetail
Figure 3. Region Detail
  • Yard 할당 적용
    각각의 Yard에 추가 Project 를 할당할 것인지 여부를 결정합니다.
    할당이 On 으로 활성화 되어있을 경우 해당 Yard 에 추가 Project 를 할당하며, 반대로 Off 로 비활성화 되어있을 경우 해당 Yard 에는 추가 Project 를 할당하지 않습니다.

    Project 할당은 Project 의 '라이선스 발급' 이 진행되었을 때 할당됩니다.
  • 개별 Project Info
    개별 Project에 대한 정보를 확인할 수 있습니다.

2.1.2. Projects 목록

serverDetailProjectList

개별 Region 정보 페이지 하단에는 Project들에 대한 정보를 포함하는 Projects 목록이 있습니다.
각 지표들에 대한 설명은 다음과 같습니다.

용어 의미

Pcode

Project 코드

Name

Project명

Core

Project에 속해있는 코어 수

Agent

Project에 속해있는 에이전트 수

Master

현재 Project 데이터가 속해있는 수집 서버

Journal

Project에 대한 백업 수집 서버 위치

Status

프로젝트 상태

Delete

사용자가 Project 삭제시 DELETE 버튼 활성화. Yard 서버에서 데이터 삭제

Info

개별 Project에 대한 정보

2.2. ACCOUNTS

  • 해당 URL: /v2/admin/accounts

account

ACCOUNTS 페이지는 현재 가입되어 있는 회원들의 정보와 각각의 회원들이 가지고 있는 정보를 확인할 수 있습니다.
자세한 정보는 상세 버튼을 눌러 진입할 수 있습니다.

2.2.1. 개별 회원 정보

accountDetail

개별 회원 정보 화면을 통해 회원 정보 및 Project 사용 현황에 대해 확인할 수 있습니다.
(Project 정보에 표기되는 정보는 SuperAdmin으로써 소유하고 있는 Project에 대한 정보만 표기됩니다)

accountTrialSetting

사용현황 란에서는 각각 언어에 대한 Project 수와 Project 생성 가능 여부, 그리고 Project 생성시 자동 유상전환 여부 등을 확인/변경할 수 있습니다.
변경 내역이 있을 경우, 반드시 우측에 있는 Edit 버튼을 눌러 수정을 적용시켜줘야 합니다.

accountProjectList

해당 사용자가 소유하고 있는(SuperAdmin) Project에 대한 정보를 확인할 수 있습니다.
선택 가능한 지표에 대한 설명은 다음과 같습니다.

용어 의미

Status

현재 Project의 구독 상태
  • Subscribe: 유료 구독

  • Trial: 체험 사용

  • Limited: 체험 사용 종료 후 미구독

  • Close_pending: 프로젝트 종료 Pending: 프로젝트 생성 후 라이선스 미발급

Notice

Project 대상으로 발생한 Notice

Detail

Project 상세 정보

2.3. PROJECTS

  • 해당 URL: /v2/admin/projects

projectMetering

PROJECTS화면의 경우 전체 사용 중인 언어별 Agent 수와 각각의 Project에 대한 정보를 확인할 수 있습니다.
최상단에 위치한 Platform별 정보의 경우, 매시각 정각에 수집된 정보를 기준으로 표기됩니다.

projectList

하단의 표를 통해 전체 프로젝트에 대한 정보를 확인할 수 있습니다. 화면에 대한 설명은 다음과 같습니다.

  • Export: 전체 프로젝트에 대한 정보를 Excel(xls) 파일 형식으로 다운 받습니다.

용어 의미

Pcode

해당 Project 코드. 권한이 있을 경우 이동 가능

Name

Project 명

PType

Project Type
  • APM: 애플리케이션 모니터링

  • SMS: 인프라 모니터링

  • DB: 데이터베이스 모니터링

Platform

Project 언어

Region

속해있는 Region

Status

구독 상태

Cores

Project에 등록되어 있는 CPU Core 수

Hosts

Project에 등록되어 있는 Host Machine 수

Group

Project가 속해있는 그룹 (없을 경우 공백)

Create Time

Project 생성일

Trial Start

체험 시작일

Trial End

체험 종료일

Trial Days

체험 기간(default 15일)

First Active

최초 Agent 가동일

Last Inactive

최종 Agent 가동일

Detail

Project 상세 페이지

2.3.1. 개별 Project 정보

projectInfo

개별 Project에 대한 정보 화면에서는 해당 Project의 정보, 소속된 Yard 서버의 정보, 그리고 현재 소속되어 있는 Project Member에 대한 정보를 추가/변경/수정/삭제할 수 있습니다.

projectYardInfo

Yard Info에는 현재 해당 Project가 속해있는 Region안에 있는 모든 Yard 서버에 대한 정보가 나타납니다.
이 중, Readable이 On으로 설정되어 있는 Yard 서버에서 데이터를 읽습니다.

Yard Info에 속해있는 지표들에 대한 설명은 다음과 같습니다.

용어 의미

ServerName

Yard 서버의 이름

Address

Yard 서버의 주소

Type

Yard 서버의 종류 Master: 주 데이터 저장 서버 Journal: 데이터 백업 서버

Readable

Yard로부터 데이터 읽기 여부 체크가 해제되어도 쓰기는 활성화

Keep

데이터 보관일 ( default : 37일 )

Copy

다른 Yard 서버로부터 데이터 복사 기능

Delete

Project 삭제

projectAccountsList

해당 Project에 속해있는 사용자들을 관리할 수 있습니다. 권한은 다음과 같습니다.

용어 의미

User

Admin

SuperAdmin

프로젝트당 한 명만 배정

2.3.2. Project Copy

projectCopy

Project 복사는 한쪽 Yard 서버에서 Data이전 작업시 다른 Yard 서버로 저장되어 있는 Data를 옮길 시 사용하는 기능입니다. 희망하는 날짜와 Port, 그리고 데이터가 저장되어 있는 Yard를 선택한 뒤 Copy를 누르면 됩니다.

  • 20000101로 시작하는 폴더는 TextDB정보를 포함하고 있습니다.
    기존 데이터 없이 새롭게 저장되는 데이터만 모니터링하길 희망하실 경우 해당 폴더만 복사해주시면 됩니다.

  • Copy 버튼 클릭 후에는 백그라운드에서 실행되기 때문에 별도의 Web화면을 띄워놓지 않아도 됩니다.

해당 기능은 아직 불안정한 상태입니다.
가급적 서버단에서 scp 명령어를 통해 이전하시는 것을 권장드립니다.

2.4. NOTICE

  • 해당 URL: /v2/admin/notice/list

{TO_BE_UPDATED}

2.5. REGIONS

  • 해당 URL: /v2/admin/regions

regionList

Region은 Project가 저장될 수집 서버의 위치를 지정합니다. 지표들에 대한 설명은 다음과 같습니다.

Region 변경은 정상적인 WhaTap 운영에 심각한 영향을 미칠 수 있습니다.
반드시 담당자를 통해 진행해주시기 바랍니다.
용어 의미

Key

해당 Region의 Key 값

GatewayName

해당 Region의 Gateway 명칭과 동일

Detail(Display)

화면상에 나타날 Region명

Region type

Region 공개 여부
  • Public: 누구나 해당 Region 선택 가능

  • Private: 선택된 이용자에게만 Region 선택권 부여

Proxy Address

해당 Region에 해당하는 Proxy 서버의 주소 (외부IP)

Proxy port

해당 Region에 해당하는 Proxy 서버의 Port

Platform

Platform 설정. APM,SMS,DB 선택 가능

Product type

사용 가능한 제품군

Edit/Delete

해당 Region 정보 수정 / 삭제

2.6. MAIL

2.6.1. Mail Setting

  • 해당 URL: /v2/admin/mail/setting

{TO_BE_UPDATED}

2.6.2. Mail Templates

  • 해당 URL: /v2/admin/mail/template

{TO_BE_UPDATED}

  • 해당 URL: /v2/admin/logos

SITELOGO 화면은 현재 지정되어 있는 Site의 Logo를 변경할 수 있도록 합니다.
이미지들은 svg포멧이 권장되며, 로고의 제원은 명시되어 있는 사이즈와 같아야 이미지가 정상적으로 출력됩니다. 각각의 로고들은 다음과 같습니다.

용어 의미

Header Logo

대시보드 화면 좌측 상단 로고

Sidebar Logo

좌측 메뉴에 노출되는 로고

Login Logo

로그인 화면에 노출되는 로고

Report Logo

리포트 화면 우측상단에 찍히는 로고

2.8. 이벤트 관리

2.8.1. 이벤트 설정

사이트 관리자가 소유한 프로젝트에 이벤트 정책을 편집합니다.

주요 기능
  • 관리자 권한의 이벤트 정책 [SITE_MASTER] 생성하기

  • 관리자 권한의 이벤트 정책을 프로젝트에 덮어쓰기

  • 프로젝트의 이벤트 정책 편집하기

페이지 이동

이벤트(Event) > 이벤트 정책(Event Policy)

Event Menu
Figure 4. Select an 'Event policy' from the 'Event' menu.
화면 구성
Event Policy
Figure 5. 이벤트 설정 페이지 (Initialization plane of the Event Policy menu)

1) 제품군 선택 탭

2) 마스터 정책 패널

3) 프로젝트 이벤트 정책 패널

주요 사용법
해당 페이지의 주 사용 목적은 1)프로젝트 제품군을 선택하여 2)해당 제품의 마스터 이벤트 정책을 생성하고, 3)관리자 소유의 프로젝트에 해당 마스터 정책을 적용하기 위함입니다.
제품군 선택

제품군 이름을 클릭하여 이벤트 설정을 위한 화면을 전환합니다.

  • APM

  • INFRA

  • DBX (준비중)

마스터 정책 관리하기

관리자 권한의 이벤트 정책을 관리합니다. 마스터 정책을 편집하여 관리자 소유의 프로젝트에 일괄적으로 적용할 수 있습니다.

마스터 정책 (SITE_MASTER)
관리자 권한의 이벤트 정책입니다. 마스터 이벤트 정책 패널에서 생성하며 '복사하기' 기능을 통해 프로젝트에 적용이 가능합니다.

Master Policy

1) 마스터 정책 복제하기
마스터 정책 목록(테이블)에서 복제할 마스터 정책을 선택하면 해당 기능이 활성화 됩니다. 클릭 시 선택한 정책과 동일한 룰의 마스터 정책이 추가됩니다.

Copy to Board Active
Figure 6. Clone the master policy / Active.

2) 마스터 정책 생성하기
아래 모양의 버튼 클릭 시 마스터 정책 생성을 위한 창이 나타납니다.

Add Button
Figure 7. Create Event Policy button for site master privileges.

3) 마스터 정책 편집하기
사이트 관리자가 생성한 마스터 정책들의 목록입니다. 설정한 이벤트 정책 이름과 이벤트 정책 종류[SITE MASTER]가 표시됩니다.

  • Radio Button : '마스터 정책 복제하기’와 '프로젝트 이벤트 정책에 덮어쓰기' 기능을 위한 마스터 정책을 선택합니다.

  • Table Row : 테이블 행을 클릭하여 편집 모달을 확장합니다.

마스터 정책을 우선 2)생성하시기 바랍니다. 마스터 정책 목록 중에서 하나를 선택하여 '프로젝트에 덮어쓰기' 또는 '마스터 정첵 복제하기’가 가능합니다.

기본 마스터 정책
마스터 정책 생성을 위한 편집창에는 기본값이 설정되어 있습니다. 이벤트 정책에 적용하는 '이벤트 룰’은 제품별로 다릅니다. 아래는 제품별 마스터 정책의 기본 설정 화면 입니다.

  • APM

Default master event policy rules for APM
Figure 8. Default master event policy rules for APM.

1) 이벤트 정책 이름
마스터 정책을 구분할 이름을 설정합니다.

2) 비활성 이벤트 룰 설정
어플리케이션 또는 에이전트의 비활성 이벤트를 위한 규칙(Rule)을 설정합니다.

3) 커스텀 이벤트 룰 추가하기 (준비 중)
이벤트 룰을 사용자 정의할 수 있습니다. json 형식의 문자열 조합을 통해 사용자 정의 이벤트 룰을 추가합니다.

4) 이벤트 룰 설정
에이전트가 수집하는 지표(Cpu, Response..)에 이벤트를 발생시키기 위한 룰을 설정합니다. 지표별 설정 방식은 아래 '이벤트 룰 편집하기' 목차를 참고해주시기 바랍니다.

5) 마스터 정책 삭제하기
마스터 정책을 삭제합니다. 삭제한 마스터 정책을 복구가 불가능합니다.

6) 저장하기
편집이 완료된 마스터 정책을 저장합니다. 저장이 정상적으로 완료되면 안내 메시지와 함께 마스터 정책 목록이 갱신됩니다.

  • INFRA

Default master event policy rules for INFRA
Figure 9. Default master event policy rules for INFRA.
프로젝트 이벤트 정책 관리하기

프로젝트의 이벤트 정책을 관리합니다. 마스터 정책을 복사하여 전체 프로젝트 또는 선택한 프로젝트의 기본 이벤트 정책으로 적용하거나 프로젝트의 커스텀 이벤트 정책을 생성할 수 있습니다.

Project List Column Headers
Figure 10. Project List Column Headers.
주요기능
마스터 정책 또는 프로젝트 기본 이벤트 정책 목록 중에서 3)복사할 것을 선택
덮어쓸 4)대상 프로젝트 선택
선택한 프로젝트에 2)덮어쓰기
이벤트 정책 복사하기

1) 전체 프로젝트에 복사하기 (Replace to All policies)
프로젝트 목록에서 복사(Copy) 칼럼의 라디오버튼을 선택한 경우 기능이 활성화됩니다.
버튼 클릭 시 전체 프로젝트의 기본 이벤트 정책 [DEFAULT] 에 해당 이벤트 정책을 덮어씌웁니다.

2) 선택한 프로젝트에 복사하기 (Replace to project policy)
프로젝트 목록에서 복사(Copy)와 덮어쓰기(Replace) 칼럼이 선택된 경우 기능이 활성화됩니다.
버튼 클릭 시 선택한 프로젝트의 기본 이벤트 정책 [DEFAULT] 에 해당 이벤트 정책을 덮어씌웁니다.

Project List Column Headers
Figure 11. Functions of the project list.

3) Copy (복사) : 복사할 이벤트 정책을 선택합니다.
해당 칼럼의 라디오 버튼이 체크되었을 때 '전체 프로젝트에 덮어쓰기' 기능이 활성화 됩니다. 덮어쓰기 칼럼의 체크박스까지 선택된 경우 '선택한 프로젝트에 덮어쓰기' 기능이 활성화됩니다.

4) Replace (덮어쓰기) : 복사 대상의 이벤트 정책을 선택합니다.
복사 대상은 이벤트 정책 타입이 기본 [DEFAULT] 인 경우에만 선택이 가능합니다.


5) Type : 이벤트 정책의 종류입니다.

  • [DEFAULT]
    프로젝트의 기본 이벤트 정책입니다.

    • 프로젝트 생성 및 라이센스 발급시 자동으로 부여됩니다.

    • DEFAULT 정책은 삭제할 수 없습니다.

    • 기본 정책 [DEFAULT] 의 정책명은 'default’에서 변경할 수 없습니다.

  • [CUSTOM]
    기본 정책 외 사용자가 임의로 생성한 이벤트 정책입니다.

    • CUSTOM 정책은 INFRA 프로젝트에서만 관리합니다.

    • 기본 이벤트 정책의 편집 모달에서 '커스텀 정책으로 복사하기' 또는 해당 프로젝트의 이벤트 정책 편집 페이지에서 생성할 수 있습니다.
      *

    • 커스텀 정책 [CUSTOM] 의 정책명은 최초 생성 후에 변경할 수 없습니다. 변경이 필요한 경우 해당 프로젝트의 이벤트 정책 설정 페이지에서만 수정이 가능합니다.

프로젝트 이벤트 정책 목록에는 DEFAULT 타입의 이벤트 정책이 우선 노출됩니다.
프로젝트에 커스텀 이벤트 정책이 존재하는 경우 DEFAULT 이벤트 정책 명 좌측에 [+] 버튼을 클릭함으로써 CUSTOM 정책 목록이 확장됩니다.

Custom Event policy
Custom Event policy
Figure 12. Custom policy Expanded.

커스텀 정책으로 복사하기 (Copy to Custom policy)
INFRA 프로젝트의 기본정책 [DEFAULT] 편집 모달 에서 사용이 가능합니다. 해당 기본 정책 내용을 복사하여 커스텀 정책으로 생성합니다.

Project List Column Headers
Figure 13. Copy to Custom policy.
  • [SITE_MASTER]
    마스터 정책을 의미합니다.

    • 마스터 정책은 사이트 관리자 권한의 사용자만 편집이 가능합니다.

    • 마스터 정책 [SITE_MASTER] 의 정책명은 수정이 가능합니다.


6) Policy ID : 이벤트 정책의 식별 ID입니다.
복사/덮어쓰기 기능의 매개변수 역할을 합니다. 한 번 이상 편집(~저장)한 기본 정책에 대해 ID가 부여됩니다.

Policy ID가 표시되지 않는 경우
프로젝트 생성 및 라이센스 발급 시 해당 프로젝트에는 기본 이벤트 정책이 적용됩니다. 편집하지 않은 이벤트 정책에 대해선 '복사/덮어쓰기' 기능이 불필요하기 때문에 Policy ID를 부여하지 않습니다. 1회 이상 편집하여 저장한 경우 Policy ID가 발급됩니다.
  • 이외

    • Project Name : 정책이 적용된 프로젝트의 이름입니다. 우측 상단의 프로젝트 검색 기능을 사용할 수 있습니다.

    • PCODE : 정책이 적용된 프로젝트의 식별 코드입니다. 우측 상단의 프로젝트 검색 기능을 사용할 수 있습니다.

    • Product Type : 정책이 적용된 프로젝트의 제품 유형입니다.

    • Update : 정책이 수정된 경우 날짜가 갱신됩니다.

    • Edit : 편집 아이콘을 클릭하거나 목록의 행을 클릭하여 이벤트 정책 편집 모달을 확장합니다.

이벤트 룰 편집

이벤트 정책은 이벤트 룰을 포함하는 개념입니다. 편집 기능을 통해 개별 룰에 대한 설정 값을 제어 할 수 있습니다.

NOTE

룰(Rule)이란?
룰은 지표(Metric)와 해당 지표를 통해 이벤트를 발생시키는 조건들에 대한 설정값으로 구성됩니다.
예) 이벤트 정책 [APM]Event Policy의 룰 : CPU, Response…​

제품별 이벤트 룰
APM 이벤트
  • 서비스 다운

    • Inactive : 어플리케이션 비활성화 시 이벤트가 발생합니다.

  • 메트릭 이벤트

    • CPU

    • Disk

    • Response

    • Memory

    • Hit Vertical Line

    • Hit Horizontal Line

    • Transaction Error

    • Active Transaction


APM 룰 속성
  • After : 비활성 이벤트를 체크하는 주기를 설정합니다.

  • Enabled : 우측 상단 스위치 버튼입니다. 해당 룰의 활성화 여부를 설정합니다.

  • Repeat : 최초 이벤트 발생 후 이벤트 재발생 여부를 확인하는 주기를 설정합니다.

  • Silent : 최초 이벤트 수신 후 설정값에 따라 이후 시간 동안 이벤트 수신을 무음 처리합니다.

  • Level : 특정 메트릭은 경고 수준을 설정할 수 있습니다. 경고 수준은 이벤트 수신 메시지에 포함됩니다.

  • Over : 이벤트를 발생시키기 위한 임계치를 설정합니다. 단위는 횟수(count)입니다.

  • minTime : 이벤트를 발생시키기 위한 임계치를 설정합니다. 단위는 밀리세컨즈(ms)입니다.


  • 편집 방식

구분 Enable Repeat Silent Level Over Min-time

CPU

Switch

Select box

Select box

Slider (auto)

Slider (%)

-

Response

Switch

Select box

Select box

Select box

Input Number (count integer)

Input Number (ms)

Memory

Switch

Select box

Select box

Slider (auto)

Slider (%)

-

Transaction Error

Switch

Select box

Select box

Select box

Input Number (count integer)

-

Hit Vertical Line

Switch

Select box

Select box

Slider (auto)

Slider (%)

-

Hit Horizontal Line

Switch

Select box

Select box

Select box

Input Number (count integer)

Input Number (ms)

Disk

Switch

Select box

Select box

Slider (auto)

Slider (%)

-

Active Transaction

Switch

Select box

Select box

Select box

Input Number (count integer)

-

INFRA 룰 속성
  • 서비스 다운

    • Inactive(Agent No Data Alarm) : 에이전트에서 데이터 수집이 불가한 경우 이벤트가 발생합니다.

    • Restart(Reboot Alram) : 서버 재시작 시 이벤트가 발생합니다.

  • 메트릭 이벤트

    • CPU

    • Steal

    • Swap

    • Disk I/O

    • Disk Quota

    • Memory

    • Network IOPS

    • Network BPS

  • 편집 방식

구분 Enable Repeat Level Over

STEAL

Switch

Select box

Slider (auto)

Slider (%)

Disk I/O

Switch

Select box

Slider (auto)

Slider (%)

Disk Quota

Switch

Select box

Slider (auto)

Slider (%)

Memory

Switch

Select box

Slider (auto)

Slider (%)

CPU

Switch

Select box

Slider (auto)

Slider (%)

Swap

Switch

Select box

Slider (auto)

Slider (%)

Network IOPS

Switch

Select box

Each Input box

Input Number (pps, integer)

Network BPS

Switch

Select box

Each Input box

Input Number (bps, integer)

이벤트 설정 예시
서비스 다운 룰 설정
Alert occurs when application is inactive for more than 3 minutes
Figure 14. Enable Inactive Rule, After 3 Minutes : 최초 비활성 이벤트 발생 후 3분이 지나면 다시 어플리케이션 비활성 여부를 확인하여 해당 이벤트를 발생시킵니다.
메트릭 이벤트 룰 설정
Alert occurs when application is inactive for more than 3 minutes
Figure 15. CPU 사용율이 70%를 넘는 경우 Warn, 90%를 넘는 경우 Fatal 이벤트를 발생시킵니다.
Alert occurs when application is inactive for more than 3 minutes
Figure 16. 응답시간(Response)이 5000ms 이상 지속된 횟수가 10회를 넘어서는 경우 이벤트를 발생시킵니다.

3. 서버 관리

3.1. 수집 서버체크

3.1.1. console

실행방법은 아래와 같이 실행가능 합니다
java -jar whatap.server.console.jar {PID}

시작스크립트는 Yard를 실행한유저와 동일한 유저로 실행 하면 됩니다.

CURRENT_YARD_PID: {PID}
PID Verified. Starting Admin Console
====================================
_       ____         ______
| |     / / /_  ____ /_  __/___ _____
| | /| / / __ \/ __ `// / / __ `/ __ \
| |/ |/ / / / / /_/ // / / /_/ / /_/ /
|__/|__/_/ /_/\__,_//_/  \__,_/ .___/
                            /_/
Just Tap, Always Monitoring
WhaTap version 0.9.3 20171117
WTAP {PID}#

유저가 다른경우 아래와 같은 오류 메세지를 보여주고 실행이 불가합니다.

java.io.IOException: well-known file is not secure
java -jar /wpm/javam/server/whatap.server.console-0.9.3.1374.jar [pid|name]
please check same user(console vs target)
사용 명령어

환경정보와 성능정보를 출력해서 볼수 있도록 하는 기능 입니다. 사용 가능한 명령어들은 아래와 같습니다.

[MANAGE]
  e,env  [filter]
  perf
  pl,plist,projects  [filter]
[THREAD]
  tl,ThreadList  [filter]
  ttl,ThreadTopList [count]
  ts,ThreadStack  [id]
[CUBE BUILD]
  c5,cube5m yyyyMMddHHmm
  c5d,cube5mDay yyyyMMdd
  ch,cube1h yyyyMMddHH
  chd,cube1hDay yyyyMMdd
[PROJECT COPY]
  pc,pcopy -host [yard] -port [6620] -pcode [pcode] -date [yyyyMMdd] (-unit 102400 -sleep 100)
  pc,pcopy -host [yard] -port [6620] -pcode [pcode] -from [yyyyMMdd] -to [yyyyMMdd](-unit 102400 -sleep 100)
  pcc,pcopyCheck
  pcan,pcopyCancel
[PRINT DB IO]
  dbio
  dbio #10
  dbio [pcode]
  dbio [pcode] meta
  dbio [pcode] text
  dbio reset
Manage
  • e,env [filter]
    Yard 서버의 환경설정 파일들 확인이 가능 합니다.

    WTAP 17444# e
    LOG_FILE = /wpm/javam/server/logs/spring.log
    LOG_PATH = /wpm/javam/server/logs
    PID = 17444
  • perf
    Yard 서버의 성능정보들을 확인 가능합니다.

          heapT  heapU  #pack   #net  #oids   #dbc   #act   #tps   #que  #drop
    08:49:32.605   2.0g   1.2g     2k   1.1m    184  1,606     99    892      0      0

Time

시간값을 출력

#tps

Agent 의 tps 값 출력

heapT

전체 Heap Size 출력

que

queue의 갯수 출력

heapU

사용중인 Heap Size 출력

Drop

drop 된 갯수 출력

#pack

pack 의 갯수 출력

#net

네트워크의 받는 사용량

#oid

할당된 에이전트 수

#Dbc

열린 db 즉 파일수

  • pl,plist,projects [filter]
    project list 정보를 확인 할 수 있습니다.

    PCODE: 4750
      xe0gmbb FPHP-8-238-php-fpm core=1 os=linux ip=172.31.8.238 otype=ap stype=php act=20171207 09:50:01.527

Pcode

Project Code 정보

OS

OS 정보

Agent

Agent 식별자

IP

private ip 정보

Application

Application 이름

Otype

ap : APM
os : SM
db : Database

Cope

CPU core 갯수

Stype

Application Tyep 정보

java, node.js, php, pythobn, url

THREAD

쓰레드 정보를 확인 할 수 있습니다.( 아이디 이름 상태 CPU 차이)

152 JMX server connection timeout 152        TIMED_WAITING          0          0
150 RMI TCP Connection(2)-127.0.0.1          RUNNABLE              46          5
126 http-nio-7710-exec-2                     WAITING                1          0
  • tl,ThreadList [filter]
    ThreadList 정보를 출력합니다

  • ttl,ThreadTopList [count]
    Thread 의 Top 리스트 정보를 출력합니다.

  • ts,ThreadStack [id]
    Thread 의 Stack 정보를 출력합니다.

CUBE BUILD

Cube 정보를 빌드 할 수 있습니다.

WTAP 50018# c5 2017121310
Cube Build 5m for 20000101 00:00:00.000 ok=true
  • C5,cube5m yyyyMMddHHmm
    특정 시간의 큐브를 5분 빌드를 할 수 있습니다.

  • c5d,cube5mDay yyyyMMdd 큐브하루치 5분 빌드를 할 수 있습니다.

  • ch,cube1h yyyyMMddHH
    특정시간의 1시간 cube 빌드를 할 수 있습니다.

  • chd,cube1hDay yyyyMMdd
    특정날짜의 1시간 cube 빌드를 할 수 았습니다.

Project Copy

Project 데이터를 다른 YARD 로 복사 할수 있다.
복사는 Target 서버에서 수행 해야한다.

[PROJECT COPY]
  pc,pcopy -host [yard] -port [6620] -pcode [pcode] -date [yyyyMMdd] (-unit 102400 -sleep 100)
  pc,pcopy -host [yard] -port [6620] -pcode [pcode] -from [yyyyMMdd] -to [yyyyMMdd](-unit 102400 -sleep 100)
  pcc,pcopyCheck
  pcan,pcopyCancel
  • pc,pcopy -host [yard] -port [6620] -pcode [pcode] -date [yyyyMMdd] (-unit 102400 -sleep 100)

host

source Yard 의 IP 정보

unite

전송량

port

데이터 통신포트 정보(6620)

sleep

sleep 정보

pcode

pcode ID 정보

from

시작날짜 정보

date

복사할 날짜

to

끝 날짜정보

  • pcc,pcopyCheck
    프로젝트 복사 상태정보를 볼 수 있습니다.

  • pcan,pcopyCancel
    프로젝트 복사 정보를 취소 할 수 있습니다.

YARD 의 DB IO 정보를 확인 할 수 있습니다.
( rank, Pcode ,Total byte, bpm, writecount ,write byte, read count, read byte)

0171213 10:11:28.906 ~ 20171213 08:17:37.833 6,831,073ms
  0  2985:   275,422,235b  2,419,141bpm  wc=970,395   wb=232,230,924   rc=499,413   rb=43,191,311
  1  3322:   268,326,894b  2,356,820bpm  wc=4,056,306 wb=260,435,219   rc=969,367   rb=7,891,675
  2  3374:   258,445,994b  2,270,032bpm  wc=130,830   wb=189,582,036   rc=134,422   rb=68,863,958
  3  4451:   170,629,035b  1,498,701bpm  wc=364,291   wb=40,818,884    rc=409,318   rb=129,810,151
  4  1798:    81,039,904b    711,805bpm  wc=595,292   wb=67,000,061    rc=457,415   rb=14,039,843
  5  4452:    78,977,449b    693,689bpm  wc=761,479   wb=46,251,934    rc=475,712   rb=32,725,515
  6  1632:    36,672,312b    322,107bpm  wc=117,187   wb=26,207,732    rc=257,133   rb=10,464,580
  7  2962:    36,345,504b    319,236bpm  wc=161,409   wb=26,060,970    rc=151,673   rb=10,284,534
  8  1452:    35,517,890b    311,967bpm  wc=159,361   wb=27,494,575    rc=100,277   rb=8,023,315
  9  4340:    30,666,641b    269,357bpm  wc=114,016   wb=22,520,553    rc=114,208   rb=8,146,088
    TOTAL: 1,621,879,055b 14,245,601bpm  wc=8,823,486 wb=1,226,701,311 rc=4,522,459 rb=395,177,744
  • dbio #10
    상위 10개의 dbio 정보를 확인 할 수 있습니다.

  • dbio [pcode] * 특정 pcode dbio 의 io 정보를 확인 할 수 있습니다.

  • dbio [pcode] meta
    특정 Pcode 의 메타 정보를 확인 할 수 있습니다.

    20171213 09:47:40.685 ~ 20171213 08:18:28.949 5,351,736ms
        oid_trigger: 274,650,300b 3,079,191bpm wc=0 wb=0 rc=2,088 rb=274,650,300
      agent_status:     443,456b     4,971bpm wc=0 wb=0 rc=2,132 rb=443,456
        event_rule:       1,689b        18bpm wc=0 wb=0 rc=1     rb=1,689
    sm_maintenance:         153b         1bpm wc=0 wb=0 rc=1     rb=153
        agent_name:          39b         0bpm wc=0 wb=0 rc=2     rb=39
             TOTAL: 275,095,637b 3,084,183bpm wc=0 wb=0 rc=4,224 rb=275,095,637
  • dbio [pcode] text
    dbio [pcode] meta 특정 Pcode 의 Text Ddb io 정보를 확인 할 수 있습니다.

    WTAP 17444# dbio 3825 text
    20171213 09:52:18.804 ~ 20171213 08:17:25.749 5,693,055ms
            USER_AGENT: 1,127,683b 11,884bpm wc=43    wb=8,324   rc=184,542 rb=1,119,359
                SERVICE:   464,337b  4,893bpm wc=701   wb=456,207 rc=1,626   rb=8,130
                REFERER:   237,822b  2,506bpm wc=1,221 wb=223,392 rc=2,886   rb=14,430
                    SQL:    41,712b    439bpm wc=171   wb=35,552  rc=1,232   rb=6,160
              HTTPC_URL:    24,031b    253bpm wc=346   wb=20,041  rc=798     rb=3,990
                  CRUD:    15,921b    167bpm wc=189   wb=9,731   rc=1,238   rb=6,190
    USER_AGENT_BROWSER:    13,720b    144bpm wc=0     wb=0       rc=2,744   rb=13,720
                  ERROR:    11,825b    124bpm wc=5     wb=925     rc=2,180   rb=10,900
          USER_AGENT_OS:    10,000b    105bpm wc=0     wb=0       rc=2,000   rb=10,000
                  TOTAL: 1,947,051b 20,520bpm wc=2,676 wb=754,172 rc=199,246 rb=1,192,879
  • dbio reset
    dbio 정보를 reset 할 수 있습니다.

3.2. Text 데이터 관리

수집서버에 저장되는 데이터 중 문자열 데이터에 대한 체크 및 관리 방법에 대하여 기술합니다.
와탭의 YARD 서버에는 모니터링에서 취급되는 다양한 문자열 데이터를 취급하기 위한 별도의 저장소 DB를 구비하고 있습니다.
문자열 데이터의 저장 경로는 2가지 형태로, 영구저장소와 일자별 저장소로 구분되며 각각의 저장위치는 다음과 같습니다.

  • 기준 경로 : {YARD서버 설치 위치}/yardbase/{pcode}

구분

저장 위치

영구 저장소

{기준 경로}/20000101/0/text2.hmap
{기준 경로}/20000101/0/text2.data

일자별 저장소

{기준 경로}/{yyyyMMdd}/0/text2.hmap
{기준 경로}/{yyyyMMdd}/0/text2.data

Project 고유의 정보로 장기간에 걸쳐 변경될 가능성이 희박하고, 재사용 가능성이 높은 데이터는 영구 저장소에, 일자별 변동성이 높고 재사용 가능성이 적은 데이터는 일자별 저장소에 저장하는 구조를 가집니다.

Text 데이터를 정제할 필요가 있는 경우, 하기 절차를 참고하여 정제 DB 생성 후 기존 DB를 대체할 수 있습니다.

3.2.1. Text DB 출력 사용법 확인

$ java -cp whatap.server.yard.boot-0.9.4.1232.jar io.whatap.yard.PrintText
sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
 _      ____       ______ YARD
| | /| / / /  ___ /_  __/__ ____
| |/ |/ / _ \/ _ `// / / _ `/ _ \
|__/|__/_//_/\_,_//_/  \_,_/ .__/
                          /_/
Just Tap, Always Monitoring
WhaTap Yard Server version 0.9.4 20171226
WhaTap Yard Text Read

java -cp /wpm/javam/server/whatap.server.yard.boot-0.9.4.1232.jar io.whatap.yard.PrintText  [options]
        -path  : dbpath (path+name only)
        -type 0 : text type
        -count : text count
        -max 999999 : max row

3.2.2. Text DB 타입별 개수 출력

하기와 같이 Text DB에 저장되어 있는 개수를 타입 별로 출력할 수 있습니다.

$ java -cp whatap.server.yard.boot-0.9.4.1232.jar io.whatap.yard.PrintText -path /wpm/javam/server/yardbase/1234569339/20000101/0/text2 -count
sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
 _      ____       ______ YARD
| | /| / / /  ___ /_  __/__ ____
| |/ |/ / _ \/ _ `// / / _ `/ _ \
|__/|__/_//_/\_,_//_/  \_,_/ .__/
                          /_/
Just Tap, Always Monitoring
WhaTap Yard Server version 0.9.4 20171226
WhaTap Yard Text Read
/wpm/javam/server/./logs
/wpm/javam/server/./logs/whatap.yard6610-20180103.log
9 USER_AGENT = 37
10 HTTPC_HOST = 5
15 USER_AGENT_OS = 5
16 USER_AGENT_BROWSER = 8
7 STACK_ELEMENTS = 4796
5 ERROR = 2653
3 DB_URL = 1
6 METHOD = 1
2 SQL = 11
12 CRUD = 11
118 null = 1
101 null = 2

(이하생략)

3.2.3. Invalid Text 타입 정리

Text DB 저장 정보 중 타입이 불분명한 데이터가 존재하는 경우(4.2절의 출력 결과에서 null이 출력됨), 하기와 같이 해당 정보를 정리할 수 있습니다.
하기와 같이 -from 옵션을 통해서는 읽어들일 파일을, -to 옵션을 통해서는 정리된 정보를 저장할 파일을 지정합니다. (text2와 같이 지정하는 경우, text2.hmap과 text2.data가 읽어들일 대상 파일 DB가 됩니다.)

$ java -cp whatap.server.yard.boot-0.9.4.1232.jar io.whatap.yard.CopyText -from /wpm/javam/server/yardbase/1234569339/20000101/0/text2 -to /wpm/javam/server/yardbase/1234569339/20000101/0/text3
sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
 _      ____       ______ YARD
| | /| / / /  ___ /_  __/__ ____
| |/ |/ / _ \/ _ `// / / _ `/ _ \
|__/|__/_//_/\_,_//_/  \_,_/ .__/
                          /_/
Just Tap, Always Monitoring
WhaTap Yard Server version 0.9.4 20171226
WhaTap Yard Text Copy
/wpm/javam/server/./logs
/wpm/javam/server/./logs/whatap.yard6610-20180103.log
Done

특정 Text 타입을 복제 대상에서 제외하고자 할 경우 –exclude 옵션을 통해 Text 타입을 지정할 수 있습니다.
(콤마 구분자로 복수 지정 가능)

이후 복제된 대상 Text DB 정보를 출력하여 건수에 변화가 있는지 확인합니다.

$ java -cp whatap.server.yard.boot-0.9.4.1232.jar io.whatap.yard.PrintText -path ./text3 -count
sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
 _      ____       ______ YARD
| | /| / / /  ___ /_  __/__ ____
| |/ |/ / _ \/ _ `// / / _ `/ _ \
|__/|__/_//_/\_,_//_/  \_,_/ .__/
                          /_/
Just Tap, Always Monitoring
WhaTap Yard Server version 0.9.4 20171226
WhaTap Yard Text Read
9 USER_AGENT = 13
10 HTTPC_HOST = 3
15 USER_AGENT_OS = 3
16 USER_AGENT_BROWSER = 4
7 STACK_ELEMENTS = 1427
5 ERROR = 43
3 DB_URL = 1
6 METHOD = 1
2 SQL = 11
12 CRUD = 11

3.2.4. Text DB 내용 확인

Text DB 저장 정보를 출력하여 내용을 확인하고자 하는 경우, 하기와 같이 Text 타입과 출력할 최대 건수를 지정하여 Text DB의 내용을 출력 해 볼 수 있습니다.

$ java -cp whatap.server.yard.boot-0.9.4.1232.jar io.whatap.yard.PrintText -path /wpm/javam/server/yardbase/1234569339/20000101/0/text3 -type 1 -max 10
sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
 _      ____       ______ YARD
| | /| / / /  ___ /_  __/__ ____
| |/ |/ / _ \/ _ `// / / _ `/ _ \
|__/|__/_//_/\_,_//_/  \_,_/ .__/
                          /_/
Just Tap, Always Monitoring
WhaTap Yard Server version 0.9.4 20171226
WhaTap Yard Text Read
/wpm/javam/server/./logs
/wpm/javam/server/./logs/whatap.yard6610-20180103.log
1 SERVICE 351=fasterxml.jackson.databind.deser.BeanDeseriali

3.3. 백업 및 복구

3.3.1. Yard 데이터 백업 및 복구

Jounral 할당 확인

다음과 같은 화면에서 프로젝트가 Journal 할당이 되어있는지 확인 할 수 있습니다.

  1. 서버 > Region > 프로젝트 목록

Journal 리스트에 Journal 서버의 이름이 등록되어 있어야 합니다.

  1. 프로젝트 상세 보기

Journal 서버에 타입이 Master 가 아닌, Journal 로 할당되어 있어야합니다.

수동으로 할당하고자 하실 경우 프로젝트 상세 보기에서 [Journal] 버튼을 통하여 등록할 수 있습니다.

큐브 빌드

5분, 1시간 단위의 데이터를 보관하는 큐브를 다시 빌드하는 작업입니다.

1시간 이상 분량의 데이터를 다시 빌드하실 경우
5분 큐브를 먼저 빌드하신 이후, 1시간 큐브를 빌드해주시길 바랍니다.
whatap.server.console-${version}.jar

해당 방식은 Yard 어플리케이션에 부착되어 사용되는 구조입니다.
작업 대상이 되는 Yard 의 전체 프로젝트 에 대하여 재빌드가 진행됩니다.

  • 필요 요소

    • lib/whatap.server.consol-${version}.jar

    • 동일 서버 내에 Yard 어플리케이션이 기동 중

    • 기동 중인 Yard 어플리케이션과 동일한 유저 권한으로 실행

  • 실행 방법

    • bin/admin_console.sh

    • java -jar lib/whatap.server.console-${version}.jar ${PID}

  • 명령문

    • 5분 단일 빌드
      c5 yyyymmddHHMM
      c5 201906280105

    • 5분 일일 빌드
      c5h yyyymmdd
      c5d 20190628

    • 1시간 단일 빌드
      ch yyyymmddHH
      ch 2019062801

    • 1시간 일일 빌드
      chd yyyymmdd
      chd 20190628

API

Yard 어플리케이션의 API 에 명령을 내려 작업하는 방식입니다.

Front 에서 진행
  • 필요 요소
    Front 서버 8080 Port에 접근 가능
    Front.conf - internal_api_key 옵션 등록

  • 옵션 등록
    Front.conf 옵션에 다음과 같은 옵션을 지정합니다.
    internal_api_key={token}

    • token
      대소문자, 숫자로 구성된 임의의 값을 지정해주시면 됩니다.
      해당 옵션을 접근 토큰으로 이용합니다.

  • API 주소
    {Front IP}:8080/yard/api/flush?pcode={Project Code}&type=cube&path=/{Data Type}/rebuild&params={"stime":{Start Time},"etime":{End Time}}

    • Front IP : 접속 가능한 Front 어플리케이션의 IP 를 입력합니다.

    • Project Code : cube 데이터를 재빌드할 프로젝트의 코드를 지정합니다.

    • Data Type : 5분, 1시간 단위 데이터를 선택합니다.

      • 5분 데이터 : 5m

      • 1시간 데이터 : 1h

    • Start Time : 빌드할 데이터의 시작 시간을 unix time 으로 지정합니다.

    • End Time : 빌드할 데이터의 종료 시간을 unix time 으로 지정합니다.

  • cURL 사용 예시
    curl --header 'Content-Type: application/json' --header 'x-whatap-token: qnKnPimPP7' --header 'Accept: /' '127.0.0.1:8080/yard/api/flush?type=cube&path=/5m/rebuild&params=%7B"stime":1563667200000,"etime":1563667800000%7D&pcode=101'

header 의 x-whatap-token 의 값으로 front.conf 의 internal_api_key 값을 넣어주시면 됩니다.

  • Postman 사용 예시

postmanParam
Figure 17. Front API Postman Param Screen
postmanHeader
Figure 18. Front API Postman Header Screen
Yard 에서 진행
  • 필요 요소

    • Yard 서버 7710 Port에 접근 가능

  • API 주소 
    {Yard IP}:7710/cube/pcode/{Project Code}/{Type}/rebuild?time={Unix Time}
    {Yard IP}:7710/cube/pcode/{Project Code}/{Type}/rebuild?stime={Unix Time}&etime={Unix Time}

    • YARD IP : 접근 가능한 Yard 서버 IP 를 입력해주시면 됩니다.
      EX) 127.0.0.1 * Type : 빌드 방식을 선택합니다.

      • 5m : 5분 데이터 큐브 생성

      • 1h : 1시간 데이터 큐브 생성 큐브를 재생성할 Project 의 번호를 입력합니다.

    • Project Time : 재빌드를 진행할 프로젝트의 프로젝트 코드를 기입합니다.

    • Unix Time : 재빌드할 큐브 시간대를 지정합니다.

      • Time 의 경우 단일 큐브 빌드를 의미합니다.
        ( 9시 10분을 지정 시 해당 시각의 단일 큐브 데이터만 생성 )

      • stime, etime 의 경우 시간대에 해당하는 모든 큐브를 빌드합니다.
        ( stime 9시, etime 10시로 지정 시 9시부터 10시까지의 모든 빌드를 수행 )

  • cURL 사용 예시

    • 2019-01-01 08:00 (UTC) ~ 2019-01-01 09:00 (UTC) 5분 큐브 빌드
      curl '127.0.0.1:7710/cube/pcode/1001/5m/rebuild?stime=1546329600000&etime=1546333200000'

    • 2019-01-01 08:00 1시간 큐브 빌드
      curl '127.0.0.1:7710/cube/pcode/1001/1h/rebuild?time=1546329600000'

Yard 유실된 데이터 복구하기
해당 작업 중에는 인스턴스에 과다한 부하가 걸릴 수 있습니다.
가급적 부하가 걸려도 이상이 없는 서버에서 작업하시는 것을 권장드립니다.

Yard 서비스 중 재시작, 인스턴스 이상 등 Yard 에서 데이터를 유실한 경우 데이터를 복구할 수 있습니다.
단, 다음과 같은 상황에서는 데이터 복구가 불가능 합니다.

1) Proxy 서버에서 데이터를 수집하지 못한 경우
2) Journal 서버가 없는 경우

  • 필요 요소

    • whatap.server.yard-${version}.jar

    • Journal 서버의 6620 Port 접근이 가능

    • Yard 서버에 접근이 가능 ( 파일 전달 시 필요 )

  • 실행 방법
    java -cp whatap.server.yard-*.jar io.whatap.yard.Recover -host {Journal IP} -port 6620 -pcode {Project Code} -date {yyyymmdd}

    • Journal IP : Journal 서버의 IP
      EX) 10.0.1.5

    • Project Code : Project 의 고유 코드

    • yyyymmdd : 연월일 형식 20190101

실행 경로 하위에 yardbase 디렉토리가 만들어집니다.
지정된 날짜 외의 디렉토리는 비어있는 디렉토리임으로 무시하셔도 무방합니다.
데이터 복구 완료 이후 생성되는 데이터는 Cube 데이터( 5분, 1시간 데이터 )는 존재하지 않습니다.
따라서 수동으로 Cube 빌드를 진행 해주셔야합니다.

4. 기타

4.1. 좀 더 간단한 java process 확인

ps -ef |grep java 대신jps 써 보세요

whatap@vmsvr02:~$ jps
31254 whatap.server.keeper-1.4.1.2492.jar
31256 whatap.server.gateway-1.4.1.2492.jar
31257 whatap.server.proxy-1.4.1.2492.jar
31258 whatap.server.yard-1.4.1.2492.jar
24797 Jps

4.2. HeapDump 생성

Signal 3 사용

kill -3 <pid>

동작중인 JVM 내 ./bin/jmap 사용

jmap 사용
# jmap -dump:live,file=<file-path> <pid>
jmap -dump:live,file=./dump.bin 3125