Monitoring 설치 가이드

Table of Contents

  1. 1.

1. 문서 개요

1.1. 목적

본 문서(설치가이드)는 PaaS-TA(5.0) 환경기준으로 PaaS-TA Monitoring 설치를 위한 가이드를 제공한다.

1.2. 범위

본 문서(설치가이드)는 PaaS-TA(5.0) 환경기준으로 PaaS-TA Monitoring 설치를 위한 가이드를 제공한다. Monitoring 중 IaaS-PaaS 통합 Monitoring은 별도 통합 Monitoring 문서를 제공하며 본문서는 PaaS, CaaS, SaaS Monitoring 설치 가이드를 제공함에 있다.

1.3. 참고자료

본 문서는 Cloud Foundry의 BOSH Document와 Cloud Foundry Document를 참고로 작성하였다.
BOSH Document: http://bosh.io
Cloud Foundry Document: https://docs.cloudfoundry.org/

2. PaaS-TA Monitoring Architecture

2.1. PaaS Monitoring Architecture

PaaS Monitoring 운영환경에서는 크게 Backend 환경에서 실행되는 Batch 프로세스 영역과 Frontend 환경에서 실행되는 Monitoring 시스템 영역으로 나누어진다. Batch 프로세스는 PaaS-TA Portal에서 등록한 임계치 정보와 AutoScale 대상 정보를 기준으로 주기적으로 시스템 metrics 정보를 조회 및 분석하여, 임계치를 초과한 서비스 발견시 관리자에게 Alarm을 전송하며, 임계치를 초과한 컨테이너 리스트 중에서 AutoScale 대상의 컨테이너 존재시 AutoScale Server 서비스에 관련 정보를 전송하여, 자동으로 AutoScaling 기능이 수행되도록 처리한다. PaaS-TA Monitoring 시스템은 TSDB(InfluxDB)로부터 시스템 환경 정보 데이터를 조회하고, Lucene(Elasticsearch)을 통해 로그 정보를 조회한다. 조회된 정보로 PaaS-TA Monitoring 시스템의 현재 자원 사용 현황을 조회하고, PaaS-TA Monitoring dashboard를 통해 로그 정보를 조회할 수 있도록 한다. PaaS-TA Monitoring dashboard는 관리자 화면으로 알람이 발생된 이벤트 현황 정보를 조회하고, 컨테이너 배치 현황과 장애 발생 서비스에 대한 통계 정보를 조회할 수 있으며, 이벤트 관련 처리정보를 이력관리할 수 있는 화면을 제공한다

2.2. PaaS 자원정보 수집 Architecture

PaaS는 내부적으로 메트릭스 정보를 수집 및 전달하는 Metric Agent와 로그 정보를 수집 및 전달하는 syslog 모듈을 제공한다. Metric Agent는 시스템 관련 메트릭스를 수집하여 InfluxDB에 정보를 저장한다. syslog는 PaaS-TA를 Deploy 하기 위한 manfiest 파일의 설정으로도 로그 정보를 ELK 서비스에 전달할 수 있으며, 로그 정보를 전달하기 위해서는 relp 프로토콜(reliable event logging protocol)을 사용한다.

2.3. CaaS Monitoring Architecture

CaaS Monitoring 운영환경에는 크게 Backend 환경에서 실행되는 Batch 프로세스 영역과 Frontend 환경에서 실행되는 Monitoring 시스템 영역으로 나누어진다. Batch 프로세스는 CaaS에서 등록한 임계치 정보를 기준으로 주기적으로 시스템 metrics 정보를 조회 및 분석하여, 임계치를 초과한 서비스 발견시 관리자에게 Alarm을 전송한다. PaaS-TA Monitoring 시스템은 K8s(Prometheus Agent)로부터 시스템 메트릭 데이터를 조회하고, 조회된 정보로 CaaS Monitoring 시스템의 현재 자원 사용 현황을 조회한다. PaaS-TA Monitoring dashboard는 관리자 화면으로 알람이 발생된 이벤트 현황 정보를 조회하고, kubernests Pod 현황 및 서비스에 대한 통계 정보를 조회할 수 있으며, 이벤트 관련 처리정보를 이력관리할 수 있는 화면을 제공한다

2.4. CaaS 자원정보 수집 Architecture

CaaS는 내부적으로 메트릭스 정보를 수집 하는 Prometheus Metric Agent(Node Exporter, cAdvisor) 제공한다. Prometheus 기본 제공되는 로컬 디지스 Time-Series Database 정보를 저장한다. 해당 정보를 조회하기 위해서는 Prometheus 제공하는 API를 통하여 조회할 수 있다.

2.5. SaaS Monitoring Architecture

Saas Monitoring 운영환경에는 크게 Backend 환경에서 실행되는 Batch 프로세스 영역과 Frontend 환경에서 실행되는 Monitoring 시스템 영역으로 나누어진다. Batch 프로세스는 PaaS-TA Portal SaaS 서비스에서 등록한 임계치 정보를 기준으로 주기적으로 시스템 metrics 정보를 조회 및 분석하여, 임계치를 초과한 서비스 발견시 관리자에게 Alarm을 전송한다. Monitoring 시스템 은 PINPOINT APM Server 로부터 시스템 메트 데이터를 조회하고, 조회된 정보는 SaaS Monitoring 시스템의 현재 자원 사용 현황을 조회한다. Monitoring Portal은 관리자 화면으로 알람이 발생된 이벤트 현황 정보를 조회하고, Application 현황 및 서비스에 대한 통계 정보를 조회할 수 있으며, 이벤트 관련 처리정보를 이력관리할 수 있는 화면을 제공한다

