ご安全に!ryosmsです。
このエントリはMackerel Advent Calendar 2019の4日目のエントリです。



ちょっと前に業務都合&個人の趣味でWindows版のmackerel-agentについて調べていたので、今日はWindowsの監視について辛かったところをつらつらと書いていこうと思います。
基本的に、個人のノートPCにインストールして辛かったところなので、Windowsサーバーでの運用には当てはまらないことが大部分だと思います。


公式のプラグイン集を使うのが大変

Windows版のmackerel-agentには、Windowsで使いそうなプラグインは同梱されていて、公式のプラグイン集にはWindows版のバイナリはありません。
そのため、同梱されていないプラグインを使おうと思った場合には自分でビルドする必要があります。なお、ビルドしたものがWindowsで正常に動くかどうかは不明です。
Windowsで利用する場合には同梱されているプラグインで十分であるという反論には同意します。

スリープに対応できない

mackerel-agent.confにon_stopを設定しても、シャットダウン時の設定なのでスリープに入る際には効きません。そのため、マシンがスリープに入るとmackerel-agentの動作が止まり、connectivityのアラートが問答無用で飛んできます。
スリープに入っているはずの時間帯でもなぜか断続的にメトリックを送信していることがあり、アラートが閉じたり開いたりします。(これは完全にWindowsの問題だと思う #知らんけど)
そもそもスリープに入るようなマシンをMackerelで監視するのが間違っていると言われると返す言葉もありません。

CPUの使用率がおかしい

Windows APIの仕様らしいのでMackerelの責任ではないのですが、メトリックとして取れるCPUの使用率(system + user)とidleを足し合わせても100%になりません。
コアごとのCPU使用率についても同様なので、私の作ったプラグインではidleを出さないように修正しました。(コア数が多くなるとメトリック数が増えすぎるというのも一因ではありますが)

mackerel-agent.confの書き換えに管理者権限が必要

別プラットフォームのmackerel-agent.confを書き換える際にもsudoとか必要なのでWindows特有の問題ではないのですが、なにせWindowsにはsudoがなくて辛かったです。
とは言え、Visual Studio Codeであればmackerel-agent.confを書き換えて保存する際に↓のようなダイアログが出るので「Retry as Admin...」を選択すれば問題なく保存できるのでmackerel-agent.confの書き換えにはVS Code推奨です。
コメント 2019-12-02 233400
ちなみに、某所でWindowsの監視について話をする機会があったんですが、「これがめんどくさい場合はincludeの仕組みを使ったらいいですよ。Linuxでよくあるヤツです」って説明したら「Windowsでそんなことするヤツはおらん」みたいな反応だったのでなるほどという感想です。

サンプルのmackerel-agent.confに罠があった

サンプルのmackerel-agent.conf(mackerel-agent.sample.conf)に書いてある通りの書き方でpluginのパスを指定したりすると、mackerel-agentが起動しない罠がありました。Windowsはパス区切りがアレなので普通にダブルクォートで囲むとパースエラーが発生していました。正しくは、シングルクォートで囲んでやるか、パスの区切りをエスケープしてやる必要がありました。
なお、この件は既に解決しています。

OSが正しく取れていない

大した問題ではありませんが、Windows 10 Proにmackerel-agentをインストールしたところ、「Windows 10 Enterprise」と認識されていました。他の環境(HomeとかWindows Serverとか)ではどのように認識されるかは不明です。
コメント 2019-12-02 233643

2019/12/04 14:12追記

早速mattnさんがPull Requestを出してくれました!
これがマージされたバージョンがリリースされると直るはずです!
2019/12/04 14:12追記おわり

まとめ

辛いところと称してつらつらと書き連ねてみましたが、実際のところ対して辛くありません。
Windows版を使ってみた感じ
  • ちゃんとインストーラーが用意されていて
  • アンインストールもWindowsの仕組み(プログラムの追加と削除)に従っていて
  • Windowsサービスに登録されるので起動 / 停止 / 自動起動の設定等がサービスの画面からできて
  • ログはWindowsのイベントとして出力されるのでイベントビューアで確認できて
  • Windowsで使えるプラグインは最初から同梱されている
と、Windowsを公式にサポートの言葉に偽りなしという印象でした。
というわけで、Windowsを使う機会があれば積極的に使っていきたいですね。