どうも、1.5 日間程寝込んで復活したら浦島太郎状態になっているかっぱ@inokara)です。

はじめに

実用性や本当に利用されるんかいってツッコミはさておき Windows Server や IIS の勉強を兼ねて。尚、本記事で利用しているのは Windows Server 2012 R2 となります。


作ったもの

ものは試しに使ってみて下さいw


メトリクスの取得

他にも色々とコマンドがあるようだが…他の Windows 向けプラグインが typeperf を利用していたのでそのまま踏襲。また、IIS のパフォーマンスカウンタの種類が多くて、どれ使っていいのか判らないやら…この辺は王子に教えを請いたいと思います。

typeperf コマンド

  • typeperf
  • コマンドプロンプトから簡単にパフォーマンスカウンタが取得出来るのが良い

IIS のパフォーマンスカウンタ

コマンドプロンプト又は PowerShell から…

perfmon

を実行すると Perfomance Monitor が起動される…そしてカウンタの追加をしようとすると…

パフォーマンスモニタで、カウンタを追加したい

沢山あって困ったけど、以下のようなカウンタをひと通り試した。

typeperf -sc 1 "\HTTP Service Url Groups()\CurrentConnections"
typeperf -sc 1 "\Web Service()\Current Anonymous Users"
typeperf -sc 1 "\Web Service(_Total)\Current Connections"
typeperf -sc 1 "\Web Service(_Total)\Get Requests/sec"

で、Web Service(_Total)Current ConnectionsWeb Service(_Total)Get Requests/sec をひとまず選択。他に取得するべきカウンタがあれば追加していく。


プラグイン作る過程で学んだこと

sensu プラグイン書く時に気をつけること

  • rubocop 必須
  • rubocop でテストしてから Pull Request しましょう
  • プラグインの権限は 755 にしましょう(ドキュメントにも書いてありますね)

rubocop インストールしました

sensu-community-plugins に対して Pull Request をした場合にはまず Travis-CI という登竜門でテストが行われる。テストの際に rubocop というツールでコーディングルールに基づいたテストが行われる。自分の場合には大概の場合に PR した後でこの rubocop で失敗してまう…orz

ということで、rubocop をローカルにインストールして PR 前に問題が無いかを確認した方がよさそう。

sudo gem install rubocop --no-ri --nordoc -V

sensu-community-plugins 以下には .rubocop.yml が設置されているのでプラグイン作成や修正時には利用しましょう。

readlines メソッドイイね

読み込んだ行の中から添字で指定した行を取得するメソッド(という認識)。

example.rb

  def run
    io = IO.popen("typeperf -sc 1 \"Web Service(#{config[:site]})\\Current\ Connections\"")
    current_connection = io.readlines[2].split(',')[1].gsub(/"/, '').to_f

変数 io の中身が二行になっている場合に io.readlines[2] を指定することで(空白を含む)3 行目を取得することが出来るので、以下の場合には "09/10/2014 16:31:41.875","0.000000" を取得することが出来る。

(空行)
"(PDH-CSV 4.0)","\\WIN-QKJ8DVDEMQP\Web Service(_Total)\Current Connections"
"09/10/2014 16:31:41.875","0.000000"

ということで…

引続き Windows 環境向けのプラグインを頑張って作っていこうっと。

元記事はこちらです。
sensu の Windows 向け(IIS 向け)プラグインを幾つか作ったのでメモ