2.6. SaaS 자원정보 수집 Architecture

PaaS-TA SaaS는 내부적으로 메트릭스 정보를 수집 하는 PINPOINT Metric Agent 제공한다. Metric Agent는 Application JVM 관련 메트릭스를 수집하여 Hbase DB에 정보를 저장한다. 해당 정보는 PINPOINT APM 서버의 API를 통하여 조회할 수 있다.

2.7. IaaS Monitoring Architecture

IaaS 서비스 모니터링 운영환경은 IaaS는 Openstack과 Monasca를 기반으로 구성되어 있다. IaaS는 Openstack Node에 monasca Agent가 설치되어 Metric Data를 Monasca에 전송하여 InfluxDB에 저장한다. PaaS는 PaaS-TA에 모니터링 Agent가 설치되어 InfluxDB에 전송 저장한다. Log Agent도 IaaS/PaaS에 설치되어 Log Data를 각각의 Log Repository에 전송한다.

3. PaaS-TA Monitoring 설치

3.1. Pre-requsite

  1. 1.
    PaaS-TA 5.0 Monitoring을 설치 하기 위해서는 bosh 설치과정에서 언급한 것 처럼 관련 deployment, release , stemcell을 PaaS-TA 사이트에서 다운로드 받아 정해진 경로에 복사 해야 한다.
  2. 2.
    PaaS-TA 5.0이 설치되어 있어야 하며, monitoring Agent가 설치되어 있어야 한다.
  3. 3.
    bosh login이 되어 있어야 한다.

3.2. PaaS-TA 5.0 Monitoring 설치 파일 다운로드

PaaS-TA 사이트에서 [PaaS-TA 설치 릴리즈] 파일을 다운로드 받아 ~/workspace/paasta-5.0/release 이하 디렉토리에 압축을 푼다. 압출을 풀면 아래 그림과 같이 ~/workspace/paasta-5.0/release/paasta-monitoring 이하 디렉토리가 생성되며 이하에 릴리즈 파일(tgz)이 존재한다.

3.3. PaaS-TA Monitoring 설치환경

~/workspace/paasta-5.0/deployment/paasta-deployment-monitoring 이하 디렉토리에는 paasta-monitoring, paasta-pinpoint-monitoring 디렉토리가 존재한다. Logsearch는 logAgent에서 발생한 Log정보를 수집하여 저장하는 Deployment이다. paasta-monitoring은 PaaS-TA VM에서 발생한 Metric 정보를 수집하여 Monitoring을 실행한다.
1
$ cd ~/workspace/paasta-5.0/deployment/paasta-deployment-monitoring
Copied!

3.4. Logsearch 설치

PaaS-TA VM Log수집을 위해서는 logsearch가 설치되어야 한다.
1
$ cd ~/workspace/paasta-5.0/deployment/paasta-deployment-monitoring/paasta-monitoring
Copied!

3.4.1. logsearch-deployment.yml

