💬
목차
< 뒤로가기
인쇄
Web운영가이드
version 2.3.0

개요

  • 어드민 시스템은 업무 시스템에 대한 자원, 권한, 설정, 통계, 모니터링 등 다양한 관리 기능을 제공하는 웹사이트이다.
  • 어드민 시스템에서 권장하는 브라우저는 Chrome브라우저, IE11이상 브라우저이다.

공통

로그인

로그인을 통한 어드민 시스템에 인증이 가능하다.

  • 어드민 시스템에 접속하기 위한 로그인 화면이다.
    URL : HTTP(S)://IP:PORT/{ContextPath}/admin/login

  • 아이디와 비밀번호 입력후 [로그인] 버튼을 클릭한다.

  • 인증이 성공하면 어드민 시스템의 메인 화면에 진입한다.

  • 인증에 실패하면 에레메시지가 사용자에게 노출된다.

  • 에러 종류에 따라 각각 다른 에러메시지가 노출되며 에러메시지 종류는 아래와 같다. (에레메시지에 대한 자세한 내용 및 처리는 [사용자 관리] 항목을 참고한다.)

  • 계정명(ID) 또는 비밀번호를 잘못 입력하셨습니다.

  • 계정이 잠겼습니다.

  • 계정이 비활성화 되었습니다.

  • 계정이 만료되었습니다.

  • 계정의 패스워드 기간이 만료 되었습니다.

  • 이미 로그인한 계정이 있습니다.

  • 계정에 권한이 부여되지 않았습니다.

  • 계정 인증에 실패하였습니다.

기본 기능

image-20200915095803074
  • 우측 상단의 다국어 기능을 통해 한국어, 영어, 중국어를 지원한다.

  • 우측 상단의 로그아웃 버튼을 통해 어드민 시스템 로그아웃이 가능하다. 로그아웃을 하게 되면 로그인 페이지로 이동한다.

  • 좌측 메뉴바를 펼치면 메뉴의 트리구조에 메뉴가 노출된다.

  • 좌측 메뉴 하단의 화살표 버튼을 통해 메뉴바를 활성/비활성화 할 수 있다.

엑셀 저장

image-20200915095947377
  • 대매뉴인 자원관리, 권한관리 하위에 있는 메뉴들의 데이터는 엑셀로 데이터를 저장할 수 있다.

엑셀 업로드

  • 그리드 하단에 있는 엑셀업로드 버튼을 클릭하면 엑셀업로드 팝업이 노출된다.

  • 우선 템플릿다운로드를 통해 업로드할 엑셀의 템플릿을 다운받는다.

  • 템플릿에 맡게 엑셀 작성 후 파일을 등록한 후 저장 버튼을 누르면 엑셀업로드가 완료된다.

  • 데이터 형식이나 기타 예외적인 이유로 업로드에 실패하면 데이터는 롤백된다.

데이터 조회

image-20200915100055844
  • 하나의 페이지에 조회할 데이터의 최대 갯수를 선택할 수 있다.(기본 10개)

  • 각 메뉴의 특정 컬럼을 기준으로 조건 검색이 가능하다. (일부 메뉴 미지원)

  • 화살표가 표시뒤어 있는 컬럼의 헤더를 클릭하면 해당 컬럼을 기준으로 데이터 정렬이 가능하다. (일부 메뉴 미지원)

데이터 등록

image-20200915100221111
  • 그리드 하단의 등록 버튼을 클릭하면 데이터를 등록할 수 있는 팝업이 노출된다.

  • 각 데이터 폼에 맞는 양식을 입력 한 후 저장 버튼을 클릭하면 데이터가 저장된다.

  • 필드명에 (*)가 표시되어 있는 데이터는 필수 입력 데이터 이다.

  • 필수데이터를 입력하지 않거나 그 외 데이터를 등록 할 수 없는 예외 사항이 발생하면 데이터는 등록되지 않고 사용자에게 예외 내용이 노출된다.

데이터 수정

image-20200915100253413
  • 수정할 데이터의 행을 클릭하면 데이터를 수정할 수 있는 팝업이 노출된다.

  • 수정 버튼을 클릭하면 수정 할 수 있는 필드가 활성화 된다.

  • 각 데이터 폼에 맞는 양식을 입력 한 후 저장 버튼을 클릭하면 데이터가 수정된다.

  • 필수데이터를 입력하지 않거나 그 외 데이터를 수정 할 수 없는 예외 사항이 발생하면 데이터는 수정되지 않고 사용자에게 예외 내용이 노출된다.

데이터 삭제

image-20200915100335932
  • 삭제할 데이터 행의 맨 앞 체크 박스를 클릭한다.
  • 삭제 버튼 클릭하면 체크한 데이터가 삭제된다.
  • 컬럼 헤더의 체크박스를 클릭하면 현재 조회한 페이지의 모든 데이터가 체크된다. 이를 통해 다중 삭제가 가능하다.

어드민(관리)

사용자 관리

어드민 시스템과 업무 시스템의 사용자 및 관리자의 계정 정보를 관리할 수 있다.

사용자 관리를 통해 등록된 사용자만 업무 시스템 혹은 어드민 시스템에 인증이 가능하다.


계정 활성화/비활성화

image-20200915100414329
  • [사용 여부]가 사용인 사용자만 로그인 할 수 있다.

  • [사용 여부]가 미사용인 사용자가 로그인을 시도하면 ‘계정이 비활성화 되었습니다.’ 라는 에러메시지가 발생한다.


사용자 계정 잠김

image-20200915100444008
  • 로그인시 비밀번호를 잘못 입력한 횟수가 설정한 임계치(기본 10회)를 넘으면 계정이 잠긴다.

  • 잠긴 계정은 ‘계정이 잠겼습니다.’ 라는 에러메시지와 함께 로그인이 불가하다.

  • 계정이 잠기면 운영자가 사용자관리 메뉴에서 잠금을 해제 해야 로그인이 가능하다.

  • 잠금을 해제하면 비밀번호 실패 카운트가 0으로 초기화 된다.


계정 만료

image-20200915131745317
  • 계정의 사용 기간을 설정할 수 있다,
  • 로그인을 시도하는 계정이 [계정시작날짜]와 [계정종료날짜] 범위 밖에 있으면 ‘계정이 만료되었습니다’ 라는 에러메시지와 함께 로그인이 불가하다.

