ソモサン

私rohkiによる活動や読書の記録をつらつらと書くページです

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 で書こうとも思ったんですが、まず WindowsAPI 定義からだったので、とりあえず後回し。

何かちょうど良い感じのブログ があったので、ここで計測していた23個のメトリクスで負荷計測。
取得周期は 1 秒毎。

結果

  • CPU 使用率: 0.05%
  • メモリ使用量(ワーキングセット): 15MB
  • ディスク IO: 0
  • ネットワークIO: 1KB/s

f:id:rohki:20160907005205p:plain

ディスクは書いてないですからね。そらそうだ。
結構かるい? と思ってます。
この辺は Rust や Golang の勉強を兼ねて作ってみて、比較できるようにしたいです。
需要が何処にあるかは定かでないですが。

動作確認等々

ローカルの動作確認では、下のアプリを使用しました。
Packet Sender - The Free UDP and TCP Network Test Utility

で、本番との接続は下のサービスを使用しました。

環境もっかい構築とか苦行ですし。

ただ…

社内で動かないという・・・
どーもネットワーク関係っぽいんですが、特定には至らず。
Hosted Graphite に繋がってよっしゃーとおもったらこのざまですよ。

(追記)Graphite の UDP 受信がデフォルト OFF のままだっただけでした orz

上は特定して直すとして、さらに色々粗々なので、直します。名前とか、設定ファイルとか。
OOP 的にもっと整理できそうですし、テストコードとかもちゃんと書かないとです。

OOP の話

は、土曜日にとっときます。話すネタがなくなる!!

rad-studio-osaka.connpass.com