logsearch-deployment.yml에는 ls-router, cluster-monitor, elasticsearch_data, elastic_master, kibana, mainternance 의 명세가 정의되어 있다.
1
---
2
name: logsearch
3
update:
4
canaries: 3
5
canary_watch_time: 30000-1200000
6
max_in_flight: 1
7
serial: false
8
update_watch_time: 5000-1200000
9
instance_groups:
10
- name: elasticsearch_master
11
azs:
12
- z5
13
instances: 1
14
persistent_disk_type: 10GB
15
vm_type: medium
16
stemcell: default
17
update:
18
max_in_flight: 1
19
serial: true
20
networks:
21
- name: default
22
jobs:
23
- name: elasticsearch
24
release: logsearch
25
consumes:
26
elasticsearch: {from: elasticsearch_master}
27
provides:
28
elasticsearch: {as: elasticsearch_master}
29
properties:
30
elasticsearch:
31
node:
32
allow_master: true
33
- name: syslog_forwarder
34
release: logsearch
35
consumes:
36
syslog_forwarder: {from: cluster_monitor}
37
properties:
38
syslog_forwarder:
39
config:
40
- file: /var/vcap/sys/log/elasticsearch/elasticsearch.stdout.log
41
service: elasticsearch
42
- file: /var/vcap/sys/log/elasticsearch/elasticsearch.stderr.log
43
service: elasticsearch
44
- file: /var/vcap/sys/log/cerebro/cerebro.stdout.log
45
service: cerebro
46
- file: /var/vcap/sys/log/cerebro/cerebro.stderr.log
47
service: cerebro
48
- name: route_registrar
49
release: logsearch-for-cloudfoundry
50
consumes:
51
nats: {from: nats, deployment: paasta}
52
properties:
53
route_registrar:
54
routes:
55
- name: elasticsearch
56
port: 9200
57
registration_interval: 60s
58
uris:
59
- "elastic.((system_domain))"
60
61
- name: cluster_monitor
62
azs:
63
- z6
64
instances: 1
65
persistent_disk_type: 10GB
66
vm_type: medium
67
stemcell: default
68
update:
69
max_in_flight: 1
70
serial: true
71
networks:
72
- name: default
73
jobs:
74
- name: elasticsearch
75
release: logsearch
76
consumes:
77
elasticsearch: {from: elasticsearch_cluster_monitor}
78
provides:
79
elasticsearch: {as: elasticsearch_cluster_monitor}
80
properties:
81
elasticsearch:
82
cluster_name: monitor
83
node:
84
allow_data: true
85
allow_master: true
86
- name: elasticsearch_config
87
release: logsearch
88
consumes:
89
elasticsearch: {from: elasticsearch_cluster_monitor}
90
properties:
91
elasticsearch_config:
92
templates:
93
- shards-and-replicas: '{ "template" : "logstash-*", "order" : 100, "settings"
94
: { "number_of_shards" : 1, "number_of_replicas" : 0 } }'
95
- index-settings: /var/vcap/jobs/elasticsearch_config/index-templates/index-settings.json
96
- index-mappings: /var/vcap/jobs/elasticsearch_config/index-templates/index-mappings.json
97
- name: ingestor_syslog
98
release: logsearch
99
provides:
100
syslog_forwarder: {as: cluster_monitor}
101
properties:
102
logstash_parser:
103
filters:
104
- monitor: /var/vcap/packages/logsearch-config/logstash-filters-monitor.conf
105
- name: curator
106
release: logsearch
107
consumes:
108
elasticsearch: {from: elasticsearch_cluster_monitor}
109
properties:
110
curator:
111
purge_logs:
112
retention_period: 7
113
- name: kibana
114
release: logsearch
115
consumes:
116
elasticsearch: {from: elasticsearch_cluster_monitor}
117
properties:
118
kibana:
119
memory_limit: 30
120
wait_for_templates: [shards-and-replicas]
121
- name: maintenance
122
azs:
123
- z5
124
- z6
125
instances: 1
126
vm_type: medium
127
stemcell: default
128
update:
129
serial: true
130
networks:
131
- name: default
132
jobs:
133
- name: elasticsearch_config
134
release: logsearch
135
consumes:
136
elasticsearch: {from: elasticsearch_master}
137
properties:
138
elasticsearch_config:
139
index_prefix: logs-
140
templates:
141
- shards-and-replicas: /var/vcap/jobs/elasticsearch_config/index-templates/shards-and-replicas.json
142
- index-settings: /var/vcap/jobs/elasticsearch_config/index-templates/index-settings.json
143
- index-mappings: /var/vcap/jobs/elasticsearch_config/index-templates/index-mappings.json
144
- index-mappings-lfc: /var/vcap/jobs/elasticsearch-config-lfc/index-mappings.json
145
- index-mappings-app-lfc: /var/vcap/jobs/elasticsearch-config-lfc/index-mappings-app.json
146
- index-mappings-platform-lfc: /var/vcap/jobs/elasticsearch-config-lfc/index-mappings-platform.json
147
- name: curator
148
release: logsearch
149
consumes:
150
elasticsearch: {from: elasticsearch_master}
151
- name: elasticsearch-config-lfc
152
release: logsearch-for-cloudfoundry
153
- name: syslog_forwarder
154
release: logsearch
155
consumes:
156
syslog_forwarder: {from: cluster_monitor}
157
properties:
158
syslog_forwarder:
159
config:
160
- file: /var/vcap/sys/log/curator/curator.log
161
service: curator
162
- name: elasticsearch_data
163
azs:
164
- z5
165
- z6
166
instances: 2
167
persistent_disk_type: 30GB
168
vm_type: medium
169
stemcell: default
170
update:
171
max_in_flight: 1
172
serial: true
173
networks:
174
- name: default
175
jobs:
176
- name: elasticsearch
177
release: logsearch
178
consumes:
179
elasticsearch: {from: elasticsearch_master}
180
properties:
181
elasticsearch:
182
node:
183
allow_data: true
184
- name: syslog_forwarder
185
release: logsearch
186
consumes:
187
syslog_forwarder: {from: cluster_monitor}
188
properties:
189
syslog_forwarder:
190
config:
191
- file: /var/vcap/sys/log/elasticsearch/elasticsearch.stdout.log
192
service: elasticsearch
193
- file: /var/vcap/sys/log/elasticsearch/elasticsearch.stderr.log
194
service: elasticsearch
195
- file: /var/vcap/sys/log/cerebro/cerebro.stdout.log
196
service: cerebro
197
- file: /var/vcap/sys/log/cerebro/cerebro.stderr.log
198
service: cerebro
199
- name: kibana
200
azs:
201
- z5
202
instances: 1
203
persistent_disk_type: 5GB
204
vm_type: medium
205
stemcell: default
206
networks:
207
- name: default
208
209
jobs:
210
- name: elasticsearch
211
release: logsearch
212
consumes:
213
elasticsearch: {from: elasticsearch_master}
214
- name: redis
215
release: logsearch-for-cloudfoundry
216
provides:
217
redis: {as: redis_link}
218
- name: kibana
219
release: logsearch
220
provides:
221
kibana: {as: kibana_link}
222
consumes:
223
elasticsearch: {from: elasticsearch_master}
224
properties:
225
kibana:
226
health:
227
timeout: 300
228
env:
229
- NODE_ENV: production
230
- name: syslog_forwarder
231
release: logsearch
232
consumes:
233
syslog_forwarder: {from: cluster_monitor}
234
properties:
235
syslog_forwarder:
236
config:
237
- file: /var/vcap/sys/log/elasticsearch/elasticsearch.stdout.log
238
service: elasticsearch
239
- file: /var/vcap/sys/log/elasticsearch/elasticsearch.stderr.log
240
service: elasticsearch
241
- file: /var/vcap/sys/log/cerebro/cerebro.stdout.log
242
service: cerebro
243
- file: /var/vcap/sys/log/cerebro/cerebro.stderr.log
244
service: cerebro
245
- name: ingestor
246
azs:
247
- z4
248
- z6
249
instances: 2
250
persistent_disk_type: 10GB
251
vm_type: medium
252
stemcell: default
253
networks:
254
- name: default
255
jobs:
256
- name: elasticsearch
257
release: logsearch
258
consumes:
259
elasticsearch: {from: elasticsearch_master}
260
- name: parser-config-lfc
261
release: logsearch-for-cloudfoundry
262
- name: ingestor_syslog
263
release: logsearch
264
provides:
265
ingestor: {as: ingestor_link}
266
properties:
267
logstash_parser:
268
filters:
269
- logsearch-for-cf: /var/vcap/packages/logsearch-config-logstash-filters/logstash-filters-default.conf
270
elasticsearch:
271
index: logs-%{[@metadata][index]}-%{+YYYY.MM.dd}
272
deployment_dictionary:
273
- /var/vcap/packages/logsearch-config/deployment_lookup.yml
274
- /var/vcap/jobs/parser-config-lfc/config/deployment_lookup.yml
275
- name: syslog_forwarder
276
release: logsearch
277
consumes:
278
syslog_forwarder: {from: cluster_monitor}
279
properties:
280
syslog_forwarder:
281
config:
282
- file: /var/vcap/sys/log/elasticsearch/elasticsearch.stdout.log
283
service: elasticsearch
284
- file: /var/vcap/sys/log/elasticsearch/elasticsearch.stderr.log
285
service: elasticsearch
286
- file: /var/vcap/sys/log/ingestor_syslog/ingestor_syslog.stdout.log
287
service: ingestor
288
- file: /var/vcap/sys/log/ingestor_syslog/ingestor_syslog.stderr.log
289
service: ingestor
290
- name: ls-router
291
azs:
292
- z4
293
instances: 1
294
vm_type: small
295
stemcell: default
296
networks:
297
- name: default
298
static_ips:
299
- ((router_ip))
300
jobs:
301
- name: haproxy
302
release: logsearch
303
consumes:
304
elasticsearch: {from: elasticsearch_master}
305
ingestor: {from: ingestor_link}
306
kibana: {from: kibana_link}
307
syslog_forwarder: {from: cluster_monitor}
308
properties:
309
inbound_port:
310
https: 4443
311
- name: route_registrar
312
release: logsearch-for-cloudfoundry
313
consumes:
314
nats: {from: nats, deployment: paasta}
315
properties:
316
route_registrar:
317
routes:
318
- name: kibana
319
port: 80
320
registration_interval: 60s
321
uris:
322
- "logs.((system_domain))"
323
324
variables:
325
- name: kibana_oauth2_client_secret
326
type: password
327
- name: firehose_client_secret
328
type: password
329
330
releases:
331
- name: logsearch
332
url: file:///home/((inception_os_user_name))/workspace/paasta-5.0/release/paasta-monitoring/logsearch-boshrelease-209.0.1.tgz
333
version: "209.0.1"
334
- name: logsearch-for-cloudfoundry
335
url: file:///home/((inception_os_user_name))/workspace/paasta-5.0/release/paasta-monitoring/logsearch-for-cloudfoundry-207.0.1.tgz
336
version: "207.0.1"
337
stemcells:
338
- alias: default
339
os: ubuntu-xenial
340
version: "315.36"
Copied!

