Sensuを支えるミドルウェア「Redis」と「RabbitMQ」の環境を構築する:Sensuで始めるクラウド時代のシステム監視(3)
新たなクラウド監視ツールとして注目され始めている「Sensu」の活用方法を解説する本連載。今回はSensuで必要となるミドルウェア「Redis」と「RabbitMQ」について、その概要と構築手順を解説します。
公式ドキュメントに従って環境を構築
前回は「Sensu Core」と「Sensu Enterprise」の違い、他の監視サービスとの比較について説明しました。「Heads Up Display(HUD)」やサードパーティー連携など、Sensu Enterpriseで提供される機能の他、「Datadog」「Mackerel」といった監視サービスと比較しても安価で自由度が高いことなどをご理解いただけたと思います。
今回は「Sensu」で必要となる2つのミドルウェア「Redis」と「RabbitMQ」について、その概要の紹介と、Sensuの公式ドキュメントに従った構築手順を解説します(画面1)。環境は「Ubuntu Server 16.04」で、Sensuとミドルウェアを“オールインワン”で構築します(Debian/Red Hat Enterprise Linux/CentOSなども公式ドキュメントに案内があるので、ご覧ください)。
Key-Valueストア「Redis」
Redisの概要と用途
「Redis」は、オープンソースのインメモリKey-Valueストア構築ソフトウェアです(画面2)。なお、Key-Valueストアとは、データを名前と値のペアで保存する形式のデータベースのことです。Sensuの環境では、Redisはデータベースやキャッシュ、データブローカーといった用途で使用されます。
Sensuでは「sensu-client」や監視結果などのデータを保存するために使用します。例えば「sensu.hico.io」という名前のsensu-clientの場合は、下記のようなデータが保存されます(sensu-serverがJSON形式のデータをRedisの文字列型として保存しています)。
{ "name": "sensu.hico.io", "address": "150.95.134.43", "subscriptions": [ "redis", "rabbitmq", "client:sensu.hico.io" ], "version": "0.28.2", "timestamp": 1489214806 }
Redisのインストール
Sensuの公式ドキュメント「Install Redis on Ubuntu/Debian」に記載された手順に従って、Redisをインストールします。Ubuntu Serverのパッケージマネージャの「apt-get」コマンドでインストールできるので、とても簡単です。
# パッケージの情報を更新し、Redisをインストール $ sudo apt-get update $ sudo apt-get -y install redis-server # Redisのサービス(デーモン)を起動 $ sudo /etc/init.d/redis-server start # Redisの自動起動(スタートアップ)を有効化 $ sudo update-rc.d redis-server defaults # Redisが起動し、接続できることを確認 $ redis-cli ping
「redis-cli ping」のコマンドを実行して「PONG」と返ってくれば、インストールは成功です。設定ファイル「/etc/redis/redis.conf」はデフォルトのままで問題ありません。また、sensu-serverとsensu-apiが同じRedisに接続できる必要があるので、注意してください。
メッセージブローカー「RabbitMQ」
RabbitMQの概要と用途
「RabbitMQ」は、オープンソースのメッセージブローカーソフトウェアです(画面3)。アプリケーションや機能の間で、「AMQP」というプロトコルでメッセージを送受信する際に使用されます。
「OpenStack」のようなマイクロサービスアーキテクチャでは、サービス間で操作と状態をやりとりするためにRabbitMQが使用されています。
RabbitMQのシステムでは、送信側はキューにメッセージを保存し、受信側はキューからメッセージを取り出して処理します。送受信はそれぞれ複数のクライアントから実行できるので、分散処理や高信頼性のシステムを実現することができます。
Sensuでは、sensu-serverからsensu-clientに監視の実行を指示したり、sensu-clientからsensu-serverに監視結果を送信したりするために使用しています。
RabbitMQのインストール
Sensuの公式ドキュメント「Install RabbitMQ on Ubuntu/Debian」に記載された手順に従って、Redisをインストールします。最初に、RabbitMQの実行に必要な「Erlang」をインストールします。
# ErlangのAptリポジトリを追加 $ sudo wget http://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb $ sudo dpkg -i erlang-solutions_1.0_all.deb # パッケージの情報を更新し、Erlangをインストール $ sudo apt-get update $ sudo apt-get -y install socat erlang-nox
次に、RabbitMQを公式サイトからダウンロードしてインストールします(これは、apt-getコマンドを使うと古いバージョンがインストールされるためです)。
# RabbitMQのパッケージをダウンロードしてインストール $ wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server_3.6.6-1_all.deb $ sudo dpkg -i rabbitmq-server_3.6.6-1_all.deb # RabbitMQのサービス(デーモン)を起動 $ sudo /etc/init.d/rabbitmq-server start # RabbitMQの自動起動(スタートアップ)を有効化 $ sudo update-rc.d rabbitmq-server defaults
また、RabbitMQではキューやメッセージのために大量のファイルを開くため、「ファイルディスクリプタ」(ユーザーやプロセスが開けるファイルの上限数)を変更しておく必要があります(筆者は、RabbitMQがファイルを開けなくなり、Sensuの監視が停止した経験があります)。
# ファイルディスクリプタの上限数を変更 $ echo "rabbitmq soft nofile 65536\nrabbitmq hard nofile 65536" | sudo tee -a /etc/security/limits.conf $ echo "session required pam_limits.so" | sudo tee -a /etc/pam.d/common-session $ echo "session required pam_limits.so" | sudo tee -a /etc/pam.d/common-session-noninteractive # RabbitMQの設定を変更して再起動 $ sudo mkdir -p /etc/systemd/system/rabbitmq-server.service.d $ echo -e "[Service]\nLimitNOFILE=65536" | sudo tee -a /etc/systemd/system/rabbitmq-server.service.d/limits.conf $ sudo /etc/init.d/rabbitmq-server restart
最後に、Sensu用のバーチャルホストとユーザーを作成し、権限を設定します。
全てのsensu-serverとsensu-clientが同じRabbitMQに接続できる必要があるので、注意してください。
$ sudo rabbitmqctl add_vhost /sensu $ sudo rabbitmqctl add_user sensu secret $ sudo rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"
終わりに
今回はSensuで必要となる2つのミドルウェア、RedisとRabbitMQについて説明しました。
RedisはKey-Valueストアで、sensu-clientや監視結果などのデータを保存するために使用しています。RabbitMQはメッセージブローカーで、sensu-serverとsensu-clientの間の通信に使用しています。どちらも最近人気のミドルウェアなので、Sensu以外でも利用する機会があると思います。
次回は、sensu-serverとsensu-client、sensu-apiのインストールと設定について、今回と同様に具体的なコマンドなどを示しながらチュートリアル形式で解説します。
筆者紹介
堀内 晨彦(ほりうち あきひこ)
生まれも育ちも香川県。香川大学大学院 情報科出身。学生時代は研究の傍ら、勉強会やコミュニティー活動に積極的に参加し、「Sensu Deep Talks」などを主催。2016年4月からは上京し、ICT企業でベアメタルクラウドの開発に従事。趣味は料理とカメラ。
Webサイト:https://hico-horiuchi.github.io/
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- OSS運用監視ソフト 注目の10製品徹底比較 2016年版
運用監視をはじめ、多くの企業が取り入れているOSS(オープンソースソフトウェア)。目的に応じて最適なものを選択し、うまく使いこなせば強力な武器となるが、それができなければかえって手間や混乱の原因にもなりかねない。本連載では注目のOSSをピックアップして実際に検証し、基本的な優位性、劣位性を明確化した。ぜひOSSを選ぶ際の参考にしてほしい。 - 「複雑な混在環境を使いこなす」クラウド/OSS時代の運用管理、4つの視点
近年の「先が見えない」市場環境の中、ビジネス要請へのスピーディな対応が求められるシステム運用管理にも新しいアプローチが求められている。本特集『クラウド/OSS時代の「業務を止めない」運用ノウハウ』では、そのアプローチを一つ一つ掘り下げていく。 - 初めての運用管理者が知っておきたい監視・ジョブ管理向けOSS構成例4つの比較まとめ
システム運用の上で重要な「監視」と「ジョブ管理」について、効率的な実現方法を解説。