Openstack Ceilometer監控項擴展

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

1、Ceilometer框架結構 git

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

Ceilometer架構圖

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

ceilometer

經過該類圖可知,新增項目須要繼承ComputePollster類,並實現get_samples方法。最後經過配置便可,獲取到新的監控項數據。因爲,現有的Ceilometer沒有對內存的實時監控,本文之內存爲例,詳細介紹增長新的監控項的流程。 數據庫

2、新增虛擬機監控項 windows

現有虛擬機的監控項目,沒有對內存的監控。本文之內存爲例,介紹增長內存監控模塊的方法,增長內存監控方法比較簡單,主要在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的監控數據。


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

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

相關文章
相關標籤/搜索