Ceilometer的知識總結

Ceilometer命令基本信息

 

所有接口能夠根據閱讀如下代碼文件來獲取python

ceilometerclient.shell.py  //一級命令
ceilometerclient.v1.shell.py   //v1二級命令
ceilometerclient.v2.shell.py   //v2二級命令

 

經常使用一級命令

首先配置環境變量,下面幾個基本是必須的,也能夠經過配置項傳入mongodb

OS_USERNAME
OS_PASSWORD
OS_TENANT_NAME
OS_AUTH_URL
CEILOMETER_API_VERSION

經常使用的命令shell

ceilometer    //查看幫助和二級命令

如今經測試,非admin用戶沒法使用v2接口,緣由是v1和v2的acl.py文件並不相同,若是不是admin用戶v2會直接拋出異常,這個能夠經過修改policy.py代碼來控制數據庫

二級命令

二級命令能夠查看收集器蒐集的數據,官方說H版本會棄用v1版本接口,因此推薦使用v2接口,相應參數及-q選項能夠查看代碼,再fields變量中有定義windows

ceilometer meter-list   //列舉全部測量值
ceilometer meter-list -q resource_id=XXX  //列舉某一實例測量值

ceilometer sample-list -m cpu -q resource_id=XXX    //列舉某一實例的cpu採樣數據
ceilometer sample-list -m cpu_util -q 'resource_id=b7fc623d-1d4a-4ac7-b96b-78c9d921fa74;timestamp>2013-05-21T03:18:20;timestamp<2013-05-21T03:30:20'

ceilometer statistics -m cpu     //列舉實例的統計數據

ceilometer resource-list  //列舉全部實例列表

經常使用的q的參數網絡

resuorce_id 
user_id
project_id
timestamp數據結構

 

Openstack Ceilometer監控項擴展

Openstack ceilometer主要用於監控虛擬機、服務(glance、image、network等)和事件。虛擬機的監控項主要包含CPU、磁盤、網絡、instance。本文在現有監控項的基礎上,介紹怎樣添加新的監控項目。架構

 

1、Ceilometer框架結構框架

Ceilometer監控經過在計算節點部署Compute服務。輪詢其計算節點上的instance。獲取各自的CPU、網絡、磁盤等監控信息,發送到RabbitMQ。Collector服務負責接收信息進行持久化存儲。具體框架例如如下圖所看到的(點擊查看大圖)。測試

本文主要介紹instance的監控。獲取instance的監控數據發送到message隊列。instance的監控數據的獲取主要經過Compute服務以pollster方式輪詢各虛擬機。Compute服務類圖例如如下(點擊查看大圖)。

經過該類圖可知,新增項目需要繼承ComputePollster類,並實現get_samples方法。最後經過配置就能夠。獲取到新的監控項數據。

由於。現有的Ceilometer沒有對內存的實時監控,本文之內存爲例。具體介紹添加新的監控項的流程。

2、新增虛擬機監控項

現有虛擬機的監控項目,沒有對內存的監控。

本文之內存爲例。介紹添加內存監控模塊的方法,添加內存監控方法比較簡單。主要在compute端添加獲取數據的方式,而後改動配置文件,就能夠將數據持久化數據庫中。

具體過程例如如下:

一、在 ceilometer/ceilometer/compute/pollsters文件夾下新建文件mem.py(名字本身定義)。在該文件下定義MEMPollster類並實現get_samples方法:

class MEMPollster(plugin.ComputePollster):
    def get_samples(self, manager, cache, instance):

二、get_samples中獲取內存數據的方式,可參考CPU獲取數據的架構,在ceilometer/ceilometer/compute/virt/inspector.py 中定義返回數據的格式:

MEMStats = collections.namedtuple('MEMStats', ['total', 'free'])

獲取內存方式多樣,本文採用讀取proc文件獲取instance所在進程佔用的內存大小。有時獲取的數據比instance最大內存大。因此該方式對windows系統的虛機有必定的偏差。僅做爲演示樣例參考。

方法定義例如如下:

def inspect_mems(self, instance_name):

獲取數據後,按sample數據結構返回就能夠。

三、設計完上述獲取數據的方式後。並不能輪詢到內存數據,還需要改動一些設置文件。

首先。改動ceilometer/setup.cfg文件,在該文件ceilometer.poll.compute下,添加

mem = ceilometer.compute.pollsters.mem:MEMPollster

其次。由於包衝突的問題。將ceilometer安裝在隔離環境中,因此source隔離環境,又一次安裝ceilometer,以上配置才幹生效。

運行 python setup.py develop 命令就能夠。

四、從新啓動ceilometer服務,進入mongodb的ceilometer數據庫就能夠在meter表中查看mem的監控數據。

相關文章
相關標籤/搜索