PaaS-TA-5.5.0
Search…
Metering 설치 가이드

Table of Contents

Deprecated

※ 본 문서는 PaaS-TA 5.0 이하의 버전까지 지원한다.

1. 문서 개요

본 문서(node.js API 서비스 미터링 애플리케이션 개발 가이드)는 파스-타 플랫폼 프로젝트의 미터링 플러그인과 Node.js API 애플리케이션과 연동하여 API 서비스를 미터링하는 방법에 대해 기술 하였다.

1.1 범위

본 문서의 범위는 파스-타 플랫폼 프로젝트의 Node.js API 서비스 애플리케이션 개발과 CF-Abacus 연동에 대한 내용으로 한정되어 있다. (CF-Abacus 1.1.5 작성됨)
1
참고 자료
2
- https://github.com/cloudfoundry-incubator/cf-abacus
Copied!

2. Abacus 배포

2.1 배포 전제 조건

이 가이드는 ubuntu16.04 및 로컬 설치를 기준으로 작성되어 있다.
  • Paas-TA가 로컬에 설치 되어 있어야 한다.
  • CF가 로컬에 설치 되어 있어야 한다.
  • CF-Cli 가 로컬에 설치 되어 있어야 한다.
  • 설치 패키지가 로컬에 설치 되어 있어야 한다.

2.2 필수 프로그램 설치

</br>
  • Node.js와 npm은 같이 설치된다
  • CF-Abacus 1.1.5 기준으로 node =>8.1.0 이상
이름
버전
NPM
8.10.0 이상, 9.0.0 이하
Node.js
5.0.0 이하
Yarn
1.2.1 이상
</br>

2.3 Cf-Abacus 다운로드

1
$ wget https://github.com/cloudfoundry-incubator/cf-abacus/archive/v1.1.5.tar.gz
2
$ tar -xvf v1.1.5.tar.gz
Copied!

2.4 Node.js 설치 순서

1
$ sudo apt-get install curl
Copied!
1
## Node.js version 8.x를 설치할 경우
2
## Source Repository 등록
3
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Copied!
1
## Node.js & Npm 설치
2
$ sudo apt-get install -y nodejs
3
$ sudo npm install -g [email protected]
Copied!
1
## Yarn Source Repository
2
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
3
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
Copied!
1
# Yarn 설치
2
$ sudo apt-get update && sudo apt-get install yarn
Copied!

2.3 MongoDB,RabbitMQ 설치

※ abacus 데이터 저장소로 MongoDB를 사용하며, RabbitMQ를 통하여, 메시지 분산처리를 지원한다. ※ abacus 데모를 실행하기 위해서는 MongoDB, RabbitMQ를 설치 해야 한다. ※ CF-Abacus 1.1.5부터는 Docker를 사용하여, 별도의 설정없이 MongoDB, RabbitMQ 설치를 지원한다.
Docker 설치
1
## Docker Engine 설치
2
$ curl -fsSL https://get.docker.com/ | sudo sh
3
$ sudo addgroup --system docker
4
$ sudo adduser $USER docker
5
$ newgrp docker
6
$ docker info
7
8
## 다음과 같이 동작시 정상설치됨
Copied!
1
## Docker-Compose 설치
2
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
3
$ sudo chmod +x /usr/local/bin/docker-compose
4
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
5
$ docker-compose --version
6
## 다음과 같이 동작시 정상설치됨
Copied!
MongoDB , RabbitMQ 실행
1
## docker-compose.yml 위치로 이동
2
$ cd cf-abacus-1.1.5
3
## Docker 실행
4
$ docker-compose up
5
## 다음과 같이 실행 될 경우 정상 동작됨
Copied!

2.4 UAA 계정 등록

