PaaS-TA-5.5.0
Search…
Monasca Client 가이드

Monasca Client 설치 가이드

1. 개요

1.1. 문서 목적

본 문서(설치가이드)는, IaaS(Infrastructure as a Service) 중 하나인 Openstack 기반의 Cloud 서비스 상태 및 자원 정보, 그리고 VM Instance의 시스템 정보와 로그정보를 수집하여, 실시간으로 서버로 정보를 전송하기 위한 Agent를 설치하는데 그 목적이 있다.

1.2. 범위

본 문서의 범위는 Openstack 모니터링을 위한 오픈소스인 Monasca 제품군의 설치를 위한 내용으로 한정되어 있다.

1.3. 확인사항

  • Openstack 기반 환경 구성에 따라 Agent Setup 설정이 달라짐을 확인한다.
  • Openstack newton 버전
  • Node OS (Ubuntu 18.0.14)
  • 크게 Controller Node .와 Compute Node로 구분된다.
  • Controller Node에는 Nova, Neutron, Cinder, Glance, Keystone, Swift 서비스가 설치되는 환경이고, Compute Node에는 VM(Instance)이 생성되어 실행되는 환경을 의미한다.

1.4. 참고자료

2. Monasca Agent 설치 및 설정

2.1. dependencies 설치

1
$ sudo apt-get install python-pip3
Copied!

2.2. monasca agent 설치

1
$ sudo pip3 install monasca-agent==2.11.0
2
3
$ sudo pip3 install monasca-agent[libvirt]==2.11.0
Copied!

2.3. 설치확인

1
$ sudo pip3 list |grep monasca-agent
Copied!

2.3.1. Reference : Cross-Project(Tenant) 사용자 추가 및 권한 부여

Openstack 기반으로 생성된 모든 Project(Tenant)의 정보를 하나의 계정으로 수집 및 조회하기 위해서는 Cross-Tenant 사용자를 생성하여, 각각의 Project(Tenant)마다 조회할 수 있도록 멤버로 등록한다. Openstack Cli를 이용하여 Cross-Tenant 사용자를 생성한 후, Openstack Horizon 화면으로 통해 각각의 프로젝트 사용자 정보에 생성한 Cross-Tenant 사용자 및 권한을 부여한다. 1. Cross-Tenant 사용자 생성
1
$ openstack user create --domain default --password-prompt monasca-agent
2
$ openstack role create monitoring-delegate
Copied!
  1. 1.
    Project 사용자 추가
    각각의 프로젝트 멤버관리에 추가한 Cross-Tenant 사용자 정보를 등록한다.
    추가한 Cross-Tenant 사용자를 선택 후, 생성한 Role을 지정한다.

2.4. monasca-setup 실행

2.4.1. Controller Node의 경우

1
$ sudo monasca-setup \
2
--username “cross-tenant user id” \
3
--password “cross-tenant user password” \
4
--project_name “admin project name” \
5
--project_id “admin project id” \
6
--user_domain_id “domain id” \
7
--project_domain_id “domain id” \
8
--keystone_url http://“keystone ip”:”keystone auth port” \
9
--monasca_url http://”monasca ip”:”monasca server port”/v2.0 \
10
--check_frequency '15' \
11
--log_level 'DEBUG' \
12
--insecure true \
13
--system_only
Copied!

2.4.2. Compute Node의 경우 (System 정보 수집과 VM 정보 수집 setup)

1
$ sudo monasca-setup \
2
--username “cross-tenant user id” \
3
--password “cross-tenant user password” \
4
--project_name “admin project name” \
5
--project_id “admin project id” \
6
--user_domain_id “domain id” \
7
--project_domain_id “domain id” \
8
--keystone_url http://“keystone ip”:”keystone auth port” \
9
--monasca_url http://”monasca ip”:”monasca server port”/v2.0 \
10
--check_frequency '15' \
11
--log_level 'DEBUG' \
12
--insecure true \
13
--system_only
14
15
16
sudo monasca-setup -d libvirt -a 'ping_check=false alive_only=false'
Copied!

2.5. monasca agent configuration 파일 수정.

1
$ sudo vi /etc/monasca/agent/agent.yaml
2
Api:
3
amplifier: 0
4
backlog_send_rate: 1000
5
ca_file: null
6
endpoint_type: null
7
insecure: true
8
keystone_url: http://”keystone ip” :”keystone auth port”
9
max_buffer_size: 1000
10
max_measurement_buffer_size: -1
11
password: cfmonit
12
project_domain_id: default
13
project_domain_name: default
14
project_id: “admin project id”
15
project_name: “admin project name”
16
region_name: null
17
service_type: null
18
url: http:// “monasca server ip”:”monasca server port”/v2.0
19
user_domain_id: “domain id”
20
user_domain_name: default
21
username: admin
22
Logging:
23
collector_log_file: /var/log/monasca/agent/collector.log
24
enable_logrotate: true
25
forwarder_log_file: /var/log/monasca/agent/forwarder.log
26
log_level: DEBUG # Log 레벨 설정
27
statsd_log_file: /var/log/monasca/agent/statsd.log
28
Main:
29
check_freq: 15 # 수집 주기(초)
30
collector_restart_interval: 24
31
dimensions: {}
32
hostname: controller
33
num_collector_threads: 1
34
pool_full_max_retries: 4
35
sub_collection_warn: 6
36
Statsd:
37
monasca_statsd_port: 8125
Copied!