패스워드 만료

image-20200915131816345
  • 패스워드의 만료 기간을 설정할 수 있다,

  • 로그인을 시도하는 계정이 패스워드 만료기간이 넘으면 ‘패스워드 기간이 만료 되었습니다’라는 에러메시지와 함께 로그인이 불가하다.


사용자 권한 부여

image-20200915131848025
  • 사용자 등록 및 수정에서 권한을 바로 부여할 수 있다.

  • 사용자 권한 부여는 [사용자권한관리] 메뉴에서도 가능하다


사용자 그룹관리

사용자 그룹을 조회, 생성, 수정, 삭제 관리할 수 있다.

  • 그룹은 단순하게 정의(생성)만으로는 의미가 없으며 정의한 그룹에 사용자 매핑과 권한 매핑이 이뤄져야 실질적인 기능을 가진다.

  • 정의한 그룹에 대한 사용자 매핑은 [사용자그룹 및 사용자매핑] 메뉴에서 이어서 진행한다.

  • 정의한 그룹에 대한 권한 매핑은 ‘사용자그룹권한관리’ 메뉴에서 이어서 진행한다.


사용자그룹 및 사용자매핑

[사용자관리]에 정의된 사용자와 [사용자그룹관리]에 정의된 그룹에 대한 매핑을 할 수 있다.

image-20200915132022829
  • 그룹에 속한 사용자들은 그룹이 가지고 있는 모든 권한을 사용할 수 있다

사용자그룹 상하관계 등록

[사용자그룹관리]에 정의된 그룹간의 상하관계를 정의 할 수 있다.

image-20200915132055609
  • 그룹의 상하 관계는 단순히 그룹에 대한 상하관계를 나타낼뿐 권한과는 연관이 없다.(상위그룹이 하위그룹의 모든 권한을 가지는 개념이 아니다.)

  • 등록버튼을 클릭하여 팝업이 나오면, 그룹ID선택에서 상위ID를 클릭후 우측의 돋보기를 클릭한다.

  • 상위그룹을 선택한 후 하위그룹을 선택하면 지정이 완료되며 저장으로 작업을 완료한다.

  • 데이터의 논리적 오류(상위그룹과 하위그룹의 순환 발생 등)가 발생하는 관계는 등록되지 않는다.


메뉴 관리

메뉴 관리를 통해 어드민 및 업무 시스템의 메뉴 정보를 관리 할 수 있다.

  • 메뉴는 단순하게 정의(생성)만으로는 의미가 없으며 정의한 메뉴에 권한 매핑이 이뤄져야 실질적인 기능을 가진다.

  • 정의한 메뉴에 대한 권한 매핑은 [메뉴권한관리] 메뉴에서 이어서 진행한다.


메뉴 트리

image-20200915132150679
  • 좌측 메뉴 트리에서는 어드민 시스템뿐만 아니라 업무 시스템의 메뉴를 포함한 모든 메뉴가 트리 형식으로 보여진다.

  • 자식 메뉴가 있을경우 노드를 클릭하여 하위 메뉴 트리를 펼칠 수 있다.

  • 좌측 메뉴 트리에서 특정 메뉴 노드를 클릭하면 오른쪽 그리드를 통해 자식 메뉴 데이터가 보여진다.


메뉴 설정

image-20200915132250269
  • 메뉴 등록/수정 시 아래와 같은 설정이 가능하다.

  • 메뉴레벨/상위메뉴ID : 메뉴레벨과 상위(부모) 메뉴의 ID를 설정한다. 좌측 메뉴 트리에서 특정 메뉴 노드를 선택한 상태로 등록을 진행한다면 자동으로 값이 설정된다.

  • 메뉴순서 : 작은 숫자를 기준으로 오름차순으로 메뉴가 정렬된다. 때문에 같은부모,같은레벨의 메뉴중 상단에 위치시키고 싶은 메뉴는 보다 작은 숫자로 설정해야 된다.

  • 메뉴URI : 메뉴를 클릭했을시 리다이렉트 될 URI이다.

  • 어드민 메뉴여부 : 어드민 시스템의 메뉴와 업무 시스템의 메뉴를 구분한다.

  • 좌측메뉴여부 : 좌측 메뉴에 노출 여부를 구분한다.

  • 사용여부 : [사용] 설정이 되어야만 메뉴가 노출된다.

  • 도움말경로 : 도움말 경로 컨텐츠(HTML)의 실질적인 위치를 설정한다.


버튼 관리

시스템 화면에 노출한 버튼에 대한 조회, 생성, 수정, 삭제 관리할 수 있다.

  • 정의한 버튼은 태그라이브러리를 통해 화면(JSP)에서 사용할 수 있다.(개발가이드 참조)

  • 버튼을 단순하게 정의(생성)만으로는 의미가 없으며 정의한 버튼에 권한 매핑이 이뤄져야 실질적인 기능을 가진다.

  • 시스템에 접속한 사용자의 권한에 할당된 버튼에 따라 버튼 노출 여부가 결정된다. 즉 권한별로 노출되는 버튼을 설정 할 수 있다.

  • 정의한 버튼에 대한 권한 매핑은 [리소스권한관리] 메뉴에서 이어서 진행한다.


리소스 관리

리소스를 조회, 생성, 수정, 삭제 관리할 수 있다.

  • 리소스는 모든 리소스(페이지,JS,이미지 등)에 접근하는 URI를 의미한다.

  • 리소스는 단순하게 정의(생성)만으로는 의미가 없으며 정의한 리소스에 권한 매핑이 이뤄져야 실질적인 기능을 가진다.

  • 정의한 리소스에 대한 권한 매핑은 [리소스권한관리] 메뉴에서 이어서 진행한다.


리소스 주요 설정

image-20200915132401396
  • 리소스(URI)에 대한 패턴을 정의한다. (Ant패턴)
  • 리소스는 ‘리소스순서’에 의해 오름차순으로 정렬된다.

공통코드 관리

시스템에서 사용되는 공통 코드들을 관리한다.

