Telemetry service 서비스는 일종의 모니터링 하는 서비스이며 코드명은 ceilometer이다.

설치는 우선 controller 노드부터한다.

 

다른 서비스와 마찬가지로 DB부터 설치하는데 다른 서비스와는 다르게 NoSQL인 mongoDB를 사용한다.

ceilometer database를 만든다. CEILOMETER_DBPASS는 사용할 패스워드로 적절하게 변경한다.

[root@controller ~]# mongo --host controller --eval '
   db = db.getSiblingDB("ceilometer");
   db.createUser({user: "ceilometer",
   pwd: "CEILOMETER_DBPASS",

   roles: [ "readWrite", "dbAdmin" ]})'
MongoDB shell version: 2.6.11
connecting to: controller:27017/test
Successfully added user: { "user" : "ceilometer", "roles" : [ "readWrite", "dbAdmin" ] }
[root@controller ~]#

 

ceilometer 유저를 만들고 admin 롤을 부여한다.

[root@controller ~]# openstack user create --domain default --password-prompt ceilometer
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | default                          |
| enabled   | True                             |
| id        | 594e06a2424b46fa848273811be23de2 |
| name      | ceilometer                       |
+-----------+----------------------------------+

[root@controller ~]# openstack role add --project service --user ceilometer admin
[root@controller ~]#

 

ceilometer 서비스를 만든다.

[root@controller ~]# openstack service create --name ceilometer \
   --description "Telemetry" metering
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Telemetry                        |
| enabled     | True                             |
| id          | 2ff3fef644e0427187b6d0799490c193 |
| name        | ceilometer                       |
| type        | metering                         |
+-------------+----------------------------------+

 

ceilometer 서비스 api endpoint를 만든다.

[root@controller ~]# openstack endpoint create --region RegionOne metering public http://controller:8777
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 9ae278fb7ff74faf989cc8388cb0b827 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 2ff3fef644e0427187b6d0799490c193 |
| service_name | ceilometer                       |
| service_type | metering                         |
| url          | http://controller:8777           |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne metering internal http://controller:8777
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 2ed1d6a7dfa44580bb4738578cb12862 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 2ff3fef644e0427187b6d0799490c193 |
| service_name | ceilometer                       |
| service_type | metering                         |
| url          | http://controller:8777           |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne metering admin http://controller:8777
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 22b448eeb52241dab95199b97e274e58 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 2ff3fef644e0427187b6d0799490c193 |
| service_name | ceilometer                       |
| service_type | metering                         |
| url          | http://controller:8777           |
+--------------+----------------------------------+

 

 

패키지를 설치한다.

[root@controller ~]# yum install -y openstack-ceilometer-api \
   openstack-ceilometer-collector openstack-ceilometer-notification \
   openstack-ceilometer-central openstack-ceilometer-alarm \
   python-ceilometerclient
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.mirror.cdnetworks.com
 * extras: centos.mirror.cdnetworks.com
 * updates: www.ftp.ne.jp
Package python-ceilometerclient-1.5.0-1.el7.noarch already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package openstack-ceilometer-alarm.noarch 1:5.0.2-1.el7 will be installed

...(중략).. 

  unbound-libs.x86_64 0:1.4.20-26.el7             

  yajl.x86_64 0:2.0.4-4.el7

Complete!
[root@controller ~]#

 

 

/etc/ceilometer/ceilometer.conf 파일을 아래와 같이 수정한다.
[database] 섹션에서 DB 접근설정을 한다. CEILOMETER_DBPASS는 설정한 패스워드로 변경한다.
[DEFAULT] 와 [oslo_messaging_rabbit] 섹션에서 RabbitMQ 설정을 한다. RABBIT_PASS는 설정한 패스워드로 변경한다.
[DEFAULT] 와 [keystone_authtoken] 섹션에서 인증서비스 접근 설정을 한다. CEILOMETER_PASS는 설정한 패스워드로 변경한다.
[service_credentials] 섹션에서 서비스 작업증명 설정을 한다. CEILOMETER_PASS는 설정한 패스워드로 변경한다.