3.4.2. deploy-logsearch.sh

deploy.sh의 –v 의 inception_os_user_name, router_ip, system_domain 및 director_name을 시스템 상황에 맞게 설정한다. system_domain은 PaaS-TA 설치시 설정했던 system_domain을 입력하면 된다. router_ip는 ls-router가 설치된 azs에서 정의한 cider값의 적당한 IP를 지정한다.
1
bosh –e {director_name} -d logsearch deploy logsearch-deployment.yml \
2
-v inception_os_user_name=ubuntu \ # home user명 (release file path와 연관성 있음. /home/ubuntu/paasta-5.0 이하 release 파일들의 경로 설정)
3
-v router_ip=10.20.50.34 \ # 배포한 ls-router VM의 private ip
4
-v system_domain={system_domain} #PaaS-TA 설치시 설정한 System Domain
Copied!
deploy.sh을 실행하여 logsearch를 설치 한다.
1
$ cd ~/workspace/paasta-5.0/deployment/paasta-deployment-monitoring/paasta-monitoring
2
$ sh deploy-logsearch.sh
Copied!
logsearch가 설치 완료 되었음을 확인한다.
1
$ bosh –e {director_name} vms
Copied!

3.5. PaaS-TA Pinpoint Monitoring release 설치

PaaS-TA SaaS는 Application CPU, Memory, Thread , Response Time 정보를 수집을 위해서는 paasta-pinpoint-monitoring가 설치되어야 한다. 자세한 설치 방법은 아래 링크를 참조하길 바랍니다.

3.6. PaaS-TA Container service 설치 및 Prometheus Agent 정보확인

PaaS-TA CaaS 서비스는 Kubernetes Cluster, Workload, Pod 및 Alarm 정보를 수집을 위하여 paasta-container-service에 Prometheus Agent가 설치되어야 한다.
1
$ cd ~/workspace/paasta-5.0/deployment/service-deployment/paasta-container-service-2.0
Copied!