image-20200915132500139
  • 정의된 공통코드는 태그라이브러리를 통한 공통적인 HTML코드를 생성에 사용된다. (개발가이드 참조)

  • 대분류, 중분류, 소분류로 구분되어 있으며 좌측그리드는 대분류, 우측그리드는 중분류, 중분류의 행을 선택했을 때 노출되는 팝업은 소분류 공통코드를 관리할 수 있다.

image-20200915132537775
  • 태그라이브러리를 사용하여 화면에서 코드를 표현하고자 하면 코드를 등록하게 되더라도 당장 코드를 표현할 순 없다. 실제로 시스템 화면에 각 코드에 맞는 다국어 처리된 값을 표현하기 위해서는 행을 우클릭하여 다국어를 등록해야 된다. (미등록시 NULL로 노출된다.)

  • 실제 시스템에서 처리하는 값은 다국어로 등록한 값이 아닌 ‘실제값’이다.


다국어 관리

기존 Properties파일을 통한 다국어 관리 외에도 어드민 시스템을 통한 데이스베이스 기반의 다국어 관리 기능을 제공한다.

Properties 파일의 다국어 관리 기능과 혼용해서 쓸수있으며 우선순위 및 자세한 설정 방법은 개발가이드를 참고한다.


국가/언어코드

  • 그리드 우측 하단의 언어코드 관리를 통해 국가/언어 코드를 관리 할 수 있다.

  • ISO표준 언어코드와 국가코드를 등록한다. 예) 일본언어코드 : ja / 일본국가코드 : jp

다국어 메시지 관리

  • 등록한 국가/언어코드에 대한 다국어 메시지를 정의할 수 있다.

미등록 메시지

image-20200915132705642
  • 등록한 다국어 메시지 코드 중 미등록한 메시지가 있으면 알림을 통해서 확인할 수 있다.

  • 등록된 국가코드에 대한 모든 메시지를 등록 해야지만 알림이 사라진다.


프로퍼티 관리

DB를 통해 관리되는 프로퍼티 키-벨류 값을 관리한다.

  • 프로퍼티 API를 통해 등록된 프로퍼티 값을 사용 할 수 있으며 자세한 내용은 개발가이드를 참조한다.
  • 제품 설치시 기 등록되어있는 프로퍼티 값을 삭제하면 서비스에 문제가 발생 할 수 있다.

권한등록 관리

권한그룹을 조회, 생성, 수정, 삭제 관리할 수 있다.

  • 권한은 단순하게 정의(생성)만으로는 의미가 없으며 정의한 권한에 사용자, 그룹, 리소스, 버튼, 메뉴 등의 매핑이 이뤄져야 실질적인 기능을 가진다.
  • 정의한 권한에 대한 사용자 매핑은 [사용자권한관리] 메뉴에서 이어서 진행한다.
  • 정의한 권한에 대한 그룹 매핑은 [사용자그룹권한관리] 메뉴에서 이어서 진행한다.
  • 정의한 권한에 대한 메뉴,리소스,버튼 매핑은 [리소스권한관리] 메뉴에서 이어서 진행한다.

권한상하관계 등록

[권항등록관리]에 정의된 권한간의 상하관계를 정의 할 수 있다.

image-20200915132847863
  • 권한의 종속관계(상하 관계)를 정의한다.

  • 상위권한은 하위권한의 모든 권한을 사용할 수 있다.

  • 체인 형태의 권한 상속 또한 가능하다. 예) A권한의 하위권한이 B권한이고, B권하의 하위권한이 C권한일 경우
    A는 B와 C의 모든 권한을 사용할 수 있다.

  • 등록버튼을 클릭하여 팝업이 나오면, 권한ID선택에서 상위ID를 클릭후 우측의 돋보기를 클릭한다.

  • 상위그룹을 선택한후 하위그룹을 선택하면 지정이 완료되며 저장으로 작업을 완료한다.

  • 데이터의 논리적 오류(상위권한과 하위권한의 순환 발생 등)가 발생하는 관계는 등록되지 않는다.


사용자권한 관리

[사용자관리]에 정의된 사용자와 [권한등록관리]에 정의된 권한에 대한 매핑을 할 수 있다.

image-20200915132944599
  • 권한이 부여된 사용자는 권한이 할 수 있는 모든 기능을 사용할 수 있다. 즉, 그 권한에 부여된 리소스, 메뉴, 버튼 기능을 사용할 수 있다.

  • 권한은 다중으로 부여가 가능하다.

  • (from xxxxxxx)와 같은 권한은 권한상하관계에 의해서 부여받은 권한이므로 명시적으로 이동이 불가능하다.


사용자그룹권한 관리

[사용자그룹관리]에 정의된 그룹과 [권한등록관리]에 정의된 권한에 대한 매핑을 할 수 있다.

image-20200915133034758
  • 그룹에 속한 사용자는 그룹이 가지고 있는 권한을 모두 사용할 수 있다. 즉, 권한에 부여된 리소스, 메뉴, 버튼 기능을 사용할 수 있다.

  • 권한은 다중으로 부여가 가능하다.

  • (from xxxxxxx)와 같은 권한은 권한상하관계에 의해서 부여받은 권한이므로 명시적으로 이동이 불가능하다.


메뉴 권한 관리

메뉴권한 관리(메뉴->권한)

메뉴를 기준으로 권한을 부여할 수 있다.

image-20200915133216464
  • 시스템에 접속한 사용자는 본인의 권한에 따라 메뉴 노출 여부가 결정된다.

  • 예1) 사용자A는 권한B를 가지고 있다. 메뉴C는 권한B가 매핑되어 있기 때문에 A로 로그인 했을시 메뉴C가 노출된다. 권한B를 가지고 있지 않은 사용자D는 서비스에 로그인 하더라도 메뉴C가 노출되지 않는다.

  • 예2) 사용자A는 그룹A’에 속해 있다. 그룹A’는 권한B를 가지고 있다. 메뉴C는 권한B가 매핑되어 있기 때문에 A로 로그인 했을시 메뉴C가 노출된다.


메뉴권한 관리(권한->메뉴)

권한을 기준으로 메뉴를 부여할 수 있다.

image-20200915133253261
  • 사용성을 위해 메뉴가 분리되었을 뿐 이하 기능은 메뉴권한관리(메뉴->권한)과 동일하다.

