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]#
これで値を取得出来る。