3.6.1 manifests/paasta-container-service-vars-{Cloud Provider}.yml

Deployment YAML에서 사용하는 변수들을 서버 환경에 맞게 수정한다.
1
# INCEPTION OS USER NAME
2
inception_os_user_name: "ubuntu"
3
4
# RELEASE
5
caas_projects_release_name: "paasta-container-service-projects-release"
6
caas_projects_release_version: "1.0"
7
8
# IAAS
9
auth_url: 'http://<IAAS-IP>:5000/v3'
10
openstack_domain: '<OPENSTACK_DOMAIN>'
11
openstack_username: '<OPENSTACK_USERNAME>'
12
openstack_password: '<OPENSTACK_PASSWORD>'
13
openstack_project_id: '<OPENSTACK_PROJECT_ID>'
14
region: '<OPENSTACK_REGION>'
15
ignore-volume-az: true
16
17
# STEMCELL
18
stemcell_os: "ubuntu-trusty"
19
stemcell_version: "315.36"
20
stemcell_alias: "trusty"
21
22
# VM_TYPE
23
vm_type_small: "small"
24
vm_type_small_highmem_16GB: "small-highmem-16GB"
25
vm_type_caas_small: "small"
26
vm_type_caas_small_api: "minimal"
27
28
# NETWORK
29
service_private_networks_name: "default"
30
service_public_networks_name: "vip"
31
32
# IPS
33
caas_master_public_url: "115.68.151.178" # CAAS-MASTER-PUBLIC-URL
34
haproxy_public_ips: "115.68.151.177" # HAPROXY-PUBLIC-URL
35
36
# CREDHUB
37
credhub_server_url: "10.20.0.7:8844" # Bosh credhub server URL
38
credhub_admin_client_secret: "<CREDHUB_ADMIN_CLIENT_SECRET>"
39
40
# CF
41
cf_uaa_oauth_uri: "https://uaa.<DOMAIN>"
42
cf_api_url: "https://api.<DOMAIN>"
43
cf_uaa_oauth_client_id: "<CF_UAA_OAUTH_CLIENT_ID>"
44
cf_uaa_oauth_client_secret: "<CF_UAA_OAUTH_CLIENT_SECRET>"
45
46
# HAPROXY
47
haproxy_http_port: 8080
48
haproxy_azs: [z1]
49
50
# MARIADB
51
mariadb_port: "<MARIADB_PORT>"
52
mariadb_azs: [z2]
53
mariadb_persistent_disk_type: "10GB"
54
mariadb_admin_user_id: "<MARIADB_ADMIN_USER_ID>"
55
mariadb_admin_user_password: "<MARIADB_ADMIN_USER_PASSWORD>"
56
mariadb_role_set_administrator_code_name: "Administrator"
57
mariadb_role_set_administrator_code: "RS0001"
58
mariadb_role_set_regular_user_code_name: "Regular User"
59
mariadb_role_set_regular_user_code: "RS0002"
60
mariadb_role_set_init_user_code_name: "Init User"
61
mariadb_role_set_init_user_code: "RS0003"
62
63
# DASHBOARD
64
caas_dashboard_instances: 1
65
caas_dashboard_port: 8091
66
caas_dashboard_azs: [z3]
67
caas_dashboard_management_security_enabled: false
68
caas_dashboard_logging_level: "INFO"
69
70
# API
71
caas_api_instances: 1
72
caas_api_port: 3333
73
caas_api_azs: [z1]
74
caas_api_management_security_enabled: false
75
caas_api_logging_level: "INFO"
76
77
# COMMON API
78
caas_common_api_instances: 1
79
caas_common_api_port: 3334
80
caas_common_api_azs: [z2]
81
caas_common_api_logging_level: "INFO"
82
83
# SERVICE BROKER
84
caas_service_broker_instances: 1
85
caas_service_broker_port: 8888
86
caas_service_broker_azs: [z3]
87
88
# (OPTIONAL) PRIVATE IMAGE REPOSITORY
89
private_image_repository_release_name: "private-image-repository-release"
90
private_image_repository_release_version: "1.0"
91
private_image_repository_azs: [z1]
92
private_image_repository_port: 5000
93
private_image_repository_root_directory: "/var/lib/docker-registry"
94
private_image_repository_user_name: "<PRIVATE_IMAGE_REPOSITORY_USER_NAME>"
95
private_image_repository_user_password: "#################" # cloudfoundry (encoding by Bcrypt)
96
private_image_repository_public_url: "115.68.151.99" # PRIVATE-IMAGE-REPOSITORY-PUBLIC-URL
97
private_image_repository_persistent_disk_type: "10GB"
98
99
# ADDON
100
caas_apply_addons_azs: [z2]
101
102
# MASTER
103
caas_master_backend_port: 8443
104
caas_master_port: 8443
105
caas_master_azs: [z3]
106
caas_master_persistent_disk_type: 5120
107
108
# WORKER
109
caas_worker_instances: 3
110
caas_worker_azs: [z1,z2,z3]
Copied!

3.6.2. PaaS-TA Container service 설치

Cloud Provider 환경에 맟는 deploy shell 스크립트를 실행한다.
1
$ ./deploy-{Cloud Provider}.sh
Copied!

3.6.3. PaaS-TA Container service의 설치 완료를 확인한다.

