新たなクラウド監視ツールとして注目され始めている「Sensu」の活用方法を解説する本連載。今回は、Sensu本体とSensuのダッシュボード「Uchiwa」のインストール方法を解説します。
前回は「Sensu」で必要となる2つのミドルウェア「Redis」と「RabbitMQ」について、その概要と構築方法を説明しました。監視結果などのデータの保存と、「sensu-server」と「sensu-client」の間の通信といった役割、公式ドキュメントに従った構築のチュートリアルを通して、理解を深めていただけたと思います。
今回はいよいよSensuの本体である「sensu-server」「sensu-client」「sensu-api」と、Sensuのダッシュボードとなる「Uchiwa」のインストールと設定方法を解説します。前回に引き続き、「Ubuntu Server 16.04」の環境にSensuとミドルウェアをオールインワンで構築します。なお、Debian/Red Hat Enterprise Linux/CentOSについては公式ドキュメントをご覧ください。
まずは、公式ドキュメントの「Sensu on Ubuntu/Debian」に従って、Sensuをインストールします。Sensuは、Ubuntu Serverのパッケージマネージャの「apt-get」コマンドでインストールできるので、とても簡単です。
# Sensuのリポジトリの公開鍵をサーバに追加 $ wget -q https://sensu.global.ssl.fastly.net/apt/pubkey.gpg -O- | sudo apt-key add - # SensuのリポジトリのURLをAptの設定に追加 $ echo "deb https://sensu.global.ssl.fastly.net/apt xenial main" | sudo tee /etc/apt/sources.list.d/sensu.list # パッケージの情報を更新し、Sensuをインストール $ sudo apt-get update $ sudo apt-get -y install sensu
次に、RabbitMQとRedisの接続設定、sensu-clientとsensu-apiの初期設定を行います。Sensuの設定は「/etc/sensu/conf.d」の配下に、
JSON形式のファイルで設置します。この設定ファイルは自由に分割することが可能で、Sensuで読み込む際に結合されます。
ここでは、以下の4つのファイルを「vi」や「nano」などのエディタを使って作成してください。
{ "redis": { "host": "127.0.0.1", // RedisのIPアドレス "port": 6379 // Redisのポート(デフォルト) } }
{ "rabbitmq": { "host": "127.0.0.1", // RabbitMQのIPアドレス "port": 5672, // RabbitMQのポート(デフォルト) "vhost": "/sensu", // RabbitMQのバーチャルホスト "user": "sensu", // RabbitMQのユーザー名 "password": "secret" // RabbitMQのパスワード } }
{ "client": { "name": "sensu.hico.io", // sensu-clientの名前(適宜変更) "address": "150.95.134.43", // sensu-clientIPアドレス(適宜変更) "environment": "development", // User Attributes "subscriptions": [ // 監視グループ(次回に説明します) "redis", "rabbitmq" ] } }
{ "api": { "bind": "0.0.0.0", // APIを外部に公開 "port": 4567 // APIのポート(デフォルト) } }
ちなみに、sensu-clientでは「Client configuration」以外の項目も追加することが可能です。例えば、"environment": "development"など「User Attributes」と呼ばれる項目で、ユーザーがホストを識別したり、他のサービスやツールと連携したりする際に利用されます。
最後に、Sensuのサービス(デーモン)を起動し、自動起動(スタートアップ)を有効化します。公式ドキュメントでは「service」コマンドと「update-rc.d」コマンドが案内されていますが、最近のOSではsystemdの「systemctl」を使う必要があるので、注意してください。
# Sensuのサービス(デーモン)を起動 $ sudo systemctl start sensu-server $ sudo systemctl start sensu-client $ sudo systemctl start sensu-api # Sensuの自動起動(スタートアップ)を有効化 $ sudo systemctl enable sensu-server $ sudo systemctl enable sensu-client $ sudo systemctl enable sensu-api
UchiwaはSensuのダッシュボードで、Go言語とJavaScriptで実装されています。Sensuと組み合わせて使うことが一般的になっているので、公式ドキュメントの内容に従ってインストールします(パッケージのリポジトリはSensuと共通なので、追加の作業などは不要です)。ちなみに、公式のDockerイメージが提供されているので、コンテナとして動かすことも可能です。
# Uchiwaをインストール $ sudo apt-get -y install uchiwa
次に、「/etc/sensu/uchiwa.json」にUchiwaの設定ファイルを作成します。"sensu"のパラメータが配列になっているように、複数のSensu環境を登録することが可能です。各Sensu環境は「Datacenter」と呼ばれ、複数のサービスやリージョンにまたがって管理することができます。
{ "sensu": [ { "name": "sensu.hico.io", // sensu-apiの名前 (適宜変更) "host": "150.95.134.43", // sensu-apiのIPアドレス (適宜変更) "port": 4567 // sensu-apiのポート (デフォルト) } ], "uchiwa": { "host": "0.0.0.0", // Uchiwaを外部に公開 "port": 3000 // Uchiwaのポート (デフォルト) } }
最後にUchiwaのサービス(デーモン)を起動し、自動起動(スタートアップ)を有効化します。サーバの3000番ポート(例、http://sensu.hico.io:3000)にアクセスすると、ダッシュボードを閲覧できます(画面1)。
# Uchiwaのサービス(デーモン)を起動 $ sudo service uchiwa start # Uchiwaの自動起動(スタートアップ)を有効化 $ sudo update-rc.d uchiwa defaults
2回にわたってRedis、RabbitMQ、Sensu、Uchiwaの手動での構築手順を紹介してきました。ここからは、構成管理ツールの「Ansible」を使用して、これらの構築を自動化する方法を紹介します。
構成管理ツールでは、パッケージのインストールや設定ファイルの配置を自動化したり、コード化したりすることができます。“コードによるインフラの管理”である「Infrastructure as Code」を実現するために使用されます。
Ansibleは、レッドハットが開発しているオープンソースの構成管理ツールです。「学習コストが低い」「構成がシンプル」という特徴があるため、人気が高まってきています。
Sensuでは「sensu-ansible」が提供されているので、今回はこれを利用します。他にも「sensu-chef」や「sensu-puppet」など、他の構成管理ツール向けのものも提供されています。
事前に作業端末にAnsibleをインストールする必要がありますが、下記のコマンドを実行するだけで、簡単にSensuをオールインワンで構築することができます。なお、sensu-ansibleがUbuntu 16.04に対応していないため、本稿ではUbuntu 14.04で構築しています。
# 作業ディレクトリを作成 $ mkdir -p sensu-ansible/group_vars $ cd sensu-ansible # Ansibleの実行に必要なファイルを作成 $ vi site.yml $ vi group_vars/all.yml $ vi hosts # AnsibleのリポジトリからSensuのPlaybookを取得 $ ansible-galaxy install cmacrae.sensu # サーバにSSH経由でAnsibleを実行 $ ansible-playbook -i hosts site.yml
Ansibleの実行に必要なファイルの内容は、下記の通りです。「site.yml」が実行内容、「all.yml」がパラメータ、「hosts」が対象サーバです(「sensu.hico.io」の部分は、対象のIPアドレスまたはFQDNに置き換えてください)。
- hosts: sensu_masters roles: - role: cmacrae.sensu
--- dynamic_data_store: data/dynamic rabbitmq_server: ture redis_server: true redis_service_name: redis-server sensu_include_plugins: false sensu_include_dashboard: true sensu_master: true
[sensu_masters] sensu.hico.io [rabbitmq_servers] 127.0.0.1 [redis_servers] 127.0.0.1
「ansible-playbook」コマンドを実行すると、パッケージのインストールなどの処理が流し込まれます(画面2)。完了後、サーバの3000番ポートにアクセスし、「admin:admin」でログインすると、ダッシュボードを閲覧できます。今回はオールインワンで構築しましたが、sensu-clientのみの導入も可能なので、ホストの追加時などに大変便利です。
今回はSensuとUchiwaのインストールと初期設定、そしてAnsibleを使ったインストール方法を紹介しました。どちらもパッケージで簡単にインストールできるだけでなく、設定ファイルもJSON形式で分かりやすいと思います。また、Ansibleを使うことで、構築の自動化や複数のホストへの導入が可能になります。
次回は、監視や通知を行うプラグインのインストールと設定を解説します。簡単な独自プラグインの開発方法も紹介する予定ですので、期待してください。
生まれも育ちも香川県。香川大学大学院 情報科出身。学生時代は研究の傍ら、勉強会やコミュニティー活動に積極的に参加し、「Sensu Deep Talks」などを主催。2016年4月からは上京し、ICT企業でベアメタルクラウドの開発に従事。趣味は料理とカメラ。
Webサイト:https://hico-horiuchi.github.io/
Copyright © ITmedia, Inc. All Rights Reserved.