2.6. Monasca Agent 시스템 정보 수집 설정 파일 수정

2.6.1. /etc/monasca/agent/conf.d/cpu.yaml

1
init_config: null
2
instances:
3
- built_by: System
4
name: cpu_stats
5
send_rollup_stats: True # vcpu measurement Option 추가
Copied!

2.6.2. /etc/monasca/agent/conf.d/disk.yaml

1
init_config: null
2
instances:
3
- built_by: System
4
device_blacklist_re: .*freezer_backup_snap.*
5
ignore_filesystem_types: iso9660,tmpfs
6
name: disk_stats
7
send_rollup_stats: True # Node disk 사용량 Option 추가
Copied!

2.6.3. /etc/monasca/agent/conf.d/libvirt.yaml (Compute Node에 한함)

1
init_config:
2
alive_only: false
3
auth_url: http://controller:35357
4
cache_dir: /dev/shm
5
customer_metadata:
6
- scale_group
7
disk_collection_period: 0
8
max_ping_concurrency: 8
9
metadata:
10
- scale_group
11
nova_refresh: 14400
12
password: cfmonit
13
ping_check: false
14
project_name: admin
15
username: admin
16
vm_cpu_check_enable: true
17
vm_disks_check_enable: true
18
vm_extended_disks_check_enable: true # vm disk 사용량 추가
19
vm_network_check_enable: true
20
vm_ping_check_enable: true
21
vm_probation: 300
22
vnic_collection_period: 0
23
instances: []
Copied!

2.6.4. /etc/monasca/agent/conf.d/process.yaml(Controller Node 한함)

1
init_config: null
2
instances:
3
- built_by: MonAgent
4
detailed: true
5
dimensions:
6
component: monasca-agent
7
service: monitoring
8
name: monasca-agent
9
username: mon-agent
10
- built_by: Nova
11
detailed: true
12
dimensions:
13
component: nova-compute
14
service: compute
15
exact_match: false
16
name: nova-compute
17
search_string:
18
- nova-compute
19
- built_by: Glance
20
detailed: true
21
dimensions:
22
component: glance
23
service: glance-api
24
exact_match: false
25
name: glance-api
26
search_string:
27
- glance-api
28
- built_by: ProcessCheck
29
detailed: true
30
dimensions:
31
component: nova
32
service: nova-api
33
exact_match: true
34
name: nova-api
35
search_string:
36
- nova-api
37
- built_by: ProcessCheck
38
detailed: true
39
dimensions:
40
component: keystone
41
service: keystone
42
exact_match: false
43
name: keystone
44
search_string:
45
- keystone
46
- built_by: ProcessCheck
47
detailed: true
48
dimensions:
49
component: rabbitmq
50
service: rabbitmq
51
exact_match: false
52
name: rabbitmq
53
search_string:
54
- rabbitmq
55
- built_by: ProcessCheck
56
detailed: true
57
dimensions:
58
component: neutron
59
service: neutron-server
60
exact_match: false
61
name: neutron-server
62
search_string:
63
- neutron-server
64
- built_by: ProcessCheck
65
detailed: true
66
dimensions:
67
component: neutron
68
service: neutron-metadata-agent
69
exact_match: false
70
name: neutron-metadata-agent
71
search_string:
72
- neutron-metadata-agent
73
- built_by: ProcessCheck
74
detailed: true
75
dimensions:
76
component: ceph
77
service: ceph-mgr
78
exact_match: false
79
name: ceph-mgr
80
search_string:
81
- ceph-mgr
82
- built_by: ProcessCheck
83
detailed: true
84
dimensions:
85
component: ceph
86
service: ceph-mon
87
exact_match: false
88
name: ceph-mon
89
search_string:
90
- ceph-mon
Copied!

2.6.5. /etc/monasca/agent/conf.d/process.yaml(Compute Node 한함)

