検索
連載

Sensuの“これまで”と“これから”Sensuで始めるクラウド時代のシステム監視(10)

新たなクラウド監視ツールとして注目され始めている「Sensu」の活用方法を解説する本連載。今回は、2017年8月に米国で開催された「Sensu Summit 2017」の内容を紹介します。

Share
Tweet
LINE
Hatena
「Sensuで始めるクラウド時代のシステム監視」のインデックス

Sensuで始めるクラウド時代のシステム監視

 前回はヤフーの北田氏に、大規模環境で「Sensu」を活用して大量のメトリクスを収集する際のノウハウを紹介していただきました。

 今回は、2017年8月15日、16日の2日間、米国ポートランドで開催された「Sensu Summit 2017」の内容について、発表された資料や動画から得られた情報をまとめて紹介します(残念ながら、筆者は参加できませんでした)。Sensu Summit 2017の概要は以下の公式ブログで、発表の動画はYouTubeで確認できますので、ぜひご覧いただければと思います。

Sensuのこれまで――「1.0」までの道のり

 まずは、Sensu,Inc.のCTO(最高技術責任者)であるSean Porter氏の発表から、Sensuのこれまでの歩みを振り返ってみます。

 Sensuはオートスケールなどの動的な環境の変化や、スケールアウトによる性能拡張にも対応できるように、最初からクラウドやDevOps、「Infrastructure as Code(IaC)」に適した監視プラットフォームとして開発されました。2011年11月にオープンソースソフトウェア(OSS)として公開されてから約6年が過ぎ、2017年8月までに1300人以上の開発者から2万7000回以上のコミット(変更)が行われ、月間で約50万回ダウンロードされています。

 2017年7月には、ついに「Sensu 1.0」が公開されました(バージョン0.29の再リリース)。本連載では紹介できませんでしたが、2017年にリリースされた新機能もたくさんあります。

  • Client Deregistration:sensu-clientの停止時に自動でsensu-serverから登録を解除する機能(バージョン0.25)
  • Event Silencing:Handler(通知)の動作を一定期間停止する機能(バージョン0.26)
  • Check Subdue:勤務時間外などCheck(監視)を実行しないスケジュールの設定(バージョン0.26)

 また、Sensu 1.xに向けて、以下の機能が提供されることが宣言されました。

  • Scheduled Maintenance:事前にメンテナンス時間を設定しHandler(通知)の動作を停止する機能
  • Check Hooks:Check(監視)の結果に応じてサービスの再起動などを実行する機能
  • 公式のDockerイメージの提供

 「Check Hooks」は、2017年9月にリリースされたSensu 1.1で実装されました。「Nginx」のプロセスを監視するCheckを例に、具体的な設定を紹介すると下記のようになります。


{
  "checks": {
    "nginx_process": {
      "command": "check-process.rb -p nginx",
      "hooks": {
        "critical": {
          "command": "sudo /etc/init.d/nginx start"
        },
        "non-zero": {
          "command": "ps aux"
        }
      }
    }
  }
}
▲Sensu 1.1で実装された「Check Hooks」の設定例(javascript)

 この設定例では、監視コマンドの実行結果が「Critical(終了ステータスが2)」の場合にNginxを再起動し、それ以外(終了ステータスが0と2以外)の場合は「ps」コマンドの実行結果を返します。これで定型の対処については自動で実施できるようになり、復旧の手間などが削減できそうです。

 実は、筆者も2014年12月に「SensuのhandlerとしてAnsibleを使う」ということを試しており、ようやく同様の機能が公式に実装されました。Sensuの進化を実感できて、うれしく思っています。

