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 설치

$ sudo apt-get install python-pip3

2.2. monasca agent 설치

$ sudo pip3 install monasca-agent==2.11.0
$ sudo pip3 install monasca-agent[libvirt]==2.11.0

2.3. 설치확인

$ sudo pip3 list |grep monasca-agent

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 사용자 생성

$ openstack user create --domain default --password-prompt monasca-agent
$ openstack role create monitoring-delegate
  1. Project 사용자 추가

    각각의 프로젝트 멤버관리에 추가한 Cross-Tenant 사용자 정보를 등록한다.

    추가한 Cross-Tenant 사용자를 선택 후, 생성한 Role을 지정한다.

2.4. monasca-setup 실행

2.4.1. Controller Node의 경우

$ sudo monasca-setup \
--username “cross-tenant user id” \
--password “cross-tenant user password” \
--project_name “admin project name” \
--project_id “admin project id” \
--user_domain_id “domain id” \
--project_domain_id “domain id” \
--keystone_url http://“keystone ip”:”keystone auth port” \
--monasca_url http://”monasca ip”:”monasca server port”/v2.0 \
--check_frequency '15' \
--log_level 'DEBUG' \
--insecure true \
--system_only

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

$ sudo monasca-setup \
--username “cross-tenant user id” \
--password “cross-tenant user password” \
--project_name “admin project name” \
--project_id “admin project id” \
--user_domain_id “domain id” \
--project_domain_id “domain id” \
--keystone_url http://“keystone ip”:”keystone auth port” \
--monasca_url http://”monasca ip”:”monasca server port”/v2.0 \
--check_frequency '15' \
--log_level 'DEBUG' \
--insecure true \
--system_only
sudo monasca-setup -d libvirt -a 'ping_check=false alive_only=false'

2.5. monasca agent configuration 파일 수정.

$ sudo vi /etc/monasca/agent/agent.yaml
Api:
amplifier: 0
backlog_send_rate: 1000
ca_file: null
endpoint_type: null
insecure: true
keystone_url: http://”keystone ip” :”keystone auth port”
max_buffer_size: 1000
max_measurement_buffer_size: -1
password: cfmonit
project_domain_id: default
project_domain_name: default
project_id: “admin project id”
project_name: “admin project name”
region_name: null
service_type: null
url: http:// “monasca server ip”:”monasca server port”/v2.0
user_domain_id: “domain id”
user_domain_name: default
username: admin
Logging:
collector_log_file: /var/log/monasca/agent/collector.log
enable_logrotate: true
forwarder_log_file: /var/log/monasca/agent/forwarder.log
log_level: DEBUG # Log 레벨 설정
statsd_log_file: /var/log/monasca/agent/statsd.log
Main:
check_freq: 15 # 수집 주기(초)
collector_restart_interval: 24
dimensions: {}
hostname: controller
num_collector_threads: 1
pool_full_max_retries: 4
sub_collection_warn: 6
Statsd:
monasca_statsd_port: 8125

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

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

init_config: null
instances:
- built_by: System
name: cpu_stats
send_rollup_stats: True # vcpu measurement Option 추가

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

init_config: null
instances:
- built_by: System
device_blacklist_re: .*freezer_backup_snap.*
ignore_filesystem_types: iso9660,tmpfs
name: disk_stats
send_rollup_stats: True # Node disk 사용량 Option 추가

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

init_config:
alive_only: false
auth_url: http://controller:35357
cache_dir: /dev/shm
customer_metadata:
- scale_group
disk_collection_period: 0
max_ping_concurrency: 8
metadata:
- scale_group
nova_refresh: 14400
password: cfmonit
ping_check: false
project_name: admin
username: admin
vm_cpu_check_enable: true
vm_disks_check_enable: true
vm_extended_disks_check_enable: true # vm disk 사용량 추가
vm_network_check_enable: true
vm_ping_check_enable: true
vm_probation: 300
vnic_collection_period: 0
instances: []

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

init_config: null
instances:
- built_by: MonAgent
detailed: true
dimensions:
component: monasca-agent
service: monitoring
name: monasca-agent
username: mon-agent
- built_by: Nova
detailed: true
dimensions:
component: nova-compute
service: compute
exact_match: false
name: nova-compute
search_string:
- nova-compute
- built_by: Glance
detailed: true
dimensions:
component: glance
service: glance-api
exact_match: false
name: glance-api
search_string:
- glance-api
- built_by: ProcessCheck
detailed: true
dimensions:
component: nova
service: nova-api
exact_match: true
name: nova-api
search_string:
- nova-api
- built_by: ProcessCheck
detailed: true
dimensions:
component: keystone
service: keystone
exact_match: false
name: keystone
search_string:
- keystone
- built_by: ProcessCheck
detailed: true
dimensions:
component: rabbitmq
service: rabbitmq
exact_match: false
name: rabbitmq
search_string:
- rabbitmq
- built_by: ProcessCheck
detailed: true
dimensions:
component: neutron
service: neutron-server
exact_match: false
name: neutron-server
search_string:
- neutron-server
- built_by: ProcessCheck
detailed: true
dimensions:
component: neutron
service: neutron-metadata-agent
exact_match: false
name: neutron-metadata-agent
search_string:
- neutron-metadata-agent
- built_by: ProcessCheck
detailed: true
dimensions:
component: ceph
service: ceph-mgr
exact_match: false
name: ceph-mgr
search_string:
- ceph-mgr
- built_by: ProcessCheck
detailed: true
dimensions:
component: ceph
service: ceph-mon
exact_match: false
name: ceph-mon
search_string:
- ceph-mon

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