리소스권한 관리

각 리소스(URL)에 접근할 수 있는 권한과 버튼을 관리한다.

리소스에 대한 권한 부여

image-20200915133404689
  • 리소스관리 메뉴에서 등록한 리소스(URL)에 대해서 권한관리가 가능하다.
  • 각 리소스에 권한을 부여함으로써 해당 권한을 가진 사용자 혹은 사용자그룹만이 리소스에 접근할 수 있다.

리소스(화면)에 대한 버튼 부여

image-20200915133444834
  • 리소스(URL)은 특정 화면이 될 수 있다. 이 같은 경우 해당 화면에서 사용하는 버튼을 왼쪽 하단의 그리드를 통해서 정의한다.

  • 단순히 화면에 버튼만 부여한다고 해당 버튼을 사용 할 수는 없다. 지금까지의 설정은 리소스(화면)에서 어떤 버튼들이 정의가 되어있는지 명시한것이다. 이 버튼을 사용하기 위해서는 권한을 부여해줘야 한다.

버튼에 권한 부여

image-20200915133522155
  • 화면에 사용하는 버튼에 대해서 권한을 부여한다. 각각의 버튼에 맞는 권한을 부여함으로써 사용자의 권한 별로 버튼의 노출 여부가 결정된다.

  • 위의 그림은 RESOURCE_ADMIN_ID리소스에 6개의 버튼이 정의되어 있고, 그 중 BUTTON_INSERT_ID버튼에는 ROLE_ADMIN_ID권한이 부여되어 있다. 때문에 ROLE_ADMIN_ID권한을 가진 사용자에게는 BUTTON_INSERT_ID버튼이 노출된다.


시스템환경 관리

시스템에서 공통적으로 사용하는 설정을 관린한다.

  • 각 설정에 대한 기능은 다음과 같다.

  • 로그인 락 카운트 임계값

-   로그인시 패스워드를 틀렸을 경우 계정이 잠기게 된다. 이에 대해서 패스워드 실패에 대한 임계치를 설정할 수 있다.
  • 파일업로드 최대 용량 : 파일업로드API 사용시 최대 업로드 용량을 설정할 수 있다.

  • 파일업로드 허용 확장자 : 파일업로드API 사용시 업로드 가능한 파일 확장자를 설정할 수 있다. 미입력시에는 모든 확장자를 허용한다.

  • 예외처리 메시지 구분 : 어드민 시스템에서 에러가가 발생하였을 때 에러 메시지를 팝업에 어떻게 노출 할지에 대한 설정이다.

    • 개발자 : 팝업에 익셉션 트레이스가 모두 노출된다.
  • 사용자 : 팝업에 익셉션 트레이스를 제외한 메시지만 노출된다.

  • 예외처리 메일 사용 유무 : 에러 발생시 지정된 담당자에게 메일을 전송한다. 담당자 지정 및 관리는 [메일전송 관리] 메뉴에서 이어서 진행한다.


캐시 관리

시스템에서 사용하는 캐시에 대한 관리를 할 수 있다.

image-20200915133806475
  • 좌측 그리드는 캐시인스턴스를 나타내며 특정 캐시인스턴스 행을 클릭하면 해당 캐시인스턴스에서 사용하는 캐시엘리먼트를 조회할 수 있다.

  • 해당 메뉴는 캐시구현체가 Ehcache일때만 제공되며 Redis나 그외 캐시구현체를 사용하면 해당 메뉴 기능 사용이 불가하다.

캐시 초기화/삭제

image-20200915133850660
  • 좌측 그드 하단의 ‘캐시 전체 초기화’ 시스템에서 사용하고 있는 모든 캐시인스턴스를 초기화 한다.
  • 특정 캐시인스턴스 행의 우측에 있는 ‘캐시초기화’ 버튼을 클릭하면 해당 캐시인스턴스만 초기화 한다.

이력 조회

로그인 로그

사용자별 시스템 접속 기록을 조회할 수 있다.

사용자별 접속 로그

image-20200915133930856
  • 서비스에 로그인하면 고유한 세션ID를 부여받는다. 때문에 한개의 세션ID(한 개의 행)는 한번의 로그인을 의미한다.

  • 서비스 로그아웃에 대학 이력 또한 제공하며 로그아웃에 대한 정의는 크게 2가지로 구분할 수 있다. 사용자가 로그아웃 버튼을 클릭하였을 경우와 서버 세션의 타임아웃이 된 경우이다.

  • 좌측 상단의 로그수집 체크 버튼을 통해 서비스 로그 수집 여부를 선택할 수 있다. 로그수집을 끄게되더라도 로그인 이력은 여전히 조회가 가능하지만 우측의 상세보기를 통한 서비스 로그는 더 이상 수집하지 않기 때문에 조회가 불가능하다.

서비스 로그

image-20200915134006414
image-20200915134046533
  • 사용자별 접속 로그에서 상세보기를 클릭하면 해당 사용자의 서비스 요청 목록을 조회 할 수 있다.

  • 서비스 요청 URL별로 목록을 보여주며 요청 시간 순서별로 정렬 되어있다. (내림차순). 때문에 최근 요청 이력이 상단에 위치된다.

  • 각 서비스 요청은 고유한 리퀘스트ID(거래추적ID)를 부여받는다.

서비스 상세 로그

image-20200915134122506
  • 서비스 로그에서 특정 서비스 요청URL의 상세보기를 클릭하면 상세 로그를 조회 할 수 있다.

  • 서비스 요청 URL에서 호출한 클래스 및 메소드 수행에 대한 상세 내용을 확인할 수 있다.

시퀀스 다이어그램

  • 서비스 로그에서 특정 서비스 요청URL의 행을 클릭하거나 서비스 상세 로그에서 행을 클릭하면 해당 서비스의 시퀀스 다이어그램을 볼 수 있다.
  • 시퀀스 다이어그램은 서비스 요청이 실제로 어떤 로직으로 처리가 되었는지 직관적으로 확인할 수 있다.

거래추적 관리

서비스 요청에 대한 고유한 거래추적ID를 기준으로 트랜잭션 정보를 조회를 할 수 있다.