Sensuのこれから――「2.0」に向けて

 Sensu Summit 2017では、Sensu,Inc.の副社長であるGreg Poirier氏から「Sensu 2.0」についてアナウンスがありました。

 Sensu 2.0では、構築・管理・運用が「Easier(簡単)」になるということが強調されました。そのために“Sensu史上最大の変更”となりそうで、以下のように実装と構成が大きく変更されます(DockerやKubernetesが台頭してきているためか、コンテナへのパラダイムシフトを意識しているようです)。

  • パフォーマンスや安全性、開発の容易さのため、「Ruby」から「Go」に書き換える
  • 運用にノウハウが必要な「RabbitMQ」は廃止し、通信には「WebSocket」を利用する
  • 可用性の担保が難しいRedisは廃止し、データストアには「etcd」を利用する
  • REST APIが拡充され、Check(監視)の設定などがAPI経由で可能になる
  • プラグインなど、sensu-clientに配布するアセットのバージョン管理と配布をサポートする

 また、全体のアーキテクチャも以下の図1のように変更され、「etcd」を中心とした分散システムに進化します。

図1
図1 Sensu 1.0(図)とSensu 2.0(右)のアーキテクチャ(出典:「The Future of Sensu // Speaker Deck」)

 「sensu-server/sensu-api/RabbitMQ」に相当する機能とアセット管理が1つに統合され、合意プロトコルを使って全てのSensu 2.0 Backendで同じ機能、状態を提供できるようになります(Consulやetcdなどで使用されている「Raft」という分散合意アルゴリズムが利用されると予想しています)。

 実装と構成は大きく変更されることになりますが、プラグインはこれまで通りに使えることがアナウンスされており、新しいSensu 2.0を理解して使いこなせるようになれば、とても便利になりそうです。

 Sensu 2.0は2017年8月からのプライベートβ、2018年1月からのオープンβの後、2018年7月(Sensu 1.0のリリースからちょうど1年後!)にリリースされる予定です。

「Sensu勉強会」のご紹介

 最後に、筆者が主催する「Sensu勉強会(Sensu Talks)」について紹介させてください。

 Sensu勉強会は、Sensuを運用している方やプラグインを開発しているエンジニアが集まり、Sensuそのものやプラグイン、他のツールとの連携や運用ノウハウを共有することを目的としています。

 2015年に2回開催し、それぞれ40人ほどのエンジニアの方々に参加していただきました。しばらく開催できていませんでしたが、Sensu 1.0のリリースやSensu 2.0の発表もあり、日本でのSensuのユーザーを増やし、コミュニティーを大きくするために開催を予定しています。

  • Sensu Casual Talks #1:本連載をご覧になり、Sensuに興味を持たれた方を対象に2018年1月開催予定
  • Sensu Deep Talks #3:Sensuエンジニアの方を対象に、Sensu 2.0オープンβを待ってから、2018年3月開催予定

 興味のある方はconnpassの「Sensu Talks」より、グループに参加してください。開催の詳細が決定次第、グループのメンバーに向けて発表者と参加者の募集を連絡させていただきます。

終わりに

 今回は、Sensu 1.0/2.0の概要と、今後どうなっていくのかを説明しました。Sensu 1.0で実用的な機能が出そろい、Sensu 2.0ではもっと簡単に構築、管理、運用ができるように大きく進化する予定です。

 また、本連載では約1年にわたり、前半ではSensuの概要と構築方法などを説明し、後半ではヤフーの渡邉氏、北田氏にプライベートクラウド環境の運用ノウハウを紹介していただきました。Sensuに興味を持っていただける機会になったり、導入の一助になったりすれば幸いです。

 長期にわたってご愛読いただき、どうもありがとうございました。次は、Sensu勉強会でお会いしましょう!

筆者紹介

堀内 晨彦(ほりうち あきひこ)

生まれも育ちも香川県。香川大学大学院 情報科出身。学生時代は研究の傍ら、勉強会やコミュニティー活動に積極的に参加し、「Sensu Deep Talks」などを主催。2016年4月からは上京し、ICT企業でベアメタルクラウドの開発に従事。趣味は料理とカメラ。

Webサイト:https://hico-horiuchi.github.io/


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る