1
init_config: null
2
instances:
3
- built_by: MonAgent
4
detailed: true
5
dimensions:
6
component: monasca-agent
7
service: monitoring
8
name: monasca-agent
9
username: mon-agent
10
- built_by: Nova
11
detailed: true
12
dimensions:
13
component: nova-compute
14
service: compute
15
exact_match: false
16
name: nova-compute
17
search_string:
18
- nova-compute
19
- built_by: ProcessCheck
20
detailed: true
21
dimensions:
22
component: ceph
23
service: ceph-mgr
24
exact_match: false
25
name: ceph-mgr
26
search_string:
27
- ceph-mgr
28
- built_by: ProcessCheck
29
detailed: true
30
dimensions:
31
component: ceph
32
service: ceph-mon
33
exact_match: false
34
name: ceph-mon
35
search_string:
36
- ceph-mon
37
- built_by: ProcessCheck
38
detailed: true
39
dimensions:
40
component: ceph
41
service: ceph-osd
42
exact_match: false
43
name: ceph-osd
44
search_string:
45
- ceph-osd
46
- built_by: ProcessCheck
47
detailed: true
48
dimensions:
49
component: neutron
50
service: neutron-server
51
exact_match: false
52
name: neutron-server
53
search_string:
54
- neutron-server
55
- built_by: ProcessCheck
56
detailed: true
57
dimensions:
58
component: neutron
59
service: neutron-metadata-agent
60
exact_match: false
61
name: neutron-metadata-agent
62
search_string:
63
- neutron-metadata-agent
64
- built_by: ProcessCheck
65
detailed: true
66
dimensions:
67
component: neutron
68
service: neutron-linuxbridge-agent
69
exact_match: false
70
name: neutron-linuxbridge-agent
71
search_string:
72
- neutron-linuxbridge-agent
73
- built_by: ProcessCheck
74
detailed: true
75
dimensions:
76
component: qemu
77
service: qemu
78
exact_match: false
79
name: qemu-system-x86
80
search_string:
81
- qemu-system-x86
Copied!

2.7. monasca agent 서비스 재시작.

1
$ sudo service monasca-collector restart
2
$ sudo service monasca-forwarder restart
3
$ sudo service monasca-statsd restart
Copied!
  • 서비스 등록이 되지 않을경우
1
/etc/systemd/system/monasca-agent.service
2
3
[Unit]
4
Description=Monasca Agent
5
[Service]
6
Type=simple
7
User=mon-agent
8
Group=mon-agent
9
Restart=on-failure
10
ExecStart=/usr/local/bin/supervisord -c /etc/monasca/agent/supervisor.conf -n
11
12
[Install]
13
WantedBy=multi-user.target
14
15
$cd /etc/systemd/system/multi-user.target.wants
16
sudo ln –s /etc/systemd/system/monasca-agent.service ./monasca-agent.service
Copied!
  • cf-mon os user 자동 등록되지 않을경우 사용자 수동 등록
1
$ sudo useradd mon-agent
Copied!

2.8. 확인

2.9. 서비스 자동등록 되지 않을경우

1
/etc/systemd/system/monasca-agent.service
2
3
[Unit]
4
Description=Monasca Agent
5
[Service]
6
Type=simple
7
User=mon-agent
8
Group=mon-agent
9
Restart=on-failure
10
ExecStart=/usr/local/bin/supervisord -c /etc/monasca/agent/supervisor.conf -n
11
12
[Install]
13
WantedBy=multi-user.target
14
15
$cd /etc/systemd/system/multi-user.target.wants
16
sudo ln –s /etc/systemd/system/monasca-agent.service /etc/systemd/system/monasca-agent.service
Copied!

2.10. Agent 사용자 mon-agent 사용자 자동 등록 되지 않는경우

1
$ sudo useradd mon-agent
Copied!

2.11. Compute Node VM메트릭 정보가 수집 되지 않는경우

1
$ cd /
2
$ sudo chmod 757 /run
Copied!

3. FileBeat 설치 및 설정

Openstack Compute Node에서 발생한는 Log정보를 수집하기 위해서는 LogAget를 Compute/Controller Node에 설치 해야 한다. Elastic Search에서 제공하는 FileBeat를 이용하여 Openstack Node정보를 수집한다.

3.1. filebeat repository 등록

1
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
2
OK
3
4
$ echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
5
$ sudo apt-get update
Copied!

3.2. filebeat 설치

1
$ sudo apt-get install -y filebeat=5.6.16
Copied!

3.3. filebeat configuration 파일 수정

1
$ sudo vi /etc/filebeat/filebeat.yml
2
3
# Add log files
4
paths:
5
- /var/log/cinder/*.log # 수집하고자 하는 로그파일을 지정한다.
6
- /var/log/glance/*.log # 여러개를 지정할 수 있다.
7
- /var/log/neutron/*.log
8
# Add document type
9
document-type: syslog
10
11
#Disable Elasticsearch output
12
#output.elasticsearch:
13
# Array of hosts to connect to.
14
#hosts: ["localhost:9200"]
15
16
# output.logstash:
17
# The Logstash hosts
18
hosts: ["elasticsearch server ip:5443"] #elasticsearch server ip address
19
bulk_max_size: 2048
20
ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"] #logstash certificate file location
21
template.name: "filebeat"
22
template.path: "filebeat.template.json"
23
template.overwrite: false
Copied!

3.4. Elasticsearch-Logstash Certificate 파일을 Client 환경에 복사한다.

1
$ sudo scp [email protected]”elasticsearch server ip”:/etc/logstash/logstash.crt /etc/filebeat/
Copied!

3.5. /etc/host 파일에 Elasticsearch Server 정보를 등록한다.

1
$ sudo vi /etc/hosts
2
3
“elasticsearch server ip” “hostname”
4
5
ex) 10.10.10.10 elasticsearch-server
Copied!

3.6. filebeat 서비스를 재가동한다.

1
$ sudo service filebeat restart
Copied!

3.7. 확인.

1
$ ps -ef |grep filebeat
Copied!
Last modified 8mo ago