본 문서(Pinpoint 서비스팩 설치 가이드)는 전자정부표준프레임워크 기반의 PaaS-TA에서 제공되는 서비스팩인 Pinpoint 서비스팩을 Bosh2.0을 이용하여 설치 하는 방법과 PaaS-TA의 SaaS 형태로 제공하는 Application 에서 Pinpoint 서비스를 사용하는 방법을 기술하였다. PaaS-TA 3.5 버전부터는 Bosh2.0 기반으로 deploy를 진행하며 기존 Bosh1.0 기반으로 설치를 원할경우에는 PaaS-TA 3.1 이하 버전의 문서를 참고한다.
1.2. 범위
설치 범위는 Pinpoint 서비스팩을 검증하기 위한 기본 설치를 기준으로 작성하였다.
1.3. 시스템 구성도
본 문서의 설치된 시스템 구성도이다. Pinpoint Server, HBase의 HBase Master2, HBase Slave2, Collector 2, Pinpoint 서비스 브로커, WebUI3로 최소사항을 구성하였다.
본 설치 가이드는 Linux 환경에서 설치하는 것을 기준으로 하였다. 서비스 설치를 위해서는 BOSH 2.0과 PaaS-TA 5.0 이상, PaaS-TA 포털이 설치되어 있어야 한다.
bosh runtime-config를 확인하여 bosh-dns include deployments 에 pinpoint가 있는지 확인한다.
※ bosh-dns include deployments에 pinpoint가 없다면 ~/workspace/paasta-5.5.1/deployment/paasta-deployment/bosh/runtime-configs 의 dns.yml 을 열어서 pinpoint를 추가하고, bosh runtime-config를 업데이트 해준다.
Stemcell 목록을 확인하여 서비스 설치에 필요한 Stemcell이 업로드 되어 있는 것을 확인한다. (PaaS-TA 5.5.1 과 동일 stemcell 사용)
$ bosh -e micro-bosh stemcells
Using environment '10.0.1.6' as client 'admin'
Name Version OS CPI CID
bosh-aws-xen-hvm-ubuntu-xenial-go_agent 621.94* ubuntu-xenial - ami-0297ff649e8eea21b
(*) Currently deployed
1 stemcells
Succeeded
2.3. Deployment 다운로드
서비스 설치에 필요한 Deployment를 Git Repository에서 받아 서비스 설치 작업 경로로 위치시킨다.
# Deployment 다운로드 파일 위치 경로 생성 및 설치 경로 이동
$ mkdir -p ~/workspace/paasta-5.5.1/deployment
$ cd ~/workspace/paasta-5.5.1/deployment
# Deployment 파일 다운로드
$ git clone https://github.com/PaaS-TA/service-deployment.git -b v5.0.6
2.4. Deployment 파일 수정
BOSH Deployment manifest는 Components 요소 및 배포의 속성을 정의한 YAML 파일이다. Deployment 파일에서 사용하는 network, vm_type, disk_type 등은 Cloud config를 활용하고, 활용 방법은 BOSH 2.0 가이드를 참고한다.
$ vi ~/workspace/paasta-5.5.1/deployment/service-deployment/pinpoint/vars.yml
# STEMCELL
stemcell_os: "ubuntu-xenial" # stemcell os
stemcell_version: "621.94" # stemcell version
# NETWORK
private_networks_name: "default" # private network name
public_networks_name: "vip" # public network name
# H_MASTER
master_azs: [z3] # h_master azs
master_instances: 1 # h_master instances (default : 1)
master_vm_type: "large" # h_master vm type
master_persistent_disk_type: "30GB" # h_master persistent disk type
master_pem_ssh: false # h_master pem ssh (default : false)
master_replication: 1 # h_master replication (default : 1)
master_tcp_listen_port: 29994 # h_master tcp listen port (default : 29994)
# COLLECTOR
collector_azs: [z3] # collector azs
collector_instances: 1 # collector instances (default : 1)
collector_vm_type: "large" # collector vm type
collector_persistent_disk_type: "30GB" # collector persistent disk type
collector_tcp_port: 29994 # collector tcp listen port (default : 29994)
collector_stat_port: 29995 # collector stat port (default : 29995)
collector_span_port: 29996 # collector span port (default : 29996)
# PINPOINT_WEB
pinpoint_azs: [z3] # pinpoint azs
pinpoint_instances: 1 # pinpoint instances (default : 1)
pinpoint_vm_type: "large" # pinpoint vm type
pinpoint_persistent_disk_type: "30GB" # pinpoint persistent disk type
# BROKER
broker_azs: [z3] # broker azs
broker_instances: 1 # broker instances (default : 1)
broker_vm_type: "large" # broker vm type
broker_persistent_disk_type: "30GB" # broker persistent disk type
# HAPROXY_WEBUI
webui_azs: [z7] # webui azs
webui_instances: 1 # webui instances (default : 1)
webui_vm_type: "large" # webui vm type
webui_persistent_disk_type: "30GB" # webui persistent disk type
webui_haproxy_public_ip: "<WEB_UI_PUBLIC_IP>" # webui haproxy's public IP
#PROPERTIES
resource_tracker_port: 8025 # resource tracker port (default : 8025)
scheduler_port: 8030 # scheduler port (default : 8030)
resourcemanager_port: 8040 # resourcemanager port (default : 8040)
2.5. 서비스 설치
서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정하고, Option file을 추가할지 선택한다.
(선택) -o operations/use-compiled-releases.yml (ubuntu-xenial/621.94로 컴파일 된 릴리즈 사용)
$ vi ~/workspace/paasta-5.5.1/deployment/service-deployment/pinpoint/deploy.sh
#!/bin/bash
# VARIABLES
COMMON_VARS_PATH="<COMMON_VARS_FILE_PATH>" # common_vars.yml File Path (e.g. ../../common/common_vars.yml)
CURRENT_IAAS="${CURRENT_IAAS}" # IaaS Information (PaaS-TA에서 제공되는 create-bosh-login.sh 미 사용시 aws/azure/gcp/openstack/vsphere 입력)
BOSH_ENVIRONMENT="${BOSH_ENVIRONMENT}" # bosh director alias name (PaaS-TA에서 제공되는 create-bosh-login.sh 미 사용시 bosh envs에서 이름을 확인하여 입력)
# DEPLOY
bosh -e ${BOSH_ENVIRONMENT} -n -d pinpoint deploy --no-redact pinpoint.yml \
-o operations/${CURRENT_IAAS}-network.yml \
-l ${COMMON_VARS_PATH} \
-l vars.yml \
-l operations/pem.yml
서비스를 설치한다.
$ cd ~/workspace/paasta-5.5.1/deployment/service-deployment/pinpoint
$ sh ./deploy.sh
2.6. 서비스 설치 - 다운로드 된 PaaS-TA Release 파일 이용 방식
서비스 설치에 필요한 릴리즈 파일을 다운로드 받아 Local machine의 서비스 설치 작업 경로로 위치시킨다.
# 릴리즈 다운로드 파일 위치 경로 생성
$ mkdir -p ~/workspace/paasta-5.5.1/release/service
# 릴리즈 파일 다운로드 및 파일 경로 확인
$ ls ~/workspace/paasta-5.5.1/release/service
paasta-pinpoint-release.tgz
서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정하고 Option file 및 변수를 추가한다.
서비스브로커 이름 : 서비스브로커 관리를 위해 PaaS-TA에서 보여지는 명칭이다. 서비스 Marketplace에서는 각각의 API 서비스 명이 보여지니 여기서 명칭은 서비스브로커 명칭이다.
서비스브로커 사용자ID / 비밀번호 : 서비스팩에 접근할 수 있는 사용자 ID입니다. 서비스브로커도 하나의 API 서버이기 때문에 아무나 접근을 허용할 수 없어 접근이 가능한 ID/비밀번호를 입력한다.
서비스브로커 URL : 서비스브로커가 제공하는 API를 사용할 수 있는 URL을 입력한다.
Creating service broker pinpoint-service-broker as admin...
OK
등록된 Pinpoint 서비스 브로커를 확인한다.
$ cf service-brokers
Getting service brokers as admin...
name url
pinpoint-service-broker http://URL(IP):8080
접근 가능한 서비스 목록을 확인한다.
$ cf service-access
Getting service access as admin...
broker: Pinpoint-service-broker
service plan access orgs
Pinpoint Pinpoint\_standard none
서비스 브로커 생성시 디폴트로 접근을 허용하지 않는다.
특정 조직에 해당 서비스 접근 허용을 할당하고 접근 서비스 목록을 다시 확인한다. (전체 조직)
$ cf enable-service-access Pinpoint
Enabling access to all plans of service Pinpoint for all orgs as admin...
OK
서비스 접근 허용을 확인한다.
$ cf service-access
Getting service access as admin...
broker: Pinpoint-service-broker
service plan access orgs
Pinpoint Pinpoint\_standard all
3.2. Sample Web App 구조
Sample Web App은 PaaS-TA에 App으로 배포가 된다. 배포된 App에 Pinpoint 서비스 Bind 를 통하여 초기 데이터를 생성하게 된다. 바인드 완료 후 연결 url을 통하여 브라우저로 해당 App에 대한 Pinpoint 서비스 모니터링을 할 수 있다.
Spring-music App을 이용하여 Pinpoint 모니터링을 테스트 하였다.
앱을 다운로드 후 –b 옵션을 주어 buildpack을 지정하여 push 해 놓는다.
$ cf push -b java_buildpack_pinpoint --no-start
Using manifest file /home/ubuntu/workspace/bd_test/spring-music/manifest.yml
Creating app spring-music-pinpoint in org org / space space as admin...
OK
Creating route spring-music-pinpoint.monitoring.open-paas.com...
OK
Binding spring-music-pinpoint.monitoring.open-paas.com to spring-music-pinpoint...
OK
Uploading spring-music-pinpoint...
Uploading app files from: /tmp/unzipped-app175965484
Uploading 21.2M, 126 files
Done uploading
OK
$ cf apps
Getting apps in org org / space space as admin...
OK
name requested state instances memory disk urls
php-demo started 1/1 256M 1G php-demo.monitoring.open-paas.com
spring-music stopped 0/1 512M 1G spring-music.monitoring.open-paas.com
spring-music-pinpoint stopped 0/1 512M 1G spring-music-pinpoint.monitoring.open-paas.com
3.3. PaaS-TA에서 서비스 신청
Sample Web App에서 Pinpoint 서비스를 사용하기 위해서는 서비스 신청(Provision)을 해야 한다.
*참고: 서비스 신청시 PaaS-TA에서 서비스를 신청 할 수 있는 사용자로 로그인이 되어 있어야 한다.
먼저 PaaS-TA Marketplace에서 서비스가 있는지 확인을 한다.
$ cf marketplace
Getting services from marketplace in org org / space space as admin...
OK
service plans description
Pinpoint Pinpoint_standard A simple pinpoint implementation
Marketplace에서 원하는 서비스가 있으면 서비스 신청(Provision)을 하여 서비스 인스턴스를 생성한다.
$ cf create-service {서비스명} {서비스플랜} {내서비스명}
서비스명 : p-Pinpoint로 Marketplace에서 보여지는 서비스 명칭이다.
서비스플랜 : 서비스에 대한 정책으로 plans에 있는 정보 중 하나를 선택한다. Pinpoint 서비스는 10 connection, 100 connection 를 지원한다.
내서비스명 : 내 서비스에서 보여지는 명칭이다. 이 명칭을 기준으로 환경설정정보를 가져온다.
Creating service instance PS1 in org org / space space as admin...
OK
생성된 Pinpoint 서비스 인스턴스를 확인한다.
$ cf services
Getting services in org org / space space as admin...
OK
name service plan bound apps last
PS1 Pinpoint Pinpoint_standard create succeeded pinpoint-service-broker
3.4. Sample Web App에 서비스 바인드 신청 및 App 확인
서비스 신청이 완료되었으면 Sample Web App 에서는 생성된 서비스 인스턴스를 Bind 하여 App에서 Pinpoint 서비스를 이용한다.
*참고: 서비스 Bind 신청시 PaaS-TA 플랫폼에서 서비스 Bind신청 할 수 있는 사용자로 로그인이 되어 있어야 한다.
Sample Web App에서 생성한 서비스 인스턴스 바인드 신청을 한다.
서비스 인스턴스 확인
$ cf s
Getting services in org org / space space as admin...
OK
name service plan bound apps last
PS1 Pinpoint Pinpoint_standard create
my_rabbitmq_service p-rabbitmq standard create succeeded rabbitmq-service-broker
Binding service PS1 to app spring-music-pinpoint in org org / space space as admin...
OK
TIP: Use 'cf restage spring-music-pinpoint' to ensure your env variable changes take effect