Prometheus node_exporter の Textfile Collectorを使用して、手軽に任意の数値をグラフ化する

習慣化168日目

以前からGrowthforecastを使用していた。
何が便利だったかって、取得したいデータの数値を返すスクリプトを準備するだけでグラフ化できるところだった。

スクリプトを書くだけでグラフ化出来る参考
 常設GrowthForecastでお手軽メトリクス監視 - めもおきば
 https://d.nekoruri.jp/entry/20131213/gf

こういう感じで、簡単にグラフ化が出来る方法がないかなぁと思っていたら、Prometheusにもそれに近い方法があった。

独自メトリクス取るなら Textfile Collector 独自メトリクス取るなら Textfile Collector - Qiita
https://qiita.com/sugitak/items/25007e6bbb18ead107af

GitHub - prometheus/client_python: Prometheus instrumentation library for Python applications
https://github.com/prometheus/client_python

Textfile Collectorを設定して対象のフォルダに xxx.prom というファイル作り、そこに値をセットすれば
その値を取得してくれる。

Prometheusで手軽に任意の数値をグラフ化する。

Prometheusでnode_exporterの値を取得するように設定しておく

Prometheusで取得できるように設定

node_exporterの値を監視するため、prometheus.ymlに対象を記載する。

[root@centos6 ~]# cat /usr/local/src/prometheus-2.22.1.linux-amd64/prometheus.yml
(snip)

  - job_name: 'local_node'
    static_configs:
    - targets: ['localhost:9100']
[root@centos6 ~]#

Prometheusのプロセスを再起動しておく

省略

Prometheusのpython Clientをインストール

このクライアントを使用すれば、promへの出力フォーマットを気にせず
値をセットするだけでよくなる。

インストールされていないことを確認

[root@centos6 ~]# pip3 list |grep prometheusaa
[root@centos6 ~]#

インストール

[root@centos6 ~]# pip3 install prometheus_client

インストールされたことを確認

[root@centos6 ~]# pip3 list |grep prometheus
prometheus-client (0.8.0)

Textfile Collector の準備

出力するフォルダとスクリプトを配置するフォルダを準備

[root@centos6 ~]# mkdir -p prometheus/textfilecollector

[root@centos6 ~]# cd prometheus/
[root@centos6 prometheus]# mkdir metricsscript

スクリプトを作成

httpdのプロセス数をカウントするつもりだったけど、数値が変わらず面白く無さそうだったので
今回はランダムな数値を返すスクリプトにした。

[root@centos6 prometheus]# cd metricsscript/

[root@centos6 metricsscript]# vi httpd_check.py
[root@centos6 metricsscript]# cat httpd_check.py
#!/usr/bin/python3
import random
from prometheus_client import Gauge, Counter, write_to_textfile, REGISTRY

PROM_PATH="/root/prometheus/textfilecollector/httpd.prom"

g = Gauge('httpd_proccess_count', 'Gauge')

count = random.randint(1, 100)

g.set(count)

write_to_textfile(PROM_PATH, REGISTRY)

node_exporterの起動

promファイルを配置するフォルダを指定する。

[root@centos6 ~]# node_exporter --collector.textfile.directory /root/prometheus/textfilecollector

取得出来てるか確認

http://IPアドレス:9100/metrics

# HELP httpd_proccess_count Gauge
# TYPE httpd_proccess_count gauge
httpd_proccess_count 65

こんな感じで値が取得出来た。

cronを設定

[root@centos6 metricsscript]# crontab -l
no crontab for root
[root@centos6 metricsscript]# crontab -e
[root@centos6 metricsscript]# crontab -l
* * * * * /root/prometheus/metricsscript/httpd_check.py
[root@centos6 metricsscript]#

これで値を取得出来る。