楽しい自宅サーバ構築

私が大学院生の頃だったか、一台の安いサーバ機を買ったことがある。当時は勉強のためという名目で買ったが、ちょろっとVMを立ててみたところで飽きてしまった。最近そのサーバを引っ張り出してまた遊びはじめた。

というのも、クラウドアプリケーションがはびこる昨今において、情報流出の問題は避けては通れない。つい先日もDropboxの顧客情報が流出したとかしないとかいうニュースがあったし、iCloudのデータ流出事件も世界的にインパクトが大きかった。

そんなわけで、私は時代に逆行して、自分のサーバでiPhoneで撮った画像等を保管しようと思ったわけである。というのは小さなきっかけで、ようは暇つぶしである。

昔作ったサーバの構成は至ってシンプルで、物理マシンにWEBサーバ用のVMDNSサーバ用のVMが乗っているだけである。OSはすべてDebian squeezeだったが、思い切ってwheezyに上げてみた。今のところ特に問題なく動いている。

説明の便宜上、サーバの情報を以下に示す。
物理サーバ:emperor(192.168.2.10)
WEBサーバ(VM):magellan(192.168.2.14)
DNSサーバ(VM):king(192.168.2.12)

今回サーバで遊び始めた段階で、以下のようなことをやろうと思い立った。

  1. 何か写真が共有できるサービス
  2. 何かVMの監視ができるようなサービス
  3. データのバックアップ

まず1について。実はこれはつい先日終わった。どのソフトを使ってどういう風に写真を共有しようかと考えた結果、ownCloudを使うのがよいと思い立ち、さくっと入れてみた。これはなかなかよくできたソフトで、何の問題もなくすんなりと入った。

ただ、windows7でownCloudにネットワークドライブを割り当てようとすると、エラーが出て失敗してしまうというのだけは未解決問題として残っている。いずれ解決したい。

今日の主題は2である。監視ツールの王道としてはnagiosがあるが、せっかくなのでいろいろなソフトを比べてみた。その結果、zabbixが今時っぽくてよいという結論に至った。

このzabbixというやつは、ログをテキストベースではなくDBに保管する仕組みになっている他、CPUのロードアベレージ等の情報をwebインターフェース上でグラフとして見ることができる素晴らしいツールである。

今回は物理サーバから各VMおよび物理サーバ自身を監視するという構成で設定を行った。以下、導入でいくつか戸惑ったポイントがあるので、それについて述べる。

zabbix serverの導入はとても簡単だ。基本的には以下のサイトを参考にした。
Debian Wheezy にZabbix2.2をインストールしてみる - Qiita

問題はクライアントだ。監視対象のサーバにはzabbix-agentというパッケージを入れる必要があるが、普通にapt-getで入れようとすると見つからないと言われる。こういうときは/etc/apt/sources.listにレポジトリ情報を追加するというのが常だが、試行錯誤しているうちに違う方法に行き着いた。

まずzabbixレポジトリからdebパッケージをwgetで取得し、それをインストールし、最後にapt-get updateをかける。そうすると、zabbix-agentがインストールできるようになるようである。zabbixレポジトリのURLは上で挙げたサイトを参照して欲しい。

次に、クライアントの設定を変更しなければならない。とりあえず/etc/zabbix/zabbix_agentd.confにおいて以下の二箇所を変更したら、今のところはうまく動いている。

...
Server=192.168.2.10    # Serverをzabbix serverのものにする
...
Hostname=magellan    # ホスト名を自分のものに変更する
...

サーバとクライアントが準備できたところで、今度は監視項目の設定が必要である。これらはすべてwebインターフェースから行うのだが、ログインのユーザ名とパスワードが分からない。これはググったらすぐに分かって、ユーザ名がAdmin、パスワードがzabbixである。

ついに監視情報の設定をしようと思ったわけだが、なんだか項目がいろいろあってよく分からない。host, item, triggerとかいうものを設定しなければならないらしい。hostはそのままの意味で、監視対象のホストを表す。itemは監視すべき項目を表す(CPU使用率など)。triggerは管理者にアラートを通知する契機を定めるものであるらしい。このあたりよく分かっていない。

つまり何が言いたいかというと、設定が面倒くさい。ここで心が折れかかったが、よく見るとzabbix server自体に仕込んだzabbix-agentの監視情報は、最初からテンプレートで設定がバッチリ行われているではないか!さらによく見ると、hostの設定画面にFull cloneという素晴らしいボタンがあるではないか!

というわけで、なぜか最初から設定がある程度済んでいるzabbix serverのホスト情報をcloneし、名前とIPアドレスだけ変更したら、2つのVMについても無事に監視が始まった。

問題が発生したときにちゃんと通知が来るかどうかなども気になるが、それはまた次回以降で書くことにする。