CF 설치한 abacus에서 CF의 앱 사용량 정보를 수집하기 위해서 CF 접근을 위한 계정 및 토큰을발급 받아야 한다. 또한 보안 모드로 abacus를 배포한 경우, abacus 컴포넌트간의 데이터 전송을 위한 계정을 등록해야 한다.
UAA 클라이언트 설치
1
$ gem install cf-uaac
Copied!
CF-Abacus 설치를 위한 Token 추출
1
## CF target 설정
2
$ uaac target uaa.<CF 도메인> --skip-ssl-validation
3
4
예) $ uaac target uaa.bosh-lite.com --skip-ssl-validation
5
예) $ uaac target https://api.54.180.192.54.xip.io--skip-ssl-validation
6
7
## uaac client 토큰 취득
8
$ uaac token client get <uaac user id> -s <uaac user password>
9
예) $ uaac token client get admin -s admin-secret
10
##UAA JWTKEY 추출
11
$ uaac signing key
12
kty: RSA
13
e: AQAB
14
use: sig
15
kid: key-1
16
alg: RS256
17
value: -----BEGIN PUBLIC KEY-----
18
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvSCv3ZJDcGovLS5PPk1+
19
YvAzDMOi0ULBrI/3g59XxgHGaRW1kF9nf1+RUnBYbO0rVw0HyENIz1JBt3Bo0pSc
20
gyiwG94kpjx5v0qVQ4qYxK3fxN+/UrY09w8Zny/uW/Bh/oKfY/5J0EPyJxs6fSwX
21
dmfEvu7aohzKypsRBRLy0Vusx3/XO8noA21n8o08g2rbekpMJW+C8CbAXXM0AxQ3
22
9Oz/fem9/TF0NlacPxJQc+WMCYRLt9BHl16TnZiR/yze08s2CFxfFPWJNvNrmpuW
23
INRpfDg6CIXczsav1LBBinrjWOTEQqgK+FPxu1iEwUu1/cYCEo4H7F1gHuUOqgQ5
24
5wIDAQAB
25
-----END PUBLIC KEY-----
26
n: AL0gr92SQ3BqLy0uTz5NfmLwMwzDotFCwayP94OfV8YBxmkVtZBfZ39fkVJwWGztK1cNB8hDSM9SQbdwaNKUnIMosBveJKY8eb9KlUOKmMSt38Tfv1K2NPcPGZ8v7lvwYf6Cn2P-SdBD8icbOn0sF3ZnxL7u2qIcysqbEQUS8tFbrMd_1zvJ6ANtZ_
27
KNPINq23pKTCVvgvAmwF1zNAMUN_Ts_33pvf0xdDZWnD8SUHPljAmES7fQR5dek52Ykf8s3tPLNghcXxT1iTbza5qbliDUaXw4OgiF3M7Gr9SwQYp641jkxEKoCvhT8btYhMFLtf3GAhKOB-xdYB7lDqoEOec
28
29
Value에 있는값을 추출하여, 별도의 파일에 저장한다.
30
31
## 파일 생성 및 저장 방법
32
$ cd cf-abacus-1.1.5
33
$ vim jwtkey.pem
34
-----BEGIN PUBLIC KEY-----
35
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvSCv3ZJDcGovLS5PPk1+
36
YvAzDMOi0ULBrI/3g59XxgHGaRW1kF9nf1+RUnBYbO0rVw0HyENIz1JBt3Bo0pSc
37
gyiwG94kpjx5v0qVQ4qYxK3fxN+/UrY09w8Zny/uW/Bh/oKfY/5J0EPyJxs6fSwX
38
dmfEvu7aohzKypsRBRLy0Vusx3/XO8noA21n8o08g2rbekpMJW+C8CbAXXM0AxQ3
39
9Oz/fem9/TF0NlacPxJQc+WMCYRLt9BHl16TnZiR/yze08s2CFxfFPWJNvNrmpuW
40
INRpfDg6CIXczsav1LBBinrjWOTEQqgK+FPxu1iEwUu1/cYCEo4H7F1gHuUOqgQ5
41
5wIDAQAB
42
-----END PUBLIC KEY-----
43
:wq
44
저장한다.
Copied!
CF-Abacus 설치를 위한 UAA 클라이언트
1
## 미터링 자원 사용량 정보에 대한 abacus 접근 권한을 UAA에 등록
2
$ uaac client add abacus --name <ClientID> --secret <ClientSecret> \
3
--authorized_grant_types client_credentials \
4
--authorities abacus.usage.write,abacus.usage.read,abacus.usage.linux-container.write,abacus.usage.linux-container.read,abacus.system.read,openid,coud_controller_service_permissions.read,cloud_controller.read,cloud_controller.admin,abacus.usage.sampler.write,reporting.agent.write,clients.admin \
5
--scope abacus.usage.write,abacus.usage.read,abacus.usage.linux-container.write,abacus.usage.linux-container.read,abacus.system.read,openid,cloud_controller_service_permissions.read,cloud_controller.read,cloud_controller.admin,abacus.usage.sampler.write,reporting.agent.write,clients.admin
6
예)
7
$ uaac client add abacus --name abacus --secret abacus-secret \
8
--authorized_grant_types client_credentials \
9
--authorities abacus.usage.write,abacus.usage.read,abacus.usage.linux-container.write,abacus.usage.linux-container.read,abacus.system.read,openid,cloud_controller_service_permissions.read,cloud_controller.read,cloud_controller.admin,abacus.usage.sampler.write,reporting.agent.write,clients.admin \
10
--scope abacus.usage.write,abacus.usage.read,abacus.usage.linux-container.write,abacus.usage.linux-container.read,abacus.system.read,openid,cloud_controller_service_permissions.read,cloud_controller.read,cloud_controller.admin,abacus.usage.sampler.write,reporting.agent.write,clients.admin
11
12
## Abacus Broker 권한을 UAA에 등록
13
$ uaac client add <ClientID> -s <ClientSecret> \
14
--authorities reporting.agent.write,abacus.usage.write,clients.admin \
15
--scope reporting.agent.write,abacus.usage.write,clients.admin \
16
--authorized_grant_types client_credentials
17
예)
18
$uaac client add abacus-broker -s abacus-secret \
19
--authorities reporting.agent.write,abacus.usage.write,clients.admin \
20
--scope reporting.agent.write,abacus.usage.write,clients.admin \
21
--authorized_grant_types client_credentials
22
23
## Abacus-Service-Dashboard용 클라이언트 등록
24
uaac client add <ClientID> -s <ClientSecret> #
25
--authorized_grant_types authorization_code,refresh_token --redirect_uri ‘<DashboardURL>/manage/instance/*’
26
--authorities abacus.usage.read,abacus.usage.write,uaa.none
27
--scope openid,cloud_controller_service_permissions.read,cloud_controller.read,abacus.usage.read,abacus.usage.write
28
예)
29
$ uaac client add abacus-service-dashboard -s abacus-secret --authorized_grant_types authorization_code,refresh_token --redirect_uri 'http://abacus-service-dashboard.115.68.46.188.xip.io/manage/instances/* https://abacus-service-dashboard.115.68.46.188.xip.io/manage/instances/*' --authorities abacus.usage.read,abacus.usage.write,uaa.none --scope openid,cloud_controller_service_permissions.read,cloud_controller.read,abacus.usage.read,abacus.usage.write
Copied!

2.5. Abacus 배포를 위한 조직 및 영역 설정

1
## CF target 설정
2
3
$ cf api https://api.<CF 도메인> --skip-ssl-validation
4
예) $ cf api https://api.bosh-lite.com --skip-ssl-validation
Copied!
1
## CF 로그인
2
3
$ cf login
Copied!
1
## 조직 생성 및 설정
2
3
$ cf create-org <조직>
4
$ cf target -o <조직>
Copied!
1
## 영역 생성 및 설정
2
3
$ cf create-space <영역>
4
$ cf target -o <조직> -s <영역>
Copied!

2.6. cf-abacus 배포

Abacus 기능 개요
형상
설명
abacus-usage-collector
CF 앱 사용량 수집기
abacus-usage-reporting
Abacus가 수집/집계한 미터링 정보에 사용자의 요청에 맞게 보고한다.
abacus-usage-meter
수집한 CF 앱 사용량의 집계를 위해 미터링 정보를 가공한다.
abacus-usage-accumulator
수집한 CF 앱 사용량 정보를 계정/조직/영역/앱 별로 누적한다.
abacus-usage-aggregator
누적한 CF 앱 사용량 정보를 계정/조직/영역/앱 별로 집계한다.
abacus-service-bridge
CF와 연동하여 서비스 사용량 정보를 수집한다.
abacus-application-bridge
CF와 연동하여 앱의Container 사용량 정보를 수집한다.
abacus-provisioning-plugin
Abacus의 각 기능에서 수집/누적/집계에 필요한 메타 정보를 제공한다.
abacus-account-plugin
앱의 계정 정보 조회 및 유효성 체크를 수행한다.
abacus-eureka-plugin
Netflix의 Eureka 시스템과 연동하여 Abacus 앱의 분산 처리 서비스를 제공한다.
abacus-cf-renewer
수집된 데이터를 날짜 유형으로 데이터를 이관한다.
abacus-broker
수집/누적/집계에 필요한 메타 정보를 입력할 수 UI 서비스를 제공하는 브로커이다.
abacus-services-dashboard
수집/누적/집계에 필요한 메타 정보를 입력할 수 UI 서비스이다.
abacus-healthchecker
Abacus 서비스들의 상태를 체크한다.
abacus-housekeeper
Abacus 서비스들의 상태를 관리한다.
wget을 통해 CF-Abacus를 다운 받는다.
1
$ wget https://github.com/cloudfoundry-incubator/cf-abacus/archive/v1.1.5.tar.gz
2
$ tar -xvf v1.1.5.tar.gz
3
## Abacus를 빌드하기 위해서는 Node.js 및 Npm을 사전에 설치해야 한다.
Copied!
Abacus와 연동할 DB 및 Secure 정보 설정
1
Abacus 설정정보를 리눅스 export 기능을 설정한다.
2
3
## Export
4
# Common
5
export ABACUS_PREFIX="" #abacus를 설치할때 설치명에 추가적으로 이름을 붙여 배포할수 있다.
6
export CF_SYS_DOMAIN=<도메인 #CF의 도메인
7
export AUTH_SERVER=https://api.<도메인> #CF API 주소
8
export XSUAA_URL=https://uaa.<도메인> #CF UAA 주소
9
export HYSTRIX_CLIENT_ID="abacus" #abacus hytrix 계정 (임의값 설정)
10
export HYSTRIX_CLIENT_SECRET="abacus-secret" #abacus hytrix 패스워드 (임의값 설정)
11
export SYSTEM_CLIENT_ID="abacus" #abacus에서 CF와 통신을 위한 Client ID (2.4.2 설정한 미터링 Client)
12
export SYSTEM_CLIENT_SECRET="abacus-secret" #abacus에서 CF와 통신을 위한 Client 패스워드 (2.4.2 설정한 미터링 Client 패스워드)
13
export CLIENT_ID="abacus" #abacus에서 CF와 통신을 위한 Client ID (2.4.2 설정한 미터링 Client)
14
export CLIENT_SECRET="abacus-secret" #abacus에서 #abacus에서 CF와 통신을 위한 Client 패스워드 (2.4.2 설정한 미터링 Client 패스워드)export RENEWER_CLIENT_ID="abacus" #abacus에서 CF와 통신을 위한 Client ID (2.4.2 설정한 미터링 Client)
15
export RENEWER_CLIENT_SECRET="abacus-secret" #abacus에서 CF와 통신을 위한 Client 패스워드 (2.4.2 설정한 미터링 Client 패스워드)
16
export BRIDGE_CLIENT_ID="abacus" #abacus에서 CF와 통신을 위한 Client ID (2.4.2 설정한 미터링 Client)
17
export BRIDGE_CLIENT_SECRET="abacus-secret" #abacus에서 CF와 통신을 위한 Client 패스워드 (2.4.2 설정한 미터링 Client 패스워드)
18
export SERVICE_BRIDGE_CLIENT_ID="abacus" #abacus에서 CF와 통신을 위한 Client 패스워드 (2.4.2 설정한 미터링 Client 패스워드)
19
export SERVICE_BRIDGE_CLIENT_SECRET="abacus-secret" #abacus에서 CF와 통신을 위한 Client 패스워드 (2.4.2 설정한 미터링 Client 패스워드)
20
export XSUAA_CLIENT_ID="abacus" #abacus에서 CF와 통신을 위한 Client ID (2.4.2 설정한 미터링 Client)
21
export XSUAA_CLIENT_SECRET="abacus-secret" #abacus에서 CF와 통신을 위한 Client 패스워드 (2.4.2 설정한 미터링 Client 패스워드)
22
export XSUAA_TENANT_BACKEND=
23
export SECURED=true #기본설정
24
export SKIP_SSL_VALIDATION=true #SSL을 사용할경우 설정
25
export JWTALGO=RS256 #
26
export JWTKEY=$(cat jwtkey.pem) #2.4.2에서 저장한 JWTKEY 위치 지정
27
export RABBIT_URI=amqp://<docker서버 IP>:5672 # 2.3.2를 실행한 서버 IP주소
28
export DB_BRIDGE_URI=mongodb://<docker서버 IP>:27017 # 2.3.2를 실행한 서버 IP주소
29
export DB_ACCUMULATOR_URI=mongodb://<docker서버 IP>:27017 # 2.3.2를 실행한 서버 IP주소
30
export DB_AGGREGATOR_URI=mongodb://<docker서버 IP>:27017 # 2.3.2를 실행한 서버 IP주소
31
export DB_COLLECTOR_URI=mongodb://<docker서버 IP>:27017 # 2.3.2를 실행한 서버 IP주소
32
export DB_METER_URI=mongodb://<docker서버 IP>:27017 # 2.3.2를 실행한 서버 IP주소
33
export DB_PLUGINS_URI=mongodb://<docker서버 IP>:27017 # 2.3.2를 실행한 서버 IP주소
34
export REPORTING_EVAL_VMTYPE=vm export APPLICATION_GROUPS=7 export EVAL_TIMEOUT=100
35
export APPLICATIONS_LAST_RECORDED_GUID=
36
export SERVICES_LAST_RECORDED_GUID= #공백
37
export COLLECTOR_RATE_LIMIT= #공백
38
39
#Service Bridge
40
export METERING_SERVICES='{"Mysql-DB":{"plans":["Mysql-Plan1-10con","Mysql-Plan2-100con"]}}' # 모니터링할 서비스 등록
41
기본. JSON
42
{"Mysql-DB": 서비스명
43
{
44
"plans": 서비스 플랜
45
[ "Mysql-Plan1-10con",
46
"Mysql-Plan2-100con"]
47
}
48
}
49
50
# Dashbaord
51
export CF_API_URI=https://api.<도메인>
52
export UAA_URL=https://uaa.<도메인>
53
export DASHBOARD_DB_URI=mongodb://<docker서버 IP>:27017 # 2.3.2를 실행한 서버 IP주소
54
55
# Abacus Service Broker
56
export UAA_URL=https://uaa.<도메인>
57
export MAPPING_API="abacus-provisioning-plugin"
58
export BROKER_USER=”abacus” " #abacus에서 CF와 통신을 위한 Client ID (2.4.2 설정한 미터링 Client)
59
export BROKER_PASSWORD="abacus-secret" #abacus에서 CF와 통신을 위한 Client 패스워드 (2.4.2 설정한 미터링 Client 패스워드)
60
export METERING_BROKER_CLIENT_ID="abacus-broker" #abacus에서 CF와 통신을 위한 Client ID(2.4.2 설정한 브로커 Client)
61
export METERING_BROKER_CLIENT_SECRET="abacus-secret" #abacus에서 CF와 통신을 위한 Client 패스워드(2.4.2 설정한 브로커 Client 패스워드)
62
export METERING_BROKER_DASHBOARD_CLIENT_ID="abacus-service-dashboard" #abacus에서 CF와 통신을 위한 Client ID(2.4.2 설정한 Dashboard Client)
63
export METERING_BROKER_DASHBOARD_CLIENT_SECRET="abacus-secret" #abacus에서 CF와 통신을 위한 Client 패스워드(2.4.2 설정한 Dashboard Client 패스워드)
64
export DASHBOARD_REDIRECT_URI="http://abacus-service-dashboard.<도메인>/manage/instances/*" # Service Dashbaord가 설치된 URI정보 /manage/instances/*" 변경불가
65
export DASHBOARD_URI=http://abacus-service-dashboard.<도메인>/manage/instances/ # Service Dashbaord가 설치된 URI정보 /manage/instances/ 변경불가
Copied!
Abacus 빌드
1
$ cd cf-abacus-1.1.5
2
$ yarn install
Copied!
Abacus 배포 전 불필요 서비스 설치 제한
1
$ cd cf-abacus-1.1.5
2
$ vim bin/cfpush
3
4
![METERING_5]
5
6
빨간 네모삭제의 내용을 삭제 후 아래의 내용으로 바꾼다.
7
8
if [ "$APPNAME" != "abacus-healthchecker" -a "$APPNAME" != "abacus-service-dashboard" -a "$APPNAME" != "abacus-broker" -a "$APPNAME" != "abacus-housekeeper" ]; then
9
if [ "$APPS" == "0" ]; then
10
COMMANDS+=("(cfpush -n $APPNAME -p $MODULE -i $INSTANCES -s -r $PUSH_RETRIES $CF_STACK_OPTION)")
11
else
12
for I in $(seq 0 $APPS); do
13
COMMANDS+=("(cfpush -n $APPNAME-$I -p $MODULE -i $INSTANCES -s -r $PUSH_RETRIES $CF_STACK_OPTION)")
14
done
15
fi
16
fi
17
18
19
불필요 서비스
20
abacus-healthchecker, abacus-service-dashboard, abacus-broker, abacus-housekeeper 에 대한 설치를 제한하는 설정이다.
Copied!
Abacus 배포
1
$ cd cf-abacus-1.1.5
2
3
## abacus 설치를 위한 CF 타겟 지정 Security 그룹을 설정해야한다.
4
$ bin/cfsetup
5
6
Enter your API URL [https://api.bosh-lite.com]: https://api.bosh-lite.com ## CF API EndPoint
7
Enter your user name [admin]: admin ## <계정 ID>
8
Enter your organization [abacus]: abacus ## <조직>
9
Enter your space [dev]: dev ## <영역>
10
API endpoint: https://api.bosh-lite.com
11
12
Password> ## <계정 비밀번호>
13
Authenticating...
14
OK
15
16
Targeted org abacus
17
18
Targeted space dev
19
20
API endpoint: https://api.bosh-lite.com (API version: 2.62.0)
21
User: admin
22
Org: abacus
23
Space: dev
24
Creating security group abacus as admin
25
OK
26
Assigning security group abacus to space dev in org abacus as admin...
27
OK
28
29
30
TIP: Changes will not apply to existing running applications until they are restarted.
31
32
## 타겟으로 지정한 조직 / 영역에 대해 abacus앱을 배포한다.
33
※ 주의: CF의 Nodejs Build Pack 버전이 낮을 경우 cfpush는 실패한다. CF의 Nodejs build pack 버전이 낮을 경우, 반드시 Nodejs build pack을 업그레이드 한다.
34
$ yarn run cfpush
35
36
## abacus 설치 형상 확인
37
$ cf a
38
39
40
41
*abacus-service-dashboard,healthchecker, housekeeper는 필수사항이 아님, 필요시 설치 메타데이터 설정을 진행후 재시작해야 정상적으로 서비스가 시작됨
42
43
abacus-meta-data 설정
44
배포한 abacus는 데이터 수집을 하지만, 메타데이터가 없는 관계로 정상적으로 저장이 되지 않는다. 따라서 기본 메타데이터를 입력하는 절차를 진행해야 한다.
45
$ cd <abacus 경로>/lib/plugins/provisioning
46
47
## yarn install
48
$ yarn install
49
50
## 데이터 연동을 위한 Meta-data 설정
51
$ yarn run store-defaults
52
53
## 전체 앱을 재시작해야한다.
Copied!

3. API 호출

설치된 CF-ABACUS에 대한 데이터 호출 방법을 설명한다.

3.1 Token 생성

1
$curl -X POST 'https://uaa.115.68.46.188.xip.io/oauth/token?client_id=abacus&client_secret=abacus-secret&grant_type=client_credentials&scopre=reporting.agent.write%20,%20abacus.usage.write' -H 'Content-Type: application/x-www-form-urlencoded' -H 'cache-control: no-cache' -k
2
다음과같이 출력되면
3
4
{
5
"access_token":"eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vdWFhLjExNS42OC40Ni4xODgueGlwLmlvL3Rva2VuX2tleXMiLCJraWQiOiJrZXktMSIsInR5cCI6IkpXVCIsImN0eSI6bnVsbH0.eyJqdGkiOiI0ZDdjZmQ4Y2JkZGI0NGMxYjkyYWFlYmVmYzFiNzlmYiIsInN1YiI6ImFiYWN1cyIsImF1dGhvcml0aWVzIjpbImNvdWRfY29udHJvbGxlcl9zZXJ2aWNlX3Blcm1pc3Npb25zLnJlYWQiLCJjbG91ZF9jb250cm9sbGVyLnJlYWQiLCJhYmFjdXMudXNhZ2Uuc2FtcGxlci53cml0ZSIsImFiYWN1cy51c2FnZS5saW51eC1jb250YWluZXIucmVhZCIsImFiYWN1cy51c2FnZS5saW51eC1jb250YWluZXIud3JpdGUiLCJhYmFjdXMuc3lzdGVtLnJlYWQiLCJvcGVuaWQiLCJhYmFjdXMudXNhZ2Uud3JpdGUiLCJhYmFjdXMudXNhZ2UucmVhZCIsInJlcG9ydGluZy5hZ2VudC53cml0ZSIsImNsb3VkX2NvbnRyb2xsZXIuYWRtaW4iXSwic2NvcGUiOlsiY291ZF9jb250cm9sbGVyX3NlcnZpY2VfcGVybWlzc2lvbnMucmVhZCIsImNsb3VkX2NvbnRyb2xsZXIucmVhZCIsImFiYWN1cy51c2FnZS5zYW1wbGVyLndyaXRlIiwiYWJhY3VzLnVzYWdlLmxpbnV4LWNvbnRhaW5lci5yZWFkIiwiYWJhY3VzLnVzYWdlLmxpbnV4LWNvbnRhaW5lci53cml0ZSIsImFiYWN1cy5zeXN0ZW0ucmVhZCIsIm9wZW5pZCIsImFiYWN1cy51c2FnZS53cml0ZSIsImFiYWN1cy51c2FnZS5yZWFkIiwicmVwb3J0aW5nLmFnZW50LndyaXRlIiwiY2xvdWRfY29udHJvbGxlci5hZG1pbiJdLCJjbGllbnRfaWQiOiJhYmFjdXMiLCJjaWQiOiJhYmFjdXMiLCJhenAiOiJhYmFjdXMiLCJncmFudF90eXBlIjoiY2xpZW50X2NyZWRlbnRpYWxzIiwicmV2X3NpZyI6ImI0NTc4NmVjIiwiaWF0IjoxNTU0MzQyOTU3LCJleHAiOjE1NTQzODYxNTcsImlzcyI6Imh0dHBzOi8vdWFhLjExNS42OC40Ni4xODgueGlwLmlvL29hdXRoL3Rva2VuIiwiemlkIjoidWFhIiwiYXVkIjpbImNsb3VkX2NvbnRyb2xsZXIiLCJhYmFjdXMuc3lzdGVtIiwiY291ZF9jb250cm9sbGVyX3NlcnZpY2VfcGVybWlzc2lvbnMiLCJvcGVuaWQiLCJhYmFjdXMudXNhZ2UiLCJhYmFjdXMudXNhZ2Uuc2FtcGxlciIsImFiYWN1cyIsInJlcG9ydGluZy5hZ2VudCIsImFiYWN1cy51c2FnZS5saW51eC1jb250YWluZXIiXX0.MuSJ0cNfQxzqKJ7DBfroF4cJJu-GIu7e-fR-nwt6vuSXAozS4H7-0jML_D9WVP6yp71pRp7MDMOPAjLofwInYtuvlaIFYbvAvVRvofkA4Jhnuqi_YCX6nqX932c2rYCXTomRPEtElruxgM8iWBoqNGzENtO3paop9aETRbqiEm5eRTzwtjnz9dyysWL7mPEi7yUqW4UDbApYsAlqIkK5LHIzymVlpxXYMeey6_5aACwtvBverYC713SRFQwQStnkn1bv7XWkYTcH3cIAOjlpUQmbuyCc6hIRjZpvXBS73q_xNtzjr5SOWoYoB7pLh-p-9niQ2n8IK0tWj0gkG0giLQ",
6
"token_type":"bearer",
7
"expires_in":43199,
8
"scope":"coud_controller_service_permissions.read cloud_controller.read abacus.usage.sampler.write abacus.usage.linux-container.read abacus.usage.linux-container.write abacus.system.read openid abacus.usage.write abacus.usage.read reporting.agent.write cloud_controller.admin",
9
"jti":"4d7cfd8cbddb44c1b92aaebefc1b79fb"
10
}
11
12
access_token 을 추출한다.
Copied!

3.2 paasta-usage-repoting 데이터 추출

1
## org guid 추출
2
$ cf org <org명> --guid
3
4
## Repoting 데이터 추출
5
curl -X GET \
6
https://abacus-usage-reporting.<DOMAIN주소>/v1/metering/organizations/<ORG_GUID>/aggregated/usage/ \
7
-H 'Authorization: bearer <-- 3.1에서 추출한 Token값으로 변경
8
eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vdWFhLjExNS42OC40Ni4xODgueGlwLmlvL3Rva2VuX2tleXMiLCJraWQiOiJrZXktMSIsInR5cCI6IkpXVCIsImN0eSI6bnVsbH0.eyJqdGkiOiI4OWQwOWY2ZmFiM2E0NTVjYjllZGNlZjgwNTk1OTAyZiIsInN1YiI6ImFiYWN1cyIsImF1dGhvcml0aWVzIjpbImNvdWRfY29udHJvbGxlcl9zZXJ2aWNlX3Blcm1pc3Npb25zLnJlYWQiLCJjbG91ZF9jb250cm9sbGVyLnJlYWQiLCJhYmFjdXMudXNhZ2Uuc2FtcGxlci53cml0ZSIsImFiYWN1cy51c2FnZS5saW51eC1jb250YWluZXIucmVhZCIsImFiYWN1cy51c2FnZS5saW51eC1jb250YWluZXIud3JpdGUiLCJhYmFjdXMuc3lzdGVtLnJlYWQiLCJvcGVuaWQiLCJhYmFjdXMudXNhZ2Uud3JpdGUiLCJhYmFjdXMudXNhZ2UucmVhZCIsInJlcG9ydGluZy5hZ2VudC53cml0ZSIsImNsb3VkX2NvbnRyb2xsZXIuYWRtaW4iXSwic2NvcGUiOlsiY291ZF9jb250cm9sbGVyX3NlcnZpY2VfcGVybWlzc2lvbnMucmVhZCIsImNsb3VkX2NvbnRyb2xsZXIucmVhZCIsImFiYWN1cy51c2FnZS5zYW1wbGVyLndyaXRlIiwiYWJhY3VzLnVzYWdlLmxpbnV4LWNvbnRhaW5lci5yZWFkIiwiYWJhY3VzLnVzYWdlLmxpbnV4LWNvbnRhaW5lci53cml0ZSIsImFiYWN1cy5zeXN0ZW0ucmVhZCIsIm9wZW5pZCIsImFiYWN1cy51c2FnZS53cml0ZSIsImFiYWN1cy51c2FnZS5yZWFkIiwicmVwb3J0aW5nLmFnZW50LndyaXRlIiwiY2xvdWRfY29udHJvbGxlci5hZG1pbiJdLCJjbGllbnRfaWQiOiJhYmFjdXMiLCJjaWQiOiJhYmFjdXMiLCJhenAiOiJhYmFjdXMiLCJncmFudF90eXBlIjoiY2xpZW50X2NyZWRlbnRpYWxzIiwicmV2X3NpZyI6ImI0NTc4NmVjIiwiaWF0IjoxNTU0MzQyODA1LCJleHAiOjE1NTQzODYwMDUsImlzcyI6Imh0dHBzOi8vdWFhLjExNS42OC40Ni4xODgueGlwLmlvL29hdXRoL3Rva2VuIiwiemlkIjoidWFhIiwiYXVkIjpbImNsb3VkX2NvbnRyb2xsZXIiLCJhYmFjdXMuc3lzdGVtIiwiY291ZF9jb250cm9sbGVyX3NlcnZpY2VfcGVybWlzc2lvbnMiLCJvcGVuaWQiLCJhYmFjdXMudXNhZ2UiLCJhYmFjdXMudXNhZ2Uuc2FtcGxlciIsImFiYWN1cyIsInJlcG9ydGluZy5hZ2VudCIsImFiYWN1cy51c2FnZS5saW51eC1jb250YWluZXIiXX0.RHGtFgQU4O_Z12y4Sgoqg7QZhEEs34SSaDa7qwrJ2s7pKZ0C8g2KBCCHb-ROUOKtjvttLcPUclmG13j3hEXW8coGWrzm7kHUk15O4X636Cvz4Xk4oMq-ykoAy0ODuqQ4OQXhv_SuGKCF-ondQQmSkUfwhvYa_-KokXTl_JeFR4KH3aCGniitCXzTPFLUblDDe6UY1--jF44i4dZhDirS5Ptf4ZF8RD1oz64RbjIqmPfIQnensdpdyRgCYQQUTPp0StXij0qeAv64T9o9NUg-8ZTPXOyoi6AX-Wc9UQx4tR3gH9sRng-Gjq24iucRZmoGBZOb6OiIO7RtqB_EXJ5e7A' \
9
-H 'Content-Type: application/json' \
10
-H 'cache-control: no-cache,no-cache'
11
12
다음과 같이 출력되면, 정상적으로 설치가 완료됨
13
{
14
"start": 1435622400000,
15
"end": 1435708799999,
16
"processed": 1435708800000,
17
"organization_id": "us-south:a3d7fe4d-3cb1-4cc3-a831-ffe98e20cf27",
18
"windows": [
19
[{
20
"charge": 46.09
21
}],
22
[{
23
"charge": 46.09
24
}],
25
[{
26
"charge": 46.09
27
}],
28
[{
29
"charge": 46.09
30
}],
31
[{
32
"charge": 46.09
33
}]
34
],
35
"id": "k-a3d7fe4d-3cb1-4cc3-a831-ffe98e20cf27-t-0001435622400000",
36
"spaces": [
37
{
38
"space_id": "aaeae239-f3f8-483c-9dd0-de5d41c38b6a",
39
"windows": [
40
[{
41
"charge": 46.09
42
}],
43
[{
44
"charge": 46.09
45
}],
46
[{
47
"charge": 46.09
48
}],
49
[{
50
"charge": 46.09
51
}],
52
[{
53
"charge": 46.09
54
}]
55
],
56
"consumers": [
57
{
58
"consumer_id": "app:d98b5916-3c77-44b9-ac12-045678edabae",
59
"windows": [
60
[{
61
"charge": 46.09
62
}],
63
[{
64
"charge": 46.09
65
}],
66
[{
67
"charge": 46.09
68
}],
69
[{
70
"charge": 46.09
71
}],
72
[{
73
"charge": 46.09
74
}]
75
],
76
"resources": [
77
{
78
"resource_id": "object-storage",
79
"charge": 46.09,
80
"aggregated_usage": [
81
{
82
"metric": "storage",
83
"windows": [
84
[{
85
"quantity": 1,
86
"summary": 1,
87
"charge": 1
88
}],
89
[{
90
"quantity": 1,
91
"summary": 1,
92
"charge": 1
93
}],
94
[{
95
"quantity": 1,
96
"summary": 1,
97
"charge": 1
98
}],
99
[{
100
"quantity": 1,
101
"summary": 1,
102
"charge": 1
103
}],
104
[{
105
"quantity": 1,
106
"summary": 1,
107
"charge": 1
108
}]
109
]
110
},
111
{
112
"metric": "thousand_light_api_calls",
113
…………………………
Copied!
Last modified 8mo ago