之前項目一直在使用OpenStack的Folsom版本進行二次開發,對nova等模組都有著不小的改動,因此當新版本的OpenStack(Grizzly)發布之後,一些新的功能模組不能夠很快的移植到新開發的項目之中。由於之前版本的OpenStack的系統監控功能相對較薄弱,所以一直採用kanyun + ganglia再加上openstack提供的簡單監控功能進行系統監控,頗為山寨,因此在G版本發布帶來監控功能模組ceilometer之後,需要將其同原有系統相結合,以下為結合部署心得:
1. 到github下載最新的ceilometer代碼
2.安裝mongodb, 由於ceilometer採用mongodb作為預設資料持久化資料庫,所以需要先安裝mongodb
apt-get install mongodb
3.在keystone中添加ceilometer使用者
需注意:添加的ceilometer賬戶需要屬於admin tenant否則會出現不能擷取執行個體監控資訊的情況,並且將此賬戶添加為ResellerAdmin角色中便於擷取swift監控資訊。 添加的ceilometer賬戶需要屬於admin tenant,並且角色為ResellerAdmin以及Admin。
查看user列表
keystone --os-username admin --os_password pass --os_tenant_name admin --os_auth_url http://localhost:5000/v2.0 user-list
查看role列表
keystone --os-username admin --os_password pass --os_tenant_name admin --os_auth_url http://localhost:5000/v2.0
role-list
查看tanant列表
keystone --os-username admin --os_password
pass --os_tenant_name admin --os_auth_url http://localhost:5000/v2.0 tenant-list
建立user
keystone
--os-username admin --os_password pass --os_tenant_name admin --os_auth_url http://localhost:5000/v2.0 user-create --name ceilometer --email co@co.cn --tenant-id tid --pass pass --enabled true
添加user角色
keystone
--os-username admin --os_password pass --os_tenant_name admin --os_auth_url http://localhost:5000/v2.0 user-role-add --user-id uid --tenant-id tid --role-id rid
4.安裝ceilometer
1)首先查看模組所依賴的包
vim ceilometer/requirements.txt
d2to1>=0.2.10,<0.3pbr>=0.5,<0.6WebOb>=1.2kombuiso8601argparseSQLAlchemy>=0.7,<=0.7.99sqlalchemy-migrate>=0.7.2pymongo>=2.2eventletanyjson>=0.2.4Flask==0.9pecan>=0.2.0stevedore>=0.7msgpack-pythonpython-glanceclientpython-novaclient>=2.6.10python-keystoneclient>=0.2.3python-swiftclientlxmlrequests>=1.1wsme>=0.5b2pyyamloslo.config>=1.1.0happybase>=0.4
此版本ceilometer使用G版本Openstack中新加的oslo.config模組完成設定檔讀模數塊。
此外要求WebOb的版本要在1.2以上,查看F版本Openstack使用的此庫版本為1.0.8,這是比較大的衝突,並且發現有很多人反映此庫與之前的庫不相容的情況(https://bugs.launchpad.net/ceilometer/+bug/1092227),在我實際的安裝過程中也發現此庫不能被python-novaclient,
python-glanceclient等庫所使用。於是我使用virtualenv(https://pypi.python.org/pypi/virtualenv)建立了一個隔離的python環境來安裝運行ceilometer及相關依賴。
2)安裝virtualenv並建立隔離沙箱
sudo pip install virtualenv #安裝
virtualenv grizzlyenv #建立名為grizzlyenv的隔離環境
source grizzlyenv/bin/activate #進入grizzlyenv隔離環境
進入後在提示符前會出現提示,如
(grizzlyenv)root@ceilotest:/opt#
在此環境下,有一套獨立於全域python的環境,在此使用pip和easy_install安裝python包都可以不影響全域的python環境,使用完畢之後使用deactivate命令即可退出到全域環境,相關的使用方法在網上都可以找到,在此不贅述
3)隔離環境安裝完畢之後,就能夠在這之中安裝ceilometer了
#cd ceilometer
#python setup.py develop
安裝完之後可以看到所依賴的包都安裝在了grizzlyenv/lib/python2.7/site-packages/ 路徑之下。
將ceilometer/etc/ceilometer/下所有檔案拷貝到/etc/ceilometer/目錄下(沒有則建立),並將其中ceilometer.conf.sample檔案修改為:
ceilometer.conf
[DEFAULT]verbose=Truedebug=Trueos_auth_url = http://192.168.5.202:35357/v2.0os_tenant_name = adminos_password = adminos_username = ceilometerpolicy_file = /etc/ceilometer/policy.jsonnotification_topics = notifications,glance_notificationsrabbit_password = adminrabbit_host = 127.0.0.1rabbit_max_retries = 10rpc_backend = ceilometer.openstack.common.rpc.impl_kombu[keystone_authtoken]signing_dir = /etc/ceilometeradmin_tenant_name = adminadmin_password = adminadmin_user = ceilometerauth_protocol = http
4) 啟動ceilometer
在screen中開啟四個選項卡,依次運行:
ceilometer-collector
ceilometer-agent-central
ceilometer-agent-compute
ceilometer-api
分別對應ceilometer架構中的四個重要模組,在ceilometer-agent-compute啟動的過程中可能會出現No module named libvirt的問題,這是因為隔離環境中沒有安裝python-libvirt的緣故,但是同時發現無法使用pip來安裝此庫,但是使用dpkg -l命令查看是發現python-libvirt的確已經安裝,於是直接將全域環境中的相關檔案拷貝到隔離環境中來並修改相應許可權:
cp /usr/lib/python2.7/dist-packages/libvirt* /opt/stack/grizzlyenv/lib/python2.7/site-packages/
chown stack:stack /opt/stack/grizzlyenv/lib/python2.7/site-packages/libvirt*
這樣應該就能夠正常啟動了,啟動之後可以到mongodb中查看相應的資料記錄。
Ceilometer模組相關資料:
wiki - https://wiki.openstack.org/wiki/Ceilometer
doc - http://docs.openstack.org/developer/ceilometer/
src - https://github.com/openstack/ceilometer
目的是為了打造openstack監控的通用架構,支援自訂監控外掛程式實現自主監控。
轉載請註明 Good luck :)