使用Python Diamond收集監控資料

2021-07-04 08:39:45 字數 2759 閱讀 2712

diamond是使用python實現的用於收集監控資料的工具,主要收集metrics型別的資料,即資料格式一般是metric timestamp value

簡單來說, diamond就是python實現的守護程序,自動定時的從你的服務或是其它指定資料來源中提取數值,併發送到指定的後端(handler)

diamond支援多種後端handler, 可以將資料傳送到graphite,opentsdb,mysql,logfile等,並且可以很容易的定製handler

【安裝】

git chone 

cd diamond

python setup.py install

【啟動】

python ./bin/diamond --configfile=conf/diamond.conf
【配置】

[server]

# 具體使用的handler,用來發布/儲存metrics, 可以配置多個

handlers = diamond.handler.tsdb.tsdbhandler, diamond.handler.archive.archivehandler

# handler的路徑,如果需要新增handler,則將具體的py實現檔案放到該目錄,

handlers_path = /usr/share/diamond/handlers/

# collector的路徑

collectors_path = /usr/share/diamond/collectors/

[handler]

# 該section下配置詳細的handler資訊,比如使用mysql儲存資料

[[mysqlhandler]]

hostname = 127.0.0.1

port = 3306

username = root

password =

database = diamond

table = metrics

col_time = timestamp

col_metric = metric

col_value = value

[collectors]

# 該session下配置具體的collector資訊

[[democollector]]

enabled = true -- true表示啟動該collector

interval = 60 -- metrics資料收集的間隔時間

【定製】

擴充套件handler

handler對應的py實現指令碼在handlers_path目錄下

擴充套件乙個handler:

需要繼承handler類,主要實現process方法

def process(self, metric)
擴充套件collector

collector對應的py實現指令碼在collector_path目錄下

擴充套件乙個collector

需要繼承diamond.collector.collector類,實現collect方法

def collect(self)
【例項】

使用mysql進行儲存時,發現如果表不存在不會自動建立,而是返回寫資料失敗; 對其進行修改,載入handler時,如果表不存在則建立。

新增配置,用於指定資料表的字段型別

col_time_type = int unsigned

col_metric_type = varchar(255)

col_value_type = varchar(255)

修改handler實現類: src/diamond/handler/mysql.py

def __init__(self, config=none)

...self.col_time_type = self.config['col_time_type']

self.col_metric_type = self.config['col_metric_type']

self.col_value_type = self.config['col_value_type']

# connect

self._connect()

self._prepare()

def _prepare(self):

"""create table if not exist

"""createsql = "create table if not exists %s (%s %s, %s %s, %s %s)" % (self.table, self.col_metric, self.col_metric_type, self.col_time, self.col_time_type, self.col_value, self.col_value_type)

try:

cursor = self.conn.cursor()

cursor.execute(createsql)

cursor.close()

self.conn.commit()

except baseexception, e:

self.log.error("mysqlhandler: failed to create data. %s.", e)

sys.exit(1)

使用GraphEdit使用

1 註冊元件。其實乙個filter就是乙個com元件,所以使用之前需要註冊,可以有兩種方法對元件進行註冊。1.直接使用命令。命令列下輸入 regsvr32 hqtlystd.ax 編譯之後你會在工程目錄下的debug中找到hqtlystd.ax,這個就是要用的filter 即可註冊成功。2.vc6....

MySQL使用學習使用 mysql學習使用

1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...

學習使用CSDN markdown使用

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...