3.6.4. Kubernetes Prometheus Pods 정보를 확인한다.

1
$ bosh -e {director_name} ssh -d paaata-container-service master
2
$ /var/vcap/packages/kubernetes/bin/kubectl get pods --all-namespaces -o wide
Copied!

3.6.5. prometheus-prometheus-prometheus-oper-prometheus-0 POD의 Node IP를 확인한다.

1
$ /var/vcap/packages/kubernetes/bin/kubectl get nodes -o wide
Copied!

3.6.6. Kubernetes API URL(serverAddress)를 확인한다.

1
$ curl localhost:8080/api
Copied!

3.6.7. Kubernetes API Request 호출시 Header(Authorization) 인증을 위한 Token값을 확인한다.

1
$ /var/vcap/packages/kubernetes/bin/kubectl -n kube-system describe secret $(/var/vcap/packages/kubernetes/bin/kubectl -n kube-system get secret | grep monitoring-admin | awk '{print $1}')
Copied!

3.7. PaaS-TA Monitoring 설치

PaaS Monitoring을 위해서 paasta-monitoring이 설치되어야 한다.
1
$ cd ~/workspace/paasta-5.0/deployment/paasta-deployment-monitoring/paasta-monitoring
Copied!

3.7.1. paasta-monitoring.yml

paasta-monitoring.yml에는 redis, influxdb(metric_db), mariadb, monitoring-web, monitoring-batch에 대한 명세가 있다.
1
---
2
name: paasta-monitoring # 서비스 배포이름(필수) bosh deployments 로 확인 가능한 이름
3
4
addons:
5
- name: bpm
6
jobs:
7
- name: bpm
8
release: bpm
9
10
stemcells:
11
- alias: default
12
os: ubuntu-xenial
13
version: latest
14
15
releases:
16
- name: paasta-monitoring # 서비스 릴리즈 이름(필수) bosh releases로 확인 가능
17
version: latest # 서비스 릴리즈 버전(필수):latest 시 업로드된 서비스 릴리즈 최신버전
18
url: file:///home/((inception_os_user_name))/workspace/paasta-5.0/release/monitoring/monitoring-release.tgz
19
- name: bpm
20
sha1: 0845cccca348c6988debba3084b5d65fa7ca7fa9
21
url: file:///home/((inception_os_user_name))/workspace/paasta-5.0/release/paasta/bpm-0.13.0-ubuntu-xenial-97.28-20181023-211102-981313842.tgz
22
version: 0.13.0
23
- name: redis
24
version: 14.0.1
25
url: file:///home/((inception_os_user_name))/workspace/paasta-5.0/release/service/redis-14.0.1.tgz
26
sha1: fd4a6107e1fb8aca1d551054d8bc07e4f53ddf05
27
- name: influxdb
28
version: latest
29
url: file:///home/((inception_os_user_name))/workspace/paasta-5.0/release/service/influxdb.tgz
30
sha1: 2337d1f26f46100b8d438b50b71e300941da74a2
31
32
33
instance_groups:
34
- name: redis
35
azs: [z4]
36
instances: 1
37
vm_type: small
38
stemcell: default
39
persistent_disk: 10240
40
networks:
41
- name: default
42
default: [dns, gateway]
43
static_ips:
44
- ((redis_ip))
45
- name: vip
46
static_ips:
47
- 115.68.151.177
48
49
jobs:
50
- name: redis
51
release: redis
52
properties:
53
password: ((redis_password))
54
- name: sanity-tests
55
azs: [z4]
56
instances: 1
57
lifecycle: errand
58
vm_type: small
59
stemcell: default
60
networks: [{name: default}]
61
jobs:
62
- name: sanity-tests
63
release: redis
64
65
- name: influxdb
66
azs: [z5]
67
instances: 1
68
vm_type: large
69
stemcell: default
70
persistent_disk_type: 10GB
71
networks:
72
- name: default
73
default: [dns, gateway]
74
static_ips:
75
- ((influxdb_ip))
76
- name: vip
77
static_ips:
78
- 115.68.151.187
79
80
jobs:
81
- name: influxdb
82
release: influxdb
83
properties:
84
influxdb:
85
database: cf_metric_db #InfluxDB default database
86
user: root #admin account
87
password: root #admin password
88
replication: 1
89
ips: 127.0.0.1 #local I2
90
- name: chronograf
91
release: influxdb
92
93
- name: mariadb
94
azs: [z5]
95
instances: 1
96
vm_type: medium
97
stemcell: default
98
persistent_disk_type: 5GB
99
networks:
100
- name: default
101
default: [dns, gateway]
102
static_ips: ((mariadb_ip))
103
- name: vip
104
static_ips:
105
- 115.68.151.188
106
jobs:
107
- name: mariadb
108
release: paasta-monitoring
109
properties:
110
mariadb:
111
port: ((mariadb_port)) #InfluxDB default database
112
admin_user:
113
password: '((mariadb_password))' # MARIA DB ROOT 계정 비밀번호
114
115
- name: monitoring-batch
116
azs: [z6]
117
instances: 1
118
vm_type: small
119
stemcell: default
120
networks:
121
- name: default
122
jobs:
123
- name: monitoring-batch
124
release: paasta-monitoring
125
consumes:
126
influxdb: {from: influxdb}
127
properties:
128
monitoring-batch:
129
influxdb:
130
url: ((influxdb_ip)):8086
131
db:
132
ip: ((mariadb_ip))
133
port: ((mariadb_port))
134
username: ((mariadb_username))
135
password: ((mariadb_password))
136
paasta:
137
cell_prefix: ((paasta_cell_prefix))
138
bosh:
139
url: ((bosh_url))
140
password: ((bosh_password))
141
director_name: ((director_name))
142
paasta:
143
deployments: ((paasta_deploy_name))
144
mail:
145
smtp:
146
url: ((smtp_url))
147
port: ((smtp_port))
148
sender:
149
name: ((mail_sender))
150
password: ((mail_password))
151
resource:
152
url: ((resource_url))
153
send: ((mail_enable))
154
tls: ((mail_tls_enable))
155
redis:
156
url: ((redis_ip)):6379
157
password: ((redis_password))
158
paasta:
159
apiurl: http://api.((system_domain))
160
uaaurl: https://uaa.((system_domain))
161
username: ((paasta_username))
162
password: ((paasta_password))
163
164
- name: caas-monitoring-batch
165
azs: [z6]
166
instances: 1
167
vm_type: small
168
stemcell: default
169
networks:
170
- name: default
171
jobs:
172
- name: caas-monitoring-batch
173
release: paasta-monitoring
174
consumes:
175
influxdb: {from: influxdb}
176
properties:
177
caas-monitoring-batch:
178
db:
179
ip: ((mariadb_ip))
180
port: ((mariadb_port))
181
username: ((mariadb_username))
182
password: ((mariadb_password))
183
mail:
184
smtp:
185
url: ((smtp_url))
186
port: ((smtp_port))
187
sender:
188
name: ((mail_sender))
189
password: ((mail_password))
190
resource:
191
url: ((resource_url))
192
send: ((mail_enable))
193
tls: ((mail_tls_enable))
194
195
- name: saas-monitoring-batch
196
azs: [z6]
197
instances: 1
198
vm_type: small
199
stemcell: default
200
networks:
201
- name: default
202
jobs:
203
- name: saas-monitoring-batch
204
release: paasta-monitoring
205
consumes:
206
influxdb: {from: influxdb}
207
properties:
208
saas-monitoring-batch:
209
db:
210
ip: ((mariadb_ip))
211
port: ((mariadb_port))
212
username: ((mariadb_username))
213
password: ((mariadb_password))
214
mail:
215
smtp:
216
url: ((smtp_url))
217
port: ((smtp_port))
218
sender:
219
name: ((mail_sender))
220
password: ((mail_password))
221
resource:
222
url: ((resource_url))
223
send: ((mail_enable))
224
tls: ((mail_tls_enable))
225
226
- name: monitoring-web
227
azs: [z6]
228
instances: 1
229
vm_type: small
230
stemcell: default
231
networks:
232
- name: default
233
default: [dns, gateway]
234
- name: vip
235
static_ips: [((monit_public_ip))]
236
237
jobs:
238
- name: monitoring-web
239
release: paasta-monitoring
240
properties:
241
monitoring-web:
242
db:
243
ip: ((mariadb_ip))
244
port: ((mariadb_port))
245
username: ((mariadb_username))
246
password: ((mariadb_password))
247
influxdb:
248
url: http://((influxdb_ip)):8086
249
paasta:
250
system_domain: ((system_domain))
251
bosh:
252
ip: ((bosh_url))
253
password: ((bosh_password))
254
director_name: ((director_name))
255
redis:
256
url: ((redis_ip)):6379
257
password: ((redis_password))
258
time:
259
gap: ((utc_time_gap))
260
prometheus:
261
url: ((prometheus_ip)):30090
262
kubernetes:
263
url: ((kubernetes_ip)):8443
264
token: ((kubernetes_token))
265
pinpoint:
266
url: ((pinpoint_ip)):8079
267
pinpointWas:
268
url: ((pinpoint_was_ip)):8080
269
caasbroker:
270
url: ((cassbroker_ip)):3334
271
272
variables:
273
- name: redis_password
274
type: password
275
276
277
update:
278
canaries: 1
279
canary_watch_time: 1000-180000
280
max_in_flight: 1
281
serial: true
282
update_watch_time: 1000-180000
Copied!

