Ceilometer 安裝與設定

本章節會說明與操作如何安裝遙測服務到 Controller 節點上,並設置相關參數與設定。若對於 Ceilometer 不瞭解的人,可以參考Ceilometer 遙測服務章節

Controller Node

在 Controller 節點我們需要安裝 Ceilometer 的 API Server 以及用於儲存資料的 MongoDB。

安裝前準備

由於 Ceilometer 的資料庫使採用 MongoDB 來做儲存,可以透過以下方式進行安裝:

$ sudo yum install mongodb-server mongodb python-pymongo

安裝完成後,編輯/etc/mongodb.conf設定檔,並加入以下內容:

bind_ip = 10.0.0.11
smallfiles = true

預設下 MongoDB 會建立一個 /var/lib/mongodb/journal 目錄來儲存 journal 檔案(每個檔案 1GB 大小),若要縮小 journal 檔案大小可以設定 smallfilestrue

若有修改 journal 的設定,請務必停止服務並刪除 journal 初始化檔案,再重新啟動服務:

$ sudo rm /var/lib/mongodb/journal/prealloc.*
$ sudo systemctl enable mongod.service
$ sudo systemctl start mongod.service

你也可以關閉 journaling,詳細資訊可以看 MongoDB manual.

確認修改後,透過以下命令用來更新現有帳號資料或建立 Ceilometer 資料庫:

$ mongo --host 10.0.0.11 --eval '
  db = db.getSiblingDB("ceilometer");
  db.addUser({user: "ceilometer",
  pwd: "CEILOMETER_DBPASS",
  roles: [ "readWrite", "dbAdmin" ]})'

這邊CEILOMETER_DBPASS可以隨需求修改。

建立成功會看到類似以下訊息:

MongoDB shell version: 2.4.9
connecting to: controller:27017/test
{
    "user" : "ceilometer",
    "pwd" : "447c1db3b92df9035684b39ad9fa2185",
    "roles" : [
        "readWrite",
        "dbAdmin"
    ],
    "_id" : ObjectId("55964bbc2d42ee01755e590a")
}

這邊CEILOMETER_DBPASS可以隨需求修改。

完成後離開資料庫,接著要建立 Service 與 API Endpoint,首先導入 admin 環境變數:

$ . admin-openrc

接著透過以下流程來建立 Ceilometer 的使用者、Service 以及 API Endpoint:

# 建立 Ceilometer User
$ openstack user create --domain default \
--password CEILOMETER_PASS --email [email protected] ceilometer

# 建立 Ceilometer Role
$ openstack role add --project service --user ceilometer admin

# 建立 Ceilometer Service
$ openstack service create --name ceilometer  --description "Telemetry" metering

# 建立 Ceilometer public endpoints
$ openstack endpoint create --region RegionOne \
metering public http://10.0.0.11:8777

# 建立 Ceilometer internal endpoints
$ openstack endpoint create --region RegionOne \
metering internal http://10.0.0.11:8777

# 建立 Ceilometer admin endpoints
$ openstack endpoint create --region RegionOne \
metering admin http://10.0.0.11:8777

這邊CEILOMETER_PASS可以隨需求修改。

Controller 套件安裝與設定

在開始設定之前,首先要安裝相關套件與 OpenStack 服務套件,可以透過以下指令進行安裝:

$ sudo yum install openstack-ceilometer-api \
openstack-ceilometer-collector openstack-ceilometer-notification \
openstack-ceilometer-central python-ceilometerclient

安裝完成後,編輯/etc/ceilometer/ceilometer.conf設定檔,在[DEFAULT]部分加入以下內容:

[DEFAULT]
rpc_backend = rabbit
auth_strategy = keystone

[database]部分修改使用以下方式:

[database]
connection = mongodb://ceilometer:[email protected]:27017/ceilometer

這邊CEILOMETER_DBPASS可以隨需求修改。

[oslo_messaging_rabbit]部分加入以下內容:

