文本文件收集器
對於自定義的監控,開採用文本收集器方式,官方描述如下
文本文件收集器與Pushgateway相似,因為它允許從批處理作業中導出統計信息。它也可以用於導出靜態指標,例如計算機所扮演的角色。Pushgateway應該用於服務級別指標。文本文件模塊用於綁定到計算機的指標。
要使用它,請
--collector.textfile.directory在節點導出器上設置標誌。收集器將*.prom 使用文本格式解析該目錄中與glob匹配的所有文件。注意:不支持時間戳。
自定義監控案例
背景
增加系統進程個數監控、系統殭屍進程個數監控
環境說明
<code>
pwd
/usr/local/node_exporter.
├── bin │ ├── node_exporter ├── conf │ └── node_exporter.conf └── textfile_collector/<code>
實現步驟
編寫獲取監控指標的腳本process,這個腳本會當作參數傳入下面的全局腳本,可以寫很多這樣的監控指標
<code>$ cat bin/processecho
procs_total `ps aux|wc -l`echo
procs_zombie `ps axo pid=,stat
=|grep Z|wc -l` $ sh bin/process procs_total 214 procs_zombie 0/<code>
編寫全局腳本runner, 這個腳本會將各監控指標數據生成到textfile_collector/*.prom文件
<code>$ cat bin/runner textfile_dir=$(dirname$0
) metric="
$1
"shift
script="
$textfile_dir
/$metric
" prom_file="
$textfile_dir
/$metric
".promif
[[ ! -x"
$script
" || -d"
$script
" ]];then
echo
"ERROR: Can't find>$metric
'. Aborting."exit
1fi
VALUE=`"
$script
""
$@
"`if
[[ ! -n$VALUE
]];then
exit
0else
echo
"
${VALUE}
" >>"
$prom_file
".$$ && mv"
$prom_file
".$$ ../textfile_collector/"
$prom_file
"fi
/<code>
做個定時任務每隔30s執行一次腳本,產生的監控數據供文本文件採集器採集
<code>$ crontab -l*
* *
* *
sleep 30; bash /usr/local/node_exporter/bin/runner process &> /dev/null/<code>
手動執行一次看下產生的效果
<code>$ sh -x /usr/local
/node_exporter/bin/runner process ++ dirname /usr/local
/node_exporter/bin/runner + textfile_dir=/usr/local
/node_exporter/bin + collector_dir=/usr/local
/node_exporter + metric=process +shift
+>local/node_exporter/bin/process + prom_file=/usr/local
/node_exporter/textfile_collector/process.prom + [[ ! -x /usr/local
/node_exporter/bin/process ]] + [[ -d /usr/local
/node_exporter/bin/process ]] ++ /usr/local
/node_exporter/bin/process + VALUE='procs_total 222 procs_zombie 0'
+ [[ ! -n procs_total 222 procs_zombie 0 ]] +echo
'procs_total 222 procs_zombie 0'
+ mv /usr/local
/node_exporter/textfile_collector/process.prom.4990 /usr/local
/node_exporter/textfile_collector/process.prom $ cat textfile_collector/process.prom procs_total 221 procs_zombie 0/<code>
查看metrics值是否新增了該監控項
<code>$ curl127.0
.0
.1
:
9100
/metrics|grep -E "Logical_CPU_core_total|
logined_users_total|procs_total|
procs_zombie"| grep -v "
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100
57440
0
57440
0
0
9736
k0
--:--
:--
--:--
:--
--:--
:--
10.9
M procs_total221
procs_zombie0
/<code>
最後說下自動發現的規則,默認node_exporter是沒有啟用collector需要啟動時候指定下采集器類型,這裡啟動方式採用systemd
<code>$ cat /etc/systemd/system/multi-user.target.wants/node_exporter.service [Unit] Description=Node Exporter [Service] EnvironmentFile=/usr/local/node_exporter/conf/node_exporter.conf ExecStart=/usr/local/node_exporter/bin/node_exporter $OPTIONS [Install] WantedBy=multi-user.target/<code>