新たなクラウド監視ツールとして注目され始めている「Sensu」の活用方法を解説する本連載。今回は、Sensuの基本的な構成や監視の仕組み、利用するメリットなどを紹介します。
「Sensu」は、Sensu,Inc.(※)が開発している、「Ruby」製のオープンソース監視プラットフォームです。「Nagios(ナギオス)」の問題点を解決する目的で、2011年にSean Porter氏らを中心に開発が開始されました。
「Sensu(扇子)」という名前は、竹を活用する日本文化と、単機能をうまく組み合わせるUNIX哲学から影響を受けたそうです。ちなみに、現在の最新バージョンは「v0.27.0」で、現在も活発に開発が進められています。
【※】2017年1月30日にHeavy Water Operationsから社名を変更。
そもそも、Sensuが誕生するきっかけとなったNagiosの問題点とは何でしょうか。Nagiosは、監視サーバが監視対象となるクライアントの情報を持っている必要があります。新たなクライアントを監視するには、設定ファイルに追記し、サービスをリロードする必要があるため、クラウドのように頻繁にシステム構成が変更されるような環境には不向きだったのです。
そこで、Sensuは最初からクラウド環境での利用を想定して設計されました。下記のような機能がコンセプトになっており、サーバ数が頻繁に増減したり、サーバが自動でデプロイされたりするような環境にも柔軟に対応することが可能になっています。
Sensuは「sensu-server」(監視サーバ)、「sensu-client」(エージェント)、「sensu-api」(RESTful API)の3つのコンポーネントで構成されています(図1)。sensu-serverとsensu-clientの通信には、メッセージ指向ミドルウェアの「RabbitMQ」、監視対象や監視結果の保存にはKey-Valueストアの「Redis」を使用しています。なお、Sensu v0.19.0からは、Redisを通信にも使用できるようになりました。
ここで、Sensuにおける監視の流れを簡単に説明しておきましょう。Sensuにおける監視の流れは以下のようになり、データのやりとりはほとんどがJSON形式で行われます。
監視やその結果に応じた処理を行うプラグイン(スクリプトなど)の設定はsensu-server上で定義し、実際に実行するスクリプトはsensu-client上に配置します。監視の設定には「どの役割のsensu-clientで実行するか」が定義されており、sensu-clientは自分の役割(Webサーバ、メールサーバなど)に応じた監視を実行します(役割は複数定義、設定できるため、n対nの関係になっています)。
また、sensu-client上で設定を行い、独立して監視を実行できるスタンドアロン機能もあります。クライアント独自の監視を行うことができ、結果はsensu-serverに集約されるため便利です。
Sensuはこのような構成になっているため、新たなsensu-clientを追加した場合でも、sensu-serverの設定を変更することなく監視を開始することができます(監視項目の追加など、設定を変更した場合はサービスのリロードが必要)。
Sensuのダッシュボードには「Uchiwa」というしゃれた名前が付けられています。UchiwaはSensuとは別のプロダクトですが、両者を組み合わせて使うことが一般的です(2014年末までは「sensu-dashboard」がありましたが、既にサポートが終了しています)。
Uchiwaでは、発生中のアラートやクライアントと監視項目の一覧など、Sensuの情報を一元的に閲覧することができます(設定の変更などはできません)(画面1)。複数のSensu環境にも対応しており、大量の情報をフィルタリングして見やすくすることも可能です。また、メンテナンスなどの際にアラートを一時的にサイレントにしたり、監視クライアントを削除したり、アラートを停止したりするなど、管理者向けの機能も備えています。
最後に、Sensuを利用する際のメリット/デメリットを整理しておきます。Sensuの利用で得られるメリットには、以下のようなものがあります。
一方、Sensuには以下のようなデメリットがあることも覚えておいてください。
今回はSensuの概要と基本的な構成、監視の仕組みを説明しました。監視クライアントの自動登録や構成管理ツールとの親和性の高さなど、他の監視プラットフォームと比較して、クラウド環境に適していることがご理解いただけたと思います。
次回以降は、Sensuのインストールや設定、メトリクスの収集と可視化、スケールアウトと冗長化など、より具体的な内容を説明していきます。実際の運用で得られたノウハウの紹介なども行う予定ですので、ご期待ください。
本稿の執筆に際し、Sensu開発者のSean Porter氏のブログや講演資料、Sensuのソースコードを参考にさせていただきました。
生まれも育ちも香川県。香川大学大学院 情報科出身。学生時代は研究の傍ら、勉強会やコミュニティー活動に積極的に参加し、「Sensu Deep Talks」などを主催。2016年4月からは上京し、ICT企業でベアメタルクラウドの開発に従事。趣味は料理とカメラ。
Webサイト:https://hico-horiuchi.github.io/
Copyright © ITmedia, Inc. All Rights Reserved.