MackerelプラグインでAPCのUPSを監視!「mackerel-plugin-apcupsd」の紹介
こんにちは、マインディアのCTOをしているまつぼっくりです。今回は、私が開発したMackerelプラグイン「mackerel-plugin-apcupsd」について紹介します。
なぜUPS監視プラグインを作ったのか
スタートアップのCTOとして、サービスの安定運用は常に頭を悩ませる問題です。特に、電源の安定性は見過ごせない重要なポイント。そこで目をつけたのが、UPS(無停電電源装置)の監視でした。
「既存のMackerelプラグインでUPSを監視できないかな?」と探してみたものの、ニーズにぴったり合うものがありません。「それなら自分で作っちゃえ!」というノリで開発を始めました。
プラグインの機能
このプラグインは、APC UPSの以下の項目を監視します:
- バッテリー残量
- 入力電圧
- 出力電圧
- 負荷
- 内部温度
データの取得には apcupsd
コマンドを利用しています。これらのデータをMackerelで監視することで、UPSの状態をリアルタイムに把握し、潜在的な問題を早期に発見できるようになりました。
開発で苦労したポイント
開発中、最も苦労したのは apcupsd
コマンドの出力を適切にパースすることでした。出力形式が微妙に不規則で、単純な行分割では対応できない場合がありました。
結局、以下のような正規表現を使って対応しました:
re := regexp.MustCompile(`^(\w+)\s+:\s+(.*)$`)
この正規表現で、キーと値のペアを適切に抽出できるようになりました。
また、Goの testing
パッケージを使って単体テストを書くことで、パースの正確性を担保しています。テスト駆動開発(TDD)の良さを改めて実感した開発でした。
プラグインの使い方
インストールは以下のコマンドで簡単に行えます:
sudo mkr plugin install matsubo/mackerel-plugin-apcupsd
mackerel-agent.conf
に以下の設定を追加するだけで使用可能です。
[plugin.metrics.apcupsd]
command = "/path/to/mackerel-plugin-apcupsd"
設定を反映するためにmackerel-agentを再起動します。
sudo systemctl restart mackerel-agent.service
今後の展望
現在のバージョンでも十分実用的ですが、さらに以下の機能を追加したいと考えています。
- メトリックの単位ごとにグラフを変更する
- グラフのカスタマイズオプション
まとめ
「mackerel-plugin-apcupsd」の開発を通じて、改めてオープンソースの素晴らしさを実感しました。自分のニーズを満たすツールを作り、それを他の人と共有できる。これこそがエンジニアの醍醐味だと思います。
みなさんも、「あったらいいな」と思うツールがあれば、ぜひ自分で作ってみてください。そして、それをオープンソースとして公開することで、エンジニアコミュニティに貢献できるはずです。
最後になりましたが、このプラグインへのフィードバックをお待ちしています。GitHubのIssueやプルリクエストをお待ちしています!
参考リンク
みなさんのUPS監視ライフが充実することを願っています!
Discussion