happo-agent - Yet another Nagios nrpe を公開しました

こんにちは。CTOの馬場です。

弊社では監視に永らく Nagios を使っています。 Infrastructure as Code の文脈と整合性のある、シンプルで素晴らしいプロダクトです。

ただNagiosのエージェントであるNRPEにはずっと不満を抱えていました。

そこで happo-agent という NRPE 代替プロダクトを開発しました。 このたびOSSとして公開したので紹介します。

Yet another Nagios nrpe な監視エージェント happo-agent と、 その監視エージェントにアクセスするための監視プラグイン check_happo 、 共通ライブラリの happo-lib を公開しました。

デプロイメントの利便性を考慮してGo言語で書いています。

happo のいいところ

README.ja.md より

  • よりセキュアな通信を担保すべく、通信の暗号化時にTLS 1.2で提供している方式を利用します。nrpeではDHであり、2015年現在では弱めの方式が採用されています。

このご時世ですから、通信はきちんと暗号化したいものです。というわけでTLS 1.2を使っています。

  • 踏み台として動作する際の負担を減らします。リクエスト単位でスレッドが生成され、監視対象サーバへ中継を行います。nrpeではリクエスト単位で更にcheck_nrpeコマンドがforkされ、中継コストが高くなります。これは、監視対象サーバの数が多くなるほどパフォーマンスに対し顕著に現れます。

多段構成の場合は必ず通るnrpe負荷問題もこれで解決。

  • Sensu互換のプラグインを利用し、メトリックを取得することができます。また、メトリックの収集とメトリックサーバへの転送は独立しています。従って、エージェントが正常に動作し続けていれば仮にメトリックサーバがダウンしてもメトリックの取得漏れが発生することはありません。この機能はnrpeにはありません。

Sensu互換なのでこの世にすでにあるプラグインを利用できます。 メトリックはhappo-agentが自律的に収集するので、メトリックサーバ側の負荷や遅延・メンテナンス・疎通不可などによるデータ取得漏れがありません。 メトリックサーバ側からクロールすることを想定しています。

  • インベントリ情報取得機能があります。リモートにある監視対象のサーバのリクエストに応じて、必要な情報を取得することができます。この機能はnrpeにはありません。

インベントリ収集もできます。いまのご時世必須ですね。 弊社では収集したインベントリ情報をもとに監視項目を自動生成するなどしています。

ぜひみなさまご活用ください。そしてなにか改善点があればPullRequestいただけると嬉しいです。

株式会社ハートビーツのインフラエンジニアから、ちょっとした情報をお届けします。