使用textfile收集監控指標

2021-08-22 11:44:35 字數 2025 閱讀 6273

node_exporter本身除了收集系統指標以外,還可以通過textfile模組來採集使用者自己生成的指標,這對於系統監控提供了更多的使用空間和場景. 比如我們通過shell指令碼採集的資料結果就可以通過該途徑傳遞出去,用於繪圖或告警等.

預設情況下node_exporter將啟用textfile組建,但是需要設定乙個採集的路徑,所有的生成的監控指標將放在該目錄下,並以.prom檔名結尾. 同時node_exporter啟動方式如下:

./node_exporter --collector.textfile

.directory=$pwd/textfile

輸出格式

所有自定義生成的指標需要按照如下的方式進行儲存,首先使用shell或者python指令碼最終寫入檔案的格式需要如下:

# help example_metric metric read from /some/path/textfile/example.prom

# type example_metric untyped

example_metric 1

如果沒有寫help的話,系統會幫助生成乙個簡單的help描述,但是如果有多個檔案中出現相同的指標名稱(example_metric),需要保證這些指標的help和type都一致,否則採集將出錯. 基本格式也可以參考node_exporter/metrics路徑下顯示的內容.

任務執行

一般指令碼任務(輸出指標到.prom檔案)會被放入crontab中執行,按照需求設定採集指標的時間, 同時node_exporter採集的時候如果正好檔案執行寫入操作,可能導致檔案出現問題,安全期間我們可以將任務先轉移到乙個臨時檔案,然後通過臨時檔案的重新命名進行操作,降低風險.

*/5 * * * * $textfile/printmetrics.sh > $textfile/metrics.prom.$$ && mv $textfile/metrics.prom.$$

$textfile/metrics.prom

指標採集

對於.prom檔案的採集,系統會自動的加入採集檔案的修改時間,通過該指標我們可以設定一定的告警用於判斷,是否檔案發生了變化,比如採集指標時間為每10分鐘一次,那麼修改時間應該<15分鐘,否則就應該報警上次的採集未成功. 指標名稱:node_textfile_mtime_seconds, 指標收集時間為unixtime格式時間.

同時除了載入一些探測資訊,使用該方式還可以用於靜態資訊的收集,比如定義的系統角色資訊,或者伺服器特殊的配置資訊等等. 這些也都可以通過metrics的方式進行傳遞.

採集例項

以下為官方git上提供的乙個指令碼用於採集資料夾目錄大小的shell指令碼, 並給出了cron的相關配置

#!/bin/sh

## expose directory usage metrics, passed as an argument.

## usage: add this to crontab:

## */5 * * * * prometheus directory-size.sh /var/lib/prometheus | sponge /var/lib/node_exporter/directory_size.prom

## sed pattern taken from

## author: antoine beaupré

echo

"# help node_directory_size_bytes disk space used by some directories"

echo

"# type node_directory_size_bytes gauge"

du --block-size=1 --summarize "$@" \

| sed -ne

's/\\/\\\\/;s/"/\\"/g;s/^\([0-9]\+\)\t\(.*\)$/node_directory_size_bytes \1/p'

更多例子,可以訪問textfile指令碼

使用Python Diamond收集監控資料

diamond是使用python實現的用於收集監控資料的工具,主要收集metrics型別的資料,即資料格式一般是metric timestamp value 簡單來說,diamond就是python實現的守護程序,自動定時的從你的服務或是其它指定資料來源中提取數值,併發送到指定的後端 handler...

jQuery使用收集

size x large b jquery使用收集 b size 獲取一組radio被選中項的值 var item input name items checked val 獲取select被選中項的文字 var item select name items option selected text...

jQuery使用收集

獲取一組radio被選中項的值 var item input name items checked val 獲取select被選中項的文字 var item select name items option selected text select下拉框的第二個元素為當前選中值 select id ...