init_config: null
instances:
- built_by: MonAgent
detailed: true
dimensions:
component: monasca-agent
service: monitoring
name: monasca-agent
username: mon-agent
- built_by: Nova
detailed: true
dimensions:
component: nova-compute
service: compute
exact_match: false
name: nova-compute
search_string:
- nova-compute
- built_by: ProcessCheck
detailed: true
dimensions:
component: ceph
service: ceph-mgr
exact_match: false
name: ceph-mgr
search_string:
- ceph-mgr
- built_by: ProcessCheck
detailed: true
dimensions:
component: ceph
service: ceph-mon
exact_match: false
name: ceph-mon
search_string:
- ceph-mon
- built_by: ProcessCheck
detailed: true
dimensions:
component: ceph
service: ceph-osd
exact_match: false
name: ceph-osd
search_string:
- ceph-osd
- built_by: ProcessCheck
detailed: true
dimensions:
component: neutron
service: neutron-server
exact_match: false
name: neutron-server
search_string:
- neutron-server
- built_by: ProcessCheck
detailed: true
dimensions:
component: neutron
service: neutron-metadata-agent
exact_match: false
name: neutron-metadata-agent
search_string:
- neutron-metadata-agent
- built_by: ProcessCheck
detailed: true
dimensions:
component: neutron
service: neutron-linuxbridge-agent
exact_match: false
name: neutron-linuxbridge-agent
search_string:
- neutron-linuxbridge-agent
- built_by: ProcessCheck
detailed: true
dimensions:
component: qemu
service: qemu
exact_match: false
name: qemu-system-x86
search_string:
- qemu-system-x86

2.7. monasca agent 서비스 재시작.

$ sudo service monasca-collector restart
$ sudo service monasca-forwarder restart
$ sudo service monasca-statsd restart
  • 서비스 등록이 되지 않을경우

/etc/systemd/system/monasca-agent.service
[Unit]
Description=Monasca Agent
[Service]
Type=simple
User=mon-agent
Group=mon-agent
Restart=on-failure
ExecStart=/usr/local/bin/supervisord -c /etc/monasca/agent/supervisor.conf -n
[Install]
WantedBy=multi-user.target
$cd /etc/systemd/system/multi-user.target.wants
sudo ln –s /etc/systemd/system/monasca-agent.service ./monasca-agent.service
  • cf-mon os user 자동 등록되지 않을경우 사용자 수동 등록

$ sudo useradd mon-agent

2.8. 확인

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

/etc/systemd/system/monasca-agent.service
[Unit]
Description=Monasca Agent
[Service]
Type=simple
User=mon-agent
Group=mon-agent
Restart=on-failure
ExecStart=/usr/local/bin/supervisord -c /etc/monasca/agent/supervisor.conf -n
[Install]
WantedBy=multi-user.target
$cd /etc/systemd/system/multi-user.target.wants
sudo ln –s /etc/systemd/system/monasca-agent.service /etc/systemd/system/monasca-agent.service

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

$ sudo useradd mon-agent

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

$ cd /
$ sudo chmod 757 /run

3. FileBeat 설치 및 설정

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

3.1. filebeat repository 등록

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

3.2. filebeat 설치

$ sudo apt-get install -y filebeat=5.6.16

3.3. filebeat configuration 파일 수정

$ sudo vi /etc/filebeat/filebeat.yml
# Add log files
paths:
- /var/log/cinder/*.log # 수집하고자 하는 로그파일을 지정한다.
- /var/log/glance/*.log # 여러개를 지정할 수 있다.
- /var/log/neutron/*.log
# Add document type
document-type: syslog
#Disable Elasticsearch output
#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["localhost:9200"]
# output.logstash:
# The Logstash hosts
hosts: ["elasticsearch server ip:5443"] #elasticsearch server ip address
bulk_max_size: 2048
ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"] #logstash certificate file location
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false

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

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

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

$ sudo vi /etc/hosts
“elasticsearch server ip” “hostname”
ex) 10.10.10.10 elasticsearch-server

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

$ sudo service filebeat restart

3.7. 확인.

$ ps -ef |grep filebeat