image-20200915134309868
  • 거래추적ID는 서비스로그의 리퀘스트ID와 동일하다. 즉 각 서비스(URL)요청에 대한 고유한 ID이다.
image-20200915134412085
  • 거래추적 관리에서 특정 거래추적ID에 대한 상세보기를 클릭하면 상세 정보 조회가 가능하다.
image-20200915134443508
  • 거래추적 상세 로그목록에서 특정 행을 클릭하면 팝업이 노출된다.
  • 해당 팝업을 통해 특정 아이디별로 로그레벨을 변경할 수 있다.
  • 이 기능을 통해 특정 아이디만 로그레벨을 변경하여 로그를 분석하여 이슈를 보다 효율적으로 해결할 수 있다.
  • 로그 변경은 메모리에 대한 직접 접근이므로 서버를 재기동하면 특정 아이디에 대한 로그레벨에 대한 설정은 초기화된다.

파일이력조회

시스템에서 사용자가 업로드/다운로드한 파일 이력을 조회할 수 있다.

파일업로드이력

  • 시스템에서 사용자가 업로드한 파일 이력을 조회할 수 있다.

  • 프레임워크에서 제공하는 파일업로드API를 사용해야 조회가 가능하며 자세한 API 사용법은 개발가이드를 참고한다.

파일다운로드이력

  • 시스템에서 사용자가 다운로드한 파일 이력을 조회할 수 있다.
  • 프레임워크에서 제공하는 파일다운로드API를 사용해야 조회가 가능하며 자세한 API 사용법은 개발가이드를 참고한다.

로그설정관리

시스템의 로그 설정을 관리한다.

image-20200915143017617
  • 로그설정관리 메뉴에 진입하면 우선 대상 서비스 서버를 선택한다.

로거레벨 변경관리

  • 서버 재기동 없이 각각의 로거에 대한 레벨을 메모리에서 변경 할 수 있다.

  • 특정 로거의 행을 클릭하면 로그 레벨을 변경할 수 있는 팝업이 노출된다.

  • 선택한 로거에 대해서 로그 레벨을 변경할 수 있다.

Appender 목록

  • 등록된 Appender 목록을 조회한다.

기타설정

  • 로그설정 파일을 변경한다.
  • 변경된 로그 설정은 파일뿐만 아니라 메모리에도 적재되어 서버 재기동 없이 반영된다.

로그마스킹 패턴관리

로깅시 중요 정보(주민번호,비밀번호,카드번호 등)에 대해 알아볼 수 없는 형태의 데이터로 변환하는 로그마스킹 기능을 제공한다

image-20200915143208915
  • 중요정보에 해당하는 정규표현식을 시스템설정 내 패턴 관리에 추가 등록을 하거나, XML 파일 설정을 통해 로그마스킹을 처리한다.

  • 각 설정에 대한 내용은 아래와 같다.

  • 패턴명칭 : 각 정규표현식 명칭

  • 정규표현식 유무 : 정규표현식 사용 유무

  • 정규표현식 패턴 : Java에서 사용할 수 있는 문자열에 대한 정규표현식 패턴

  • 대체문자열 : 마스킹 처리된 문자열에 대한 대체 문자열

  • 실행여부 : 패턴별 마스킹 사용 여부


예외처리 관리

시스템에서 발생한 상세 예외 이력을 보여준다.

메일전송 관리

사용자들의 메일 및 SNS ID 등의 정보를 관리 할 수 있다.

image-20200915143259746
  • 예외처리전송유무 기능을 통해 사용자별로 시스템 예외 발생시 해당 내용을 메일로 발송 할 수 있다. (사전에 [시스템환경관리] 메뉴에서 예외처리 메일 사용 유무가 [예]로 설정되어 있어야 한다.)

서비스

MVC 정보

서비스에서 사용중인 URL에 대한 정보를 확인하고 각 URL에 대해서 실행/테스트를 수행할 수 있다.

image-20200915134528952
  • 셀렉트 박스에스 테스트 하고자 하는 서비스를 선택하면 해당 서비스의 URL 정보를 조회할 수 있다.

  • 특정 URL 행을 클릭하면 실행/테스트 수행을 할 수 있는 팝업이 노출된다.

    실행/테스트 버튼을 클릭하면 아래와 같이 메소드/헤더/파라미터를 설정할 수 있다.

메소드/헤더/파라미터 설정

image-20200915142346806

요청된 URL의 파라미터 타입이 map형태이기때문에 기본값으로 custom으로 설정되어 있다. 파라미터 textarea에 사용자가 원하는 대로 key, value 값을 입력해주면 된다.

image-20200915142420731

요청된 URL의 파라미터 타입이 modelAttribue로 form형태이기 때문에 기본값으로 form으로 설정되어있다. 상세에 각 파라미터 값들을 입력해주면 된다.

아래는 각 입력항목들에 대한 설명이다.

  • 헤더

  • 기본적으로 Content-Type이 설정되어 있다.

  • + 버튼으로 사용자가 원하는 헤더값을 입력하여 추가할 수 있다.

  • 파라미터

  • URL요청에서 사용할 파라미터들이 파라미터 요청 타입(form, json, custom)에 따라 기본값으로 설정되어 있고, 파라미터들의 값을 입력한다.

  • 파라미터 타입은 select box에서 form, json, custom로 선택할 수 있다. 기본값으로 URL에서 요청하고자 하는 타입으로 설정되어 있다.

  • 파라미터 타입(form, json, custom)에 맞게 데이터를 작성하면 된다. Custom의 경우 사용자 정의값으로 사용자가 key, value 값을 입력해주면 된다.

  • Method(GET, POST)를 설정한다. 초기값은 URL요청시 사용하는 Method로 설정되어 있다.

  • 메소드

  • Method(GET, POST)를 설정한다. 초기값은 URL요청시 사용하는 Method로 설정되어 있다.

서비스(URL) 실행/테스트

image-20200915142501966
  • 위에서 설정한 파라미터, 헤더값, URL Method로 요청을 수행한다.

  • 실행 및 테스트로 구분되어 있으며 차이점은 아래와 같다.

  • 실행 : 요청한 서비스에 대해 DB 트랜잭션 Commit 수행을 한다.

  • 테스트 : 요청한 서비스에 대해 DB 트랜잭션 Rollback수행을 한다.

  • [실행]과 [테스트]는 Commit과 Rollback에 대한 차이만 있기 때문에 상황에 맞는 기능을 사용하면 된다. 예를 들어 테스트 수행으로 인한 DB에 쓰레기 데이터가 쌓이는 것을 방지하고자 한다면 [실행]이 아닌 [테스트]를 수행하면 된다.


