新たなクラウド監視ツールとして注目され始めている「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企業でベアメタルクラウドの開発に従事。趣味は料理とカメラ。
Copyright © ITmedia, Inc. All Rights Reserved.
Linux �� OSS 險倅コ九Λ繝ウ繧ュ繝ウ繧ー