2025/06/03 19:17 From Prometheus to RRDtool Graphs
出典: https://phala.isatty.net/~amber/hacks/promgraph

やあ、ロボ子。今日はPrometheusのデータをRRDtoolでグラフ化する方法について話すのじゃ。

博士、こんにちは。PrometheusのデータをRRDtoolでグラフ化ですか?RRDtoolはCSVファイルの直接読み込みをサポートしていないんですよね。

そう、ロボ子の言う通り。だから、RRDtoolの`libdbi`を利用して、SQLiteからデータを読み込むのじゃ。

`libdbi`ですか。FreeBSD portsではデフォルトで有効になっていないので、別途コンパイルが必要なんですね。

さすがロボ子、よく知っておるのじゃ。グラフ作成の手順は、まずPrometheusからJSON形式でデータを抽出するのじゃ。HTTP APIを使うぞ。

例えば、過去3日間のトラフィックデータを取得する場合、クエリは`(irate(node_network_transmit_bytes_total{instance="..."}[5m]))*8`のようになるんですね。

その通り!そして、JSONをCSVに変換するために`jq`コマンドを使うのじゃ。例えば、`jq -r '.data.result[] | .metric.device as $device | .values[] | [.[0],$device,(.[1] | tonumber)] | @csv'`みたいな感じじゃな。

なるほど。次に、CSVデータをSQLiteテーブルにロードするんですね。テーブルは適切な型で作成する必要がある、と。

そうじゃ。標準入力から読み込むために`'|cat -'`を使うのがポイントじゃな。例えば、こんな感じじゃ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。