MVC 제어

서비스에서 사용중인 URL에 대한 정보를 확인하고 각 URL에 대해서 실행 제어를 할 수 있다.

image-20200915142713256
  • 셀렉트 박스에스 테스트 하고자 하는 서비스를 선택하면 해당 서비스의 URL 정보를 조회할 수 있다.
image-20200915142747973
  • 특정 URL 행을 클릭하면 URL 제어를 수행을 할 수 있는 팝업이 노출된다.

서비스(URL) 제어

image-20200915142837390
  • 서비스 URL에 승인요청을 [요청]으로 설정하였다면 관리자가 승인을 해줘야 접근이 가능하다. 기본 설정은 [없음] 상태이며 이때는 승인이 없이 접근이 가능하다. 소스에서 승인요청을 설정하는 자세한 내용은 개발가이드를 참고한다.
  • 시작일자와 종료일자 외에는 서비스를 접근할 수 없다. 기본적으로는 시작일자와 종료일자가 없다.
  • 활성 상태가 [비활성]일 경우 서비스에 접근할 수 없다.

통계

화면리소스 통계

각 메뉴화면에 대해서 수행시간 통계를 확인할 수 있다.

image-20200915143350023
image-20200915143423908
  • 메뉴 최초 진입시 메뉴트리에서 조회할 메뉴트리를 선택 한다. 그리고 조회할 기간을 선택후 조회버튼(돋보기)을 클릭하면 통계를 조회할 수 있다.

사용자환경 통계

시스템을 사용하는 사용자들의 환경을 확인할 수 있다.

  • 조회할 기간을 선택후 조회버튼(돋보기)을 클릭하면 시스템 사용자들의 브라우저, OS, 디바이스의 통계를 확인할 수 있다.

사용자상태 현황

사용자상태 현황을 확인할 수 있다.

  • [사용자관리] 메뉴를 통해 정의된 사용자상태코드에 대한 통계를 확인할 수 있다.

리소스 통계

리소스(URL)에 대한 통계를 확인할 수 있다.

image-20200915143615616
  • 조회할 기간을 선택 후 조회버튼(돋보기)을 클릭하면 특정 리소스(URL)에 대한 통계를 확인할 수 있다.

SQL 통계

시스템에서 사용한 SQL에 대한 통계를 확인할 수 있다.

image-20200915143706834
  • 조회할 DAO클래스명, SQL을 호출하는 메서드명, 기간을 선택 후 조회 버튼(돋보기)을 클릭하면 해당 SQL에 대한 통계를 확인할 수 있다.

사용자방문 통계

특정 사용자에 대한 방문 통계를 확인할 수 있다.

  • 특정 사용자 아이디와 기간을 선택 후 조회 버튼(돋보기)을 클릭하면 해당 사용자 방문에 대한 통계를 확인할 수 있다.

방문자 통계

시스템에 접속하는 전체 방문자의 통계를 확인할 수 있다.

  • 조회할 기간을 선택 후 조회버튼(돋보기)을 클릭하면 해당 기간 동안 방문한 접속 통계를 확인할 수 있다.

방문경로 통계

시스템 이용 경로에 대한 통계를 확인할 수 있다.

  • 조회할 기간을 선택 후 조회버튼(돋보기)을 클릭하면 해당 기간 동안 방문한 접속 통계를 확인할 수 있다.

예외 통계

시스템에서 발생한 예외 통계를 확인할 수 있다.

  • 조회할 기간을 선택 후 조회 버튼(돋보기)을 클릭하면 해당 기간 동안 시스템에서 발생한 예외 통계를 확인할 수 있다.

사용자환경 모니터링

세션의 정보를 기반으로 사용자들의 브라우저, OS,Device, 접속자 정보를 실시간으로 확인할 수 있다.

  • 세션 기반이기 때문에 서버 재기동, 세션Timeout, Logout등으로 세션 정보가 파기되면 정보는 초기화 된다.

테스트

서비스테스트

서비스(URL)를 검증할 수 있는 테스트케이스를 관리한다.

  • 각 테스트케이스 별로 단위 테스트를 진행 할 수 있다.

시나리오 등록

  • 테스트케이스를 작성하려면 우선 시나리오를 등록해야 한다. 테스트케이스는 각각의 등록한 시나리오의 하위 노드로 작성된다.

  • ROOT 디렉토리를 우클릭하여 New – Scenario를 클릭하면 새로운 시나리오 노드가 생성된다.

테스트케이스 등록

  • 앞서 시나리오를 등록했으면 그 하위에 테스트케이스를 등록할 수 있다.

  • 시나리오를 우클릭하여 New –TestCase를 클릭하면 새로운 테스트케이스가 생성된다.

테스트케이스 작성/실행

  • 등록한 테스트케이스에 실제로 테스트할 상세 내용을 작성한다.

  • 테스트를 작성하기 이전에 우선 select박스에서 테스트할 서비스 서버를 선택한다.

  • 각 설정별 기능은 아래와 같다.

    • 서비스 전체 보기 : 선택한 서비스 서버에서 사용하는 서비스(URL)을 목록을 보여준다. 테스트하고자 하는 서비스를 클릭하면 해당 URL이 등록된다. 또한 직접 텍스트박스에서 수정이 가능하다.

    • 실행 : 작성한 테스트케이스를 실행한다. DB 트랜잭션이 실제로 Commit된다.

    • 테스트 : 작성한 테스트케이스를 테스트한다. ‘실행’과 다르게 DB 트랜잭션이 Rollback된다.

    • 헤더/바디 : 요청한 테스트에 대한 헤더와 바디값(form,json,custom) 을 설정할 수 있다.

    assertion-1

    • ex – 응답한 데이터가 http status code 200과 일치하고 bodyContent에 hello라는 문자열을 포함하는지 검증하는 설정

    • Assertion : 기대하는 Response값을 설정할 수 있다. 저장 후 실행/테스트를 진행하면 설정한 Assertion 과 비교 후 테스트 성공/실패 여부를 확인할 수 있다. 다음과 같은 옵션으로 Assertion 설정을 할수있다.

      • statusCode : 응답한 HTTP Code를 검증한다
      • bodyContent : 응답한 Body를 검증한다.
      • header : 응답한 Header를 검증한다.
      • JsonPath : 응답한 JSON의 값을 JSONPath 표현식으로 검증한다.
      • Xpath : XML 응답의 값을 XPath 표현식으로 검증한다.
    • 저장 : 작성한 테스트케이스를 저장한다.

  • 추가 사항으로 Xpath와 JsonPath의 경우 다음과 같은 HTTP Reponse 응답이 있을 경우 검증 코드를 만드는 예시는 다음과 같다