3.7.2. deploy-paasta-monitoring.sh

deploy-paasta-monitoring.sh의 –v 의 inception_os_user_name, system_domain 및 director_name을 시스템 상황에 맞게 설정한다.
1
bosh –e {director_name} -d paasta-monitoring deploy paasta-monitoring.yml \
2
-v inception_os_user_name=ubuntu \
3
-v mariadb_ip=10.20.50.11 \ # mariadb vm private IP
4
-v mariadb_port=3306 \ # mariadb port
5
-v mariadb_username=root \ # mariadb root 계정
6
-v mariadb_password=password \ # mariadb root 계정 password
7
-v influxdb_ip=10.20.50.15 \ # influxdb vm private IP
8
-v bosh_url=10.20.0.7 \ # bosh private IP
9
-v bosh_password=2w87no4mgc9mtpc0zyus \ # bosh admin password
10
-v director_name=micro-bosh \ # bosh director 명
11
-v paasta_deploy_name=paasta \ # paasta deployment 명
12
-v paasta_cell_prefix=cell \ # paasta cell 명
13
-v paasta_username=admin \ # paasta admin 계정
14
-v paasta_password=admin \ # paasta admin password
15
-v smtp_url=127.0.0.1 \ # smtp server url
16
-v smtp_port=25 \ # smtp server port
17
-v mail_sender=csupshin\ # smtp server admin id
18
-v mail_password=xxxx\ # smtp server admin password
19
-v mail_enable=flase \ # alarm 발생시 mail전송 여부
20
-v mail_tls_enable=false \ # smtp서버 인증시 tls모드인경우 true
21
-v redis_ip=10.20.40.11 \ # redis private ip
22
-v redis_password=password \ # redis 인증 password
23
-v utc_time_gap=9 \ # utc time zone과 Client time zone과의 시간 차이
24
-v monit_public_ip=xxx.xxx.xxx.xxx \ # 설치시 monitoring-web VM의 public ip
25
-v system_domain={System_domain} #PaaS-TA 설치시 설정한 System Domain
26
-v prometheus_ip=35.188.183.252 \
27
-v kubernetes_ip=211.251.238.234 \
28
-v pinpoint_ip=101.55.50.216 \
29
-v pinpoint_was_ip=10.1.81.123 \
30
-v cassbroker_ip=13.124.44.35 \
31
-v kubernetes_token=eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm........
Copied!
Note: 1) mariadb, influxdb, redis vm은 사용자가 직접 ip를 지정한다. Ip 지정시 paasta-monitoring.yml의 az와 cloud-config의 subnet이 일치하는 ip대역내에 ip를 지정한다. 2) bosh_url: bosh 설치시 설정한 bosh private ip 3) bosh_password: bosh admin Password로 bosh deploy시 생성되는 bosh admin password를 입력해야 한다. ~/workspace/paasta-5.0/deployment/bosh-deployment/{iaas}/creds.yml creds.yml admin_password: xxxxxxxxx 4) smtp_url: smtp Server ip (PaaS-TA를 설치한 시스템에서 사용가능한 smtp 서버 IP 5) monit_public_ip: monitoring web의 public ip로 외부에서 Monitoring 화면에 접속하기 위해 필요한 외부 ip(public ip 필요) 6) system_domain: paasta를 설치 할때 설정한 system_domain을 입력한다. 7) pinpoint_ip는 설지한 pinpoint_haproxy_webui public ip를 지정한다. 8) pinpoint_was_ip는 설치한 pinpoint_haproxy_webui 내부 ip를 지정한다 9) prometheus_ip는 Kubernetes의 prometheus-prometheus-prometheus-oper-prometheus-0 Pod의 Node ip를 지정한다. 참조) 3.6.4. prometheus-prometheus-prometheus-oper-prometheus-0 POD의 Node IP를 확인한다. 10) kubernetes_ip는 Kubernetes의 서비스 API ip를 지정한다. 참조) 3.6.5. Kubernetes API URL serverAddress를 확인한다. 11) kubernetes_token는 Kubernetes 서비스 API를 Request 호출할 수 있도록 Header에 설정하는 인증 토큰값을 지정한다. 참조) 3.6.6. Kubernetes API Request 호출시 Header(Authorization) 인증을 위한 Token값을 확인한다. 12) cassbroker_ip는 CaaS 서비스 로그인 인증 처리를 위한 API ip를 지정한다.
deploy-paasta-monitoring.sh을 실행하여 PaaS-TA Monitoring을 설치 한다
1
$ cd ~/workspace/paasta-5.0/deployment/paasta-deployment-monitoring/paasta-monitoring
2
$ deploy-paasta-monitoring.sh
Copied!
PaaS-TA Monitoring이 설치 완료 되었음을 확인한다.
1
$ bosh –e {director_name} vms
Copied!