[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

[keystone_authtoken]部分加入以下內容:

[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = CEILOMETER_PASS

這邊CEILOMETER_PASS可以隨需求修改。

[service_credentials]部分加入以下內容:

[service_credentials]
os_auth_url = http://10.0.0.11:5000/v2.0
os_username = ceilometer
os_tenant_name = service
os_password = CEILOMETER_PASS
interface = internalURL
region_name = RegionOne

這邊CEILOMETER_PASS可以隨需求修改。

完成後設定開機時啟動服務:

$ sudo systemctl enable openstack-ceilometer-api.service \
openstack-ceilometer-notification.service \
openstack-ceilometer-central.service \
openstack-ceilometer-collector.service

完成後啟動 Ceilometer 服務:

$ sudo systemctl start openstack-ceilometer-api.service \
openstack-ceilometer-notification.service \
openstack-ceilometer-central.service \
openstack-ceilometer-collector.service

啟用 Image Service Meters

Ceilometer 使用 Notifications 來收集映像檔服務的 Meters。到 Controller(Glance) 節點上編輯/etc/glance/glance-api.conf/etc/glance/glance-registry.conf設定檔,在[DEFAULT]部分加入以下內容:

[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_notifications]部分加入以下內容:

[oslo_messaging_notifications]
driver = messagingv2

[oslo_messaging_rabbit]部分加入以下內容:

[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

這邊RABBIT_PASS可以隨需求修改。

完成後,就可以重新啟動所有 Glance 服務:

$ sudo systemctl restart openstack-glance-api.service \
openstack-glance-registry.service

啟用 Compute Service Meters

Ceilometer 使用 notifications 與 agent 的組合來收集 Compute 的 meters。到所有 Compute 節點進行以下步驟: Telemetry 透過結合使用通知與proxy來收集Computer測量值。若要監控每個Compute節點,需在每個節點進行以下步驟:

在開始設定之前,首先要安裝相關套件與 OpenStack 服務套件,可以透過以下指令進行安裝:

$ sudo yum install openstack-ceilometer-compute \
python-ceilometerclient python-pecan

安裝完成後,編輯/etc/ceilometer/ceilometer.conf設定檔,在[DEFAULT]部分加入以下內容:

[DEFAULT]
rpc_backend = rabbit
auth_strategy = keystone

[oslo_messaging_rabbit]部分加入以下內容:

[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

這邊RABBIT_PASS可以隨需求修改。

[keystone_authtoken]部分加入以下內容:

[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = CEILOMETER_PASS

這邊CEILOMETER_PASS可以隨需求修改。

[service_credentials]部分加入以下內容:

[service_credentials]
os_auth_url = http://10.0.0.11:5000/v2.0
os_username = ceilometer
os_tenant_name = service
os_password = CEILOMETER_PASS
interface = internalURL
region_name = RegionOne

接著編輯/etc/nova/nova.conf設定檔,在[DEFAULT]部分加入以下內容:

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

完成後設定開機時啟動服務:

$ sudo systemctl enable openstack-ceilometer-compute.service

完成後啟動 Ceilometer 服務:

$ sudo systemctl start openstack-ceilometer-compute.service

重新啟動 Nova Compute 服務:

$ sudo systemctl restart openstack-nova-compute.service

啟用 Block Storage Meters

Ceilometer 使用 Notifications 來收集區塊儲存服務的 meters。我們須在 ControllerStorage 節點上執行以下步驟。

首先編輯所有節點的/etc/cinder/cinder.conf設定檔,在[oslo_messaging_notifications]部分加入以下內容:

[oslo_messaging_notifications]
driver = messagingv2

Controller 節點,重新啟動以下服務:

$ sudo systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service

Storage 節點,重新啟動以下服務:

$ sudo systemctl restart openstack-cinder-volume.service

啟用 Object Storage Meters

Ceilometer 使用 Pooling 與 Notifications 組合來收集物件儲存服務的 meters。由於 Ceilometer 服務需要使用到 ResellerAdmin 來取得物件儲存的 meters。首先在 Controller 執行以下步驟:

$ . admin-openrc

透過 Keystone client 建立 ResellerAdmin role:

$ openstack role create ResellerAdmin

然後將 ResellerAdmin role 加入到 Server project,並賦予給 ceilometer 使用者:
```sh
$ openstack role add --project service --user ceilometer ResellerAdmin

完成後,在進行設定前必須先安裝相關套件:

$ sudo yum install python-ceilometermiddleware

接著在Controller節點上編輯/etc/swift/proxy-server.conf設定檔,在[filter:keystoneauth]部分加入以下內容:

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

[pipeline:main]部分加入以下內容:

[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]部分加入以下內容:

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

這邊RABBIT_PASS可以隨需求修改。

完成後就可以重新啟動 Swift Proxy 服務:

$ sudo systemctl restart openstack-swift-proxy.service

驗證服務

導入該環境參數,來透過 Ceilometer client 查看服務狀態:

$ . admin-openrc

這邊可以透過 Ceilometer client 來查看所有 meter,如以下方式:

$ ceilometer meter-list

透過 Ceilometer client 來查看哪個期間的資料,如以下方式:

$ ceilometer statistics -m image.download -p 60