1. 程式人生 > ><轉>Openstack Ceilometer監控項擴展

<轉>Openstack Ceilometer監控項擴展

所在 span ati 大內存 round static sta family spec

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

一、Ceilometer框架結構

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

技術分享

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

)。

技術分享

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

因為。現有的Ceilometer沒有對內存的實時監控,本文以內存為例。具體介紹添加新的監控項的流程。

二、新增虛擬機監控項

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

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

具體過程例如以下:

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

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

2、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數據結構返回就可以。

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

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

mem = ceilometer.compute.pollsters.mem:MEMPollster

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

運行 python setup.py develop 命令就可以。

4、重新啟動ceilometer服務,進入mongodb的ceilometer數據庫就可以在meter表中查看mem的監控數據。


監控的一些實現,能夠做一下:https://github.com/kevinjs/procagent

http://blog.csdn.net/dysj4099/article/details/18255393

<轉>Openstack Ceilometer監控項擴展