(옵션)[DEFAULT] 섹션에서 트러블슈팅시 도움이 될수 있게 verbose를 활성화한다.

[root@controller ~]# vi /etc/ceilometer/ceilometer.conf

[DEFAULT]
...
rpc_backend = rabbit
...
auth_strategy = keystone

...

 

 

[database]
...
connection = mongodb://ceilometer:CEILOMETER_DBPASS@controller:27017/ceilometer

...

 

 

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

...

 


[DEFAULT]

[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = ceilometer
password = CEILOMETER_PASS

...

 


[service_credentials]
...
os_auth_url = http://controller:5000/v2.0
os_username = ceilometer
os_tenant_name = service
os_password = CEILOMETER_PASS
os_endpoint_type = internalURL
os_region_name = RegionOne

 

서비스를 등록 및 시작한다.

[root@controller ~]# systemctl enable openstack-ceilometer-api.service \
   openstack-ceilometer-notification.service \
   openstack-ceilometer-central.service \
   openstack-ceilometer-collector.service \
   openstack-ceilometer-alarm-evaluator.service \
   openstack-ceilometer-alarm-notifier.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-ceilometer-api.service to /usr/lib/systemd/system/openstack-ceilometer-api.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-ceilometer-notification.service to /usr/lib/systemd/system/openstack-ceilometer-notification.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-ceilometer-central.service to /usr/lib/systemd/system/openstack-ceilometer-central.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-ceilometer-collector.service to /usr/lib/systemd/system/openstack-ceilometer-collector.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-ceilometer-alarm-evaluator.service to /usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-ceilometer-alarm-notifier.service to /usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service.
[root@controller ~]# systemctl start openstack-ceilometer-api.service \
   openstack-ceilometer-notification.service \
   openstack-ceilometer-central.service \
   openstack-ceilometer-collector.service \
   openstack-ceilometer-alarm-evaluator.service \
   openstack-ceilometer-alarm-notifier.service

 

 

 

이미지 서비스와의 연동을 위해 glance설정파일도 수정한다.

/etc/glance/glance-api.conf 와 /etc/glance/glance-registry.conf 파일을 아래와 같이 수정한다.

[DEFAULT] 와 [oslo_messaging_rabbit] 섹션에서 notifications and RabbitMQ 설정을 한다. RABBIT_PASS는 설정한 password로 변경한다.

[root@controller ~]# vi /etc/glance/glance-api.conf
[DEFAULT]

...
notification_driver = messagingv2
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

 

2개의 파일을 모두 위와 같은 설정을 한후 이미지 서비스를 재시작한다.

[root@controller ~]# systemctl restart openstack-glance-api.service openstack-glance-registry.service

 

다음으로 컴퓨트 서비스와 연동을 위해

각각의 컴퓨트 노트로 이동한다.

우선 패키지부터 설치한다.

[root@compute1 ~]# yum install -y openstack-ceilometer-compute python-ceilometerclient python-pecan
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.mirror.cdnetworks.com
 * extras: centos.mirror.cdnetworks.com
 * updates: centos.mirror.cdnetworks.com
Package python2-pecan-1.0.2-2.el7.noarch already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package openstack-ceilometer-compute.noarch 1:5.0.2-1.el7 will be installed

...(중략)... 

  python-tooz.noarch 0:1.24.0-1.el7
  python-werkzeug.noarch 0:0.9.1-2.el7                  

  python2-jsonpath-rw-ext.noarch 0:0.1.7-1.1.el7

Complete!
[root@compute1 ~]#

 

/etc/ceilometer/ceilometer.conf 파일을 아래와 같이 수정한다.

[DEFAULT] 와 [oslo_messaging_rabbit] 섹션에 RabbitMQ 접근 설정을 한다. RABBIT_PASS는 설정된 패스워드로 변경한다.
[DEFAULT] 와 [keystone_authtoken] 섹션에 인증서비스 접근 설정을 한다. CEILOMETER_PASS는 설정된 패스워드로 변경한다.
[service_credentials] 섹션에 서비스 자격정보를 설정한다. CEILOMETER_PASS는 설정된 패스워드로 변경한다.
(옵션)[DEFAULT] 섹션에서 트러블슈팅시 도움이 될수 있게 verbose를 활성화한다.

[root@compute1 ~]# vi /etc/ceilometer/ceilometer.conf

[DEFAULT]
...
rpc_backend = rabbit
...
auth_strategy = keystone
...
verbose = True

...

 

 

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
...


[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = ceilometer
password = CEILOMETER_PASS
...


[service_credentials]
...
os_auth_url = http://controller:5000/v2.0
os_username = ceilometer
os_tenant_name = service
os_password = CEILOMETER_PASS
os_endpoint_type = internalURL
os_region_name = RegionOne 

 

 

 

/etc/nova/nova.conf 파일의 [DEFAULT]섹션을 아래와 같이 수정한다.

[root@compute1 ~]# vi /etc/nova/nova.conf

[DEFAULT]
...
instance_usage_audit = True
instance_usage_audit_period = hour
notify_on_state_change = vm_and_task_state
notification_driver = messagingv2

 

ceilometer 서비스 등록 및 시작, compute 서비스 역시 변경사항이 있으니 재시작 해준다.

[root@compute1 ~]# systemctl enable openstack-ceilometer-compute.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-ceilometer-compute.service to /usr/lib/systemd/system/openstack-ceilometer-compute.service.
[root@compute1 ~]# systemctl start openstack-ceilometer-compute.service
[root@compute1 ~]# systemctl restart openstack-nova-compute.service

 

 

 

다음으로 block storage 서비스와 연동을 위해

각각의 block1 노드로 이동한다.

우선 설정 파일을 수정한다.

/etc/cinder/cinder.conf 파일의 [DEFAULT]섹션에 아래와 같이 notification를 설정한다.

[root@block1 ~]# vi /etc/cinder/cinder.conf

[DEFAULT]
...

notification_driver = messagingv2

 

서비스 재시작을 위해 컨트롤러 및 block1노드의 서비스들을 각각 재시작 해준다.

[root@controller ~]# systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service

 

[root@block1 ~]# systemctl restart openstack-cinder-volume.service

 

 

다음으로 block storage 서비스와 연동을 설정한다.

Telemetry service 서비스는 Object Storage service 에 접근하는데 ResellerAdmin 롤을 사용한다.

우선 컨트롤로 노드에서 ResellerAdmin 롤을 만들고 ResellerAdmin 롤에 ceilometer 유저를 추가한다.

[root@controller ~]# openstack role create ResellerAdmin
+-------+----------------------------------+
| Field | Value                            |
+-------+----------------------------------+
| id    | d77ca941e0324c6c98d69724e8bffbaf |
| name  | ResellerAdmin                    |
+-------+----------------------------------+

[root@controller ~]# openstack role add --project service --user ceilometer ResellerAdmin

 

다음으로 설치는 컨트롤러 노드 또는 오브젝트 proxy서비스가 실행되는 서버에 진행한다.

/etc/swift/proxy-server.conf파일을 아래와 같이 수정한다.

[filter:keystoneauth] 섹션에 ResellerAdmin 롤을 추가한다.
[pipeline:main] 섹션에 ceilometer를 추가한다.
[filter:ceilometer] 섹션에 notifications 설정을 한다. RABBIT_PASS는 설정한 패스워드로 변경한다.

[root@controller ~]# vi /etc/swift/proxy-server.conf

[filter:keystoneauth]
...
operator_roles = admin, user, ResellerAdmin
...


[pipeline:main]
pipeline = catch_errors gatekeeper healthcheck proxy-logging cache
container_sync bulk ratelimit authtoken keystoneauth container-quotas
account-quotas slo dlo versioned_writes proxy-logging ceilometer
proxy-server
...


[filter:ceilometer]
paste.filter_factory = ceilometermiddleware.swift:filter_factory
...
control_exchange = swift
url = rabbit://openstack:RABBIT_PASS@controller:5672/
driver = messagingv2
topic = notifications
log_level = WARN

 

스위프트 프록시 서비스를 재시작한다.

[root@controller ~]# systemctl restart openstack-swift-proxy.service

 

 

 

설치가 잘되었는지 확인한다.

[root@controller ~]# ceilometer meter-list
+-------------+-------+-------+--------------------------------------+---------+----------------------------------+
| Name        | Type  | Unit  | Resource ID                          | User ID | Project ID                       |
+-------------+-------+-------+--------------------------------------+---------+----------------------------------+
| image       | gauge | image | 49338c63-033c-40a3-abdd-d6410799de24 | None    | 94f9c25aaa4246b0915afacca2d65c22 |
| image.size  | gauge | B     | 49338c63-033c-40a3-abdd-d6410799de24 | None    | 94f9c25aaa4246b0915afacca2d65c22 |
+-------------+-------+-----------+----------------------------------+---------+----------------------------------+

 

 

Image service에서 CirrOS를 다운 받고 meter list를 다시 확인하여 다운되는 것을 모니터링이 잘되는지 확인한다.

[root@controller ~]# IMAGE_ID=$(glance image-list | grep 'cirros' | awk '{ print $2 }')
[root@controller ~]# glance image-download $IMAGE_ID > /tmp/cirros.img
[root@controller ~]# ceilometer meter-list
+----------------+-------+-------+--------------------------------------+----------------------------------+----------------------------------+

| Name           | Type  | Unit  | Resource ID                          | User ID                          | Project ID                       |
+----------------+-------+-------+--------------------------------------+----------------------------------+----------------------------------+
| image          | gauge | image | 49338c63-033c-40a3-abdd-d6410799de24 | 2238ec4daed3436b8cc97491518bd6cf | 94f9c25aaa4246b0915afacca2d65c22 |
| image.download | delta | B     | 49338c63-033c-40a3-abdd-d6410799de24 | 2238ec4daed3436b8cc97491518bd6cf | 94f9c25aaa4246b0915afacca2d65c22 |
| image.serve    | delta | B     | 49338c63-033c-40a3-abdd-d6410799de24 | 2238ec4daed3436b8cc97491518bd6cf | 94f9c25aaa4246b0915afacca2d65c22 |
| image.size     | gauge | B     | 49338c63-033c-40a3-abdd-d6410799de24 | 2238ec4daed3436b8cc97491518bd6cf | 94f9c25aaa4246b0915afacca2d65c22 |
+----------------+-------+-------+--------------------------------------+----------------------------------+----------------------------------+

 

 

image.download 미터에서 사용 통계를 검색한다.

[root@controller ~]# ceilometer statistics -m image.download -p 60
+--------+----------------------------+----------------------------+------------+------------+------------+------------+-------+----------+----------------------------+----------------------------+
| Period | Period Start               | Period End                 | Max        | Min        | Avg        | Sum        | Count | Duration | Duration Start             | Duration End               |
+--------+----------------------------+----------------------------+------------+------------+------------+------------+-------+----------+----------------------------+----------------------------+
| 60     | 2016-03-12T06:01:39.451000 | 2016-03-12T06:02:39.451000 | 13287936.0 | 13287936.0 | 13287936.0 | 13287936.0 | 1     | 0.0      | 2016-03-12T06:01:59.874000 | 2016-03-12T06:01:59.874000 |
+--------+----------------------------+----------------------------+------------+------------+------------+------------+-------+----------+----------------------------+----------------------------+

 

임시로 다운 받은 cirros 이미지를 삭제한다.

[root@controller ~]# rm -f /tmp/cirros.img

+ Recent posts