OOP の勉強がてら Windows の Graphite クライアント書いた
動機
Windows のパフォーマンス計測をしたかったのです。
で、クライアントの計測なので、ランタイムインストールはよけたい所でもあったのです。
インストールする物が多かったり大きかったりすると、協力して貰いにくく…
C# 製の↓のがあったんで展開してみたわけです。
CryptonZylog/carbonator: Windows service that collects performance counters and reports metrics to a Graphite server
結果、CPU 使用率が 5% とかで、思った以上にくってたんですよ。
OOP とか色々勉強したけど、素振りばっかだなーってこともあったので、書きました。
ROki1988/PerfSrv
お仕事の環境と同じ、Delphi で書きました。
Rust で書こうとも思ったんですが、まず Windows の API 定義からだったので、とりあえず後回し。
何かちょうど良い感じのブログ
があったので、ここで計測していた23個のメトリクスで負荷計測。
取得周期は 1 秒毎。
結果
- CPU 使用率: 0.05%
- メモリ使用量(ワーキングセット): 15MB
- ディスク IO: 0
- ネットワークIO: 1KB/s
ディスクは書いてないですからね。そらそうだ。
結構かるい? と思ってます。
この辺は Rust や Golang の勉強を兼ねて作ってみて、比較できるようにしたいです。
需要が何処にあるかは定かでないですが。
動作確認等々
ローカルの動作確認では、下のアプリを使用しました。
Packet Sender - The Free UDP and TCP Network Test Utility
で、本番との接続は下のサービスを使用しました。
Hosted Graphite - Graphite and StatsD as a service, Grafana and Alertinghttps://t.co/Upk5uKZOm6
— rohki (@r_ohki) September 3, 2016
ここであそんでる
環境もっかい構築とか苦行ですし。
ただ…
社内で動かないという・・・
どーもネットワーク関係っぽいんですが、特定には至らず。
Hosted Graphite に繋がってよっしゃーとおもったらこのざまですよ。
(追記)Graphite の UDP 受信がデフォルト OFF のままだっただけでした orz
上は特定して直すとして、さらに色々粗々なので、直します。名前とか、設定ファイルとか。
OOP 的にもっと整理できそうですし、テストコードとかもちゃんと書かないとです。
OOP の話
は、土曜日にとっときます。話すネタがなくなる!!