3.8. PaaS-TA Monitoring IaaS 설치

3.8.1. Pre-requsite

  1. 1.
    Openstack Queens version 이상
  2. 2.
    PaaS-TA가 Openstack에 설치 되어 있어야 한다.
  3. 3.
    설치된 Openstack위에 PaaS-TA에 설치 되어 있어야 한다.(PaaS-TA Agent설치 되어 있어야 한다)
  4. 4.
    IaaS-PaaS-Monitoring 시스템에는 선행작업(Prerequisites)으로 Monasca Server가 설치 되어 있어야 한다. Monasca Client(agent)는 openstack controller, compute node에 설치되어 있어야 한다. 아래 Monasca Server/Client를 먼저 설치 후 IaaS-PaaS-Monitoring을 설치 해야 한다.

3.8.2. Monasca 설치

Monasca는 Server와 Client로 구성되어 있다. Openstack controller/compute Node에 Monasca-Client(Agent)를 설치 하여 Monasca 상태정보를 Monasca-Server에 전송한다. 수집된 Data를 기반으로 IaaS 모니터링을 수행한다. Monasca-Server는 Openstack에서 VM을 수동 생성하여 설치를 진행한다.
3.8.2.1. Monasca Server 설치
3.8.2.2. Monasca Client(agent) 설치

3.9. PaaS-TA Monitoring dashboard 접속

http://{monit_public_ip}:8080/public/login.html 에 접속하여 회원 가입 후 Main Dashboard에 접속한다.
Login 화면에서 회원 가입 버튼을 클릭한다.
member_info에는 사용자가 사용할 ID/PWD를 입력하고 하단 paas-info에는 PaaS-TA admin 권한의 계정을 입력한다. PaaS-TA deploy시 입력한 admin/pwd를 입력해야 한다. 입력후 [인증수행]를 실행후 Joing버튼을 클릭하면 회원가입이 완료된다.
PaaS-TA Monitoring main dashboard 화면
Last modified 1yr ago