{ "store": {
    "book": [ 
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      { "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      { "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

문법표

XPathJSONPathResult
/store/book/author$.store.book[*].authorthe authors of all books in the store
//author$..authorall authors
/store/*$.store.*all things in store, which are some books and a red bicycle.
/store//price$.store..pricethe price of everything in the store.
//book[3]$..book[2]the third book
//book[last()]$..book[(@.length-1)] $..book[-1:]the last book in order.
//book[position()<3]$..book[0,1] $..book[:2]the first two books
//book[isbn]$..book[?(@.isbn)]filter all books with isbn number
//book[price<10]$..book[?(@.price<10)]filter all books cheapier than 10
//*$..*all Elements in XML document. All members of JSON structure.
count(/store/book)$.store.book.length()count all books
assertion-2
  • 모든 author 중에 Evelyn Waugh이 존재하는지 검증한다.
response
  • 서비스 테스트의 실행 및 테스트를 누르게 되면 다음과 같이 응답 헤더와 응답 바디값을 확인할수 있으며,

    오른쪽 하단의 Show All Json Pahts 버튼을 클릭하면 아래화면과 같이 자동으로 JsonPath 값을 추출하여 Assertion에 추가할수있다.

response-2


시나리오테스트

시나리오 기반으로 일괄 테스트 기능을 제공한다.

  • 시나리오 테스트를 수행함으로써 시나리오 하위에 등록되어 있는 테스트케이스를 일괄적으로 실행(run)할 수 있다.

  • 각 시나리오마다 수동 테스트가 가능하다. ‘run’ 버튼을 클릭하면 시나리오에 정의한 테스트케이스가 순차적으로 실행되며 테스트 결과를 확인할 수 있다.

  • 테스트결과는 각 서비스테스트에 설정한 Assertion과의 비교에 의한 결과다.

시나리오 스케줄

  • 모든 시나리오를 설정한 스케줄에 의해 자동으로 테스트가 가능하다.

  • ‘스케줄’ 버튼을 클릭하면 Cron표현식으로 스케줄링을 설정할 수 있는 팝업이 노출된다.

  • 직접 Cron표현식을 작성할 수 있으며, select 박스를 통해 날짜를 설정하면 Cron표현식을 자동으로 작성해준다.

  • 스케줄링 설정이 ‘on’으로 설정되었을 경우에만 설정한 스케줄대로 자동으로 테스트를 진행한다.


시나리오이력

시나리오 테스트 수행 이력을 확인할 수 있다.

  • 확인하고자 하는 시나리오테스트를 클릭하면 시나리오의 각 테스트케이스의 성공/실패 여부를 확인할 수 있다.

  • 각 테스트케이스를 클릭하면 테스트결과 상세 이력을 확인할 수 있다.


성능테스트

시나리오 기반으로 성능 테스트 기능을 제공한다.

0
  • 기존의 시나리오 테스트의 테스트 케이스를 로드하여 부하 및 성능 테스트 진행할 수 있다.
  • 기존의 시나리오를 내장된 APACHE JMETER 실행 스크립트로 변환하여 실행 및 통계를 추출한다.

성능테스트 시나리오 등록

0-1
  • 성능 테스트케이스를 작성하려면 우선 성능테스트 시나리오를 등록해야 한다. 테스트케이스는 각각의 등록한 시나리오의 하위 노드로 작성된다.

  • ROOT 디렉토리를 우클릭하여 New – Scenario를 클릭하면 새로운 성능 테스트 시나리오 노드가 생성된다.

  • 그리고 우측 상단에 불러오기를 클릭하면 아래와 같이 서비스 테스트 시나리오 목록 불러오기 창이 열립니다

1
  • 그리고 우측 상단에 불러오기를 클릭하면 아래와 같이 서비스 테스트 시나리오 목록 불러오기 창이 열립니다.
0-2
  • 불러온 테스트 케이스는 앞에서 생성한 성능 테스트 시나리오 노드 밑에 속하게 되고 성능 테스트는 시나리오 기반으로 실행할 수 있다.

성능테스트 시나리오 시행

0-3
  • 이제 성능테스트 시나리오 노드를 선택하면 오른쪽 실행 화면에서 실행이 가능하다.

  • 각 버튼의 기능은 아래와 같다.

    • 수행 : 성능 테스트케이스를 실행한다. 수행한 성능 테스트는 이력을 남기고 성능테스트 이력페이지에서 조회가 가능하다.
    • 테스트 : 성능 테스트를 실행만하며 이력을 남기지 않는다.
    • 추출 : 성능 테스트 시나리오를 Apache Jmeter 스크립트인 JMX 파일 형태로 변환하여 내려받는다. (Jmeter에서 불러오기 실행이 가능하다)
    • 저장 : 현재 설정과 시나리오를 저장한다.
  • 성능 테스트 시나리오 실행의 설정 조건은 다음과 같다.

    • 사용자수: 성능테스트에서 가정하는 동시 접속 사용자 수 (쓰레드 수)

    • 부하 타입: 몇번의 부하를 줄것인지 몇 초 동안 부하를 발생시킬것인지 선택하는 설정

    • 부하 수치 : 부하 타입을 설정한 후 횟수 및 시간을 정하는 값

      • ex : 부하타입 -> 횟수, 부하 수치 -> 10 => 10회 부하 발생
      • ex : 부하타입 -> 시간, 부하 수치 -> 10 => 10초 동안 부하 발생
    • 기대 TPS : 기대되는 처리량

    • 성능 테스트 수행을 클릭하면 아래와 같이 성능 테스트를 수행한다.

0-4
  • 성능 테스트 케이스에서는 각 API 별 테스트 정보들을 표로 확인할수 있다

  • 성능 테스트 실시간 그래프에서는 처리량을 그래프로 확인할수 있다.

  • 맨 우측의 성능테스트 모듈 상태에서는 현재 실행중인 상태를 확인하거나 실행 정지 명령을 내릴수있다.

  • 우측 최상단의 스케줄 버튼의 경우 기존 시나리오 테스트와 동일하게 스케줄 기반으로 성능 테스트가 가능하다.

3

성능테스트 이력

성능 테스트 수행 이력을 확인할 수 있다.

performance_history-1
  • 확인하고자 하는 성능 테스트 이력을 좌측 메뉴에서 클릭하면 우측 메뉴에서 apache jmeter dashboard를 확인할수 있다.

  • apache jmeter dashboard 각종 테스트 정보는 아래에서 설명한다,

Apdex (Application Performance Index) 테이블과 성공 및 실패 요청 (트랜잭션 컨트롤러 샘플 결과는 고려되지 않음) 비율을 보여주는 요청 요약 그래프 :

report_apdex_and_summary

구성 가능한 백분위수 3개를 포함한 트랜잭션당 모든 메트릭의 요약을 제공하는 통계 테이블 :

report_statistics

전체 요청에서 모든 오류와 해당 오류의 비율을 요약한 오류 테이블 :

report_errors

모든 샘플러 (기본적으로 트랜잭션 컨트롤러 제외)에서 상위 5 개 오류 정보를 제공하는 테이블 :

top_5_errors_by_sampler

시간 경과에 따른 응답 시간 (트랜잭션 컨트롤러 샘플 결과 포함) :

report_response_times_over_time

시간 경과에 따른 응답 시간 백분위 수 (성공적인 응답 만 해당) :

response_time_percentiles_over_time

시간 경과에 따른 활성 스레드 :

report_active_threads_over_time

시간 경과에 따른 바이트 처리량 (트랜잭션 컨트롤러 샘플 결과 무시) :

report_bytes_throughput_over_time

시간 경과에 따른 지연 (트랜잭션 컨트롤러 샘플 결과 포함) :

report_latencies_over_time

시간 경과에 따른 연결 시간 (트랜잭션 컨트롤러 샘플 결과 포함) :

report_connect_time_over_time

초당 HIT(트랜잭션 컨트롤러 샘플 결과 무시) :

report_codes_per_second

초당 트랜잭션 (트랜잭션 컨트롤러 샘플 결과 포함) :

report_transactions_per_second

응답 시간과 초당 요청 (트랜잭션 컨트롤러 샘플 결과 무시) :

report_response_time_vs_request

지연 시간과 초당 요청 (트랜잭션 컨트롤러 샘플 결과 무시) :

report_response_time_vs_request

응답 시간 개요 (트랜잭션 컨트롤러 샘플 결과 제외) :

response_time_overview

응답 시간 백분위 수 (트랜잭션 컨트롤러 샘플 결과 포함) :

report_response_time_percentiles

시간 대 스레드 (트랜잭션 컨트롤러 샘플 결과 포함) :

report_time_vs_threads

응답 시간 분포 (트랜잭션 컨트롤러 샘플 결과 포함) :

report_response_time_distribution

모니터링

X-Log(Scouter)

실시간으로 트랜잭션 분석 기능을 제공한다.

image-20200915143955326
  • Scouter(APM)에서 제공하는 WEB API를 이용하여 X-Log 기능을 제공한다.

  • X-Log: transacton log 라는 의미로 응답시간 분포 그래프

  • X-Log를 통해 전체 트랜잭션을 파악 후 느린 트랜잭션 선별 가능하다.

  • X-Log 그래프에서 마우스 드래그를 통해 특정 트랜잭션 영역 선택하면 화면 아래에 이에 해당하는 X-Log 목록과 상세 내용이 나타난다.
  • 특정 트랜잭션의 행을 클릭하면 보다 상세한 내용이 팝업으로 노출된다.

통합모니터링

Scouter(APM)에서 제공하는 WEB API를 이용하여 각 Server(OS), Web, DataSource별로 통합모니터링이 기능을 제공한다.

image-20200915144104891
  • 메뉴 최초 진입시 모니터링 대상을 선택한다.
  • CPU, MEM 등의 Server 사용량과 네트워크 사용량, Web 자원 사용량 등을 실시간으로 볼 수 있다.

스프링 부트 어드민

캐모마일 2.0.3 버젼 부터는 스프링 부트 어드민을 자체적으로 내장하여 지원한다.

스프링 부트 어드민 접속하기

캐모마일 어드민의 접속시 오른쪽 상단 ‘Spring Boot Admin’ 링크를 클릭하여 spring boot admin에 접속이 가능하다.

sba

기본 기능

스프링 부트 어드민 페이지에서는 대시보드, 애플리케이션, 일지 등으로 구성되어 있다.

spring-boot-admin-dashboard
  • 대시보드 – 육각형의 모양으로 실제 인스턴스들의 상태를 확인할 수 있다.
spring-boot-admin-app
  • 애플리케이션 – 어플리케이션 별 인스턴스 별 상태를 확인할 수 있으며 검색 기능을 제공한다.
spring-boot-admin-journal
  • 일지(journal) – 각 시간별로 로그를 확인할 수 있다.

인스턴스 페이지

대시보드에서 육각형 모양의 인스턴스를 클릭시 인스턴스 페이지에 접속이 가능하다.

인스턴스 페이지에서는 다음의 정보들을 확인할 수 있다.

sba01
  • 인스턴스 페이지에서는 위와 같이 메타데이터, 프로세스, 스레드, 메모리 힙 등의 정보를 모니터링 할 수 있다.
sba014
  • 각종 프로퍼티 정보를 확인할 수 있다.
sba013
  • 등록된 빈 정보를 확인할 수 있다.
sba03
  • 쓰레드 덤프 정보를 확인할 수 있다.
sba04
  • 등록된 빈 정보를 확인할 수 있다.
이전 Web 설치 가이드