前提
インフラや運用の知識が乏しい人間が勉強メモとして書いている記事となります。セキュリティーや可用性など実運用に際して著しい欠陥がある場合がありますので、適用する際はご注意ください。
概要
- Amazon LinuxにZabbixサーバーとエージェントをソースコードからインストール
- WEBページから動作状況のモニタリング
Zabbix とは
Zabbix は、サーバーモニタリング用GPLv2ライセンスのOSSツールとなります。
Zabbix サーバーがエージェントサーバー(運用しているWEBサーバーなど)から、動作状況を逐次収集し、WEBページからその状況を見ることができます。
テンプレートを組み合わせて監視対象のパラメーターを対象のサーバーに応じて簡単に変更することができます。
Zabbix 3.2 のドキュメントはこちら。
環境
- Zabbix 3.2
- Amazon Linux 2016.09
- PHP 5.6
- Apache 2.4
- Mysql 5.5
インストール
依存モジュールのインストール
まず、依存モジュールをインストールします。Requirementsによると、PHPは5.4以上が必須、Apacheは1.3.12以上でよいようですがPHPに合わせて2.4を今回は使用します。
データベースはだいたいなんでも使用できますが、今回は Mysql 5.5 を使用します。
yum install mysql-server httpd24 php56 php56-gd php56-mbstring php56-mysqlnd php56-bcmath
本体のインストール
ドキュメントのパッケージからインストールを参考に下記コマンドでインストールを行います。
rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpm
yum install zabbix-server-mysql zabbix-web-mysql
ところが、下記のエラーが出て全くインストールが進みません。
Error: Package: zabbix-server-mysql-3.2.6-1.el7.x86_64 (zabbix)
Requires: libnetsnmp.so.31()(64bit)
Error: Package: iksemel-1.4-2.el7.centos.x86_64 (zabbix-non-supported)
Requires: libgnutls.so.28(GNUTLS_1_4)(64bit)
Error: Package: zabbix-server-mysql-3.2.6-1.el7.x86_64 (zabbix)
Requires: systemd
Error: Package: iksemel-1.4-2.el7.centos.x86_64 (zabbix-non-supported)
Requires: libgnutls.so.28()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
ざっくり調べてみた感じですと、Amazon Linuxにはsystemdがインストールできないようで、諦めて今回はソースコードからのインストールを行うことにしました。
ドキュメントのソースコードからのインストールを参考に、ソースコードの取得、ビルド用のモジュールのインストール、ビルドを行います。
wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz
tar -zxvf zabbix-3.2.6.tar.gz
# ビルド用モジュールのインストール
sudo yum install gcc mysql56-devel libxml2-devel net-snmp-devel libcurl-devel
# ビルド&インストール
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
make install
上記のコマンドが成功すると、/usr/local/etc/zabbix_server.conf
に設定ファイルが作られ、zabbix_server
コマンドが実行できるようになっているはずです。
とりあえず、ドキュメントに従ってzabbix_server
とzabbix_agentd
でZabbixサーバーとエージェントプロセスを起動します。
WEBページの表示とZabbixの設定
ZabbixではWEBページ上からシステム設定の確認や、Zabbixの設定を行うことができます。ページを表示するには、環境のhtdocs
フォルダにfrontends/php
をコピーする必要があります。
RHEL系だと下記のような処理になります。
mkdir /var/www/html/zabbix
cd frontends/php
cp -a . /var/www/html/zabbix
ここまでくれば、http://<server_ip_or_name>/zabbix
にアクセスすると、Zabbixのウェルカムページが表示されるはずです。
「Next Step」に進むと、PHP の設定確認ページが表示されます。Failになっている項目があると次の処理に進めませんので、要求されている内容に設定を変更する必要があります。
PHPの設定が終わると、次はデータベースの設定を行う必要があります。データベースは自動生成をしてくれるわけではなく、ユーザーやデータベースの作成だけでなく、テーブルの作成まで行う必要があります。
Zabbix用のユーザーとデータベースを作成後、Zabbixソースフォルダ直下の以下のファイルを順番に適用しテーブルの作成までを行います。
database/mysql/schema.sql
database/mysql/images.sql
database/mysql/data.sql
データベースの設定後、Zabbixのサーバーの設定(今回は同じサーバー内なのでそのまま)、設定ファイルの保存(特に何も操作していない状態では書き込めない旨のエラーが出るので、適当に指定のパスに保存してください)を行うと設定は完了です!
ログインページが表示され、ユーザー名に「Admin」パスワードに「zabbix」を入力すると、やっとコンソールを確認できるようになります!パスワードは忘れないうちにさっさと変えてしまいましょう。
設定ファイルの変更
うまいことWEBページが表示できたとしても、Zabbixサーバーおよびクライアントが正常に動作しているとは限りません。例えば、下記の正常動作している状態とは異なり、Zabbix サーバーの起動状態が「No」、ホストステータスに何も表示されない場合があります。
これは、/usr/local/etc/zabbix_server.conf
および/usr/local/etc/zabbix_agentd.conf
設定と、上記のWEBコンソール上での設定が食い違っている場合に発生します。
それぞれ主なパラメーターを以下のように変更する必要があります。場合によってはさらにパラメーターを変更する必要があることもあるかと思います。
DBName=zabbix
DBUser=zabbix
DBPassword=設定したパスワード
Server=127.0.0.1 # 今回はlocalhostのみ
Hostname=Zabbix server # WEBコンソールの「設定」→「ホスト」に設定されている一覧から「有効」になっているホスト名を設定
監視を行う
監視データの閲覧
監視設定まで完了すると、あとはZabbixがデータの収集を自動で行ってくれています。
「監視データ」→「最新データ」から登録したホストの最新のデータを下記のような感じで確認することができます。
「監視データ」→「グラフ」では過去の状態を含めて、グラフで各ホストのシステム状態を確認することができます。
例えば、Linux OSのテンプレートを設定したホストでは、CPU使用率やメモリ使用率など一般的な指標を簡単に確認することができます。
WEBページのパフォーマンスの測定
「設定」→「ホスト」→「WEBシナリオ」からWEBシナリオの作成を行うことができます。「シナリオ」で更新間隔や回数・プロキシの設定、「ステップ」でアクセスURLや変数・ステータスコードを設定することで、該当URLのパフォーマンスを確認することができます。
「監視データ」→「Web」から取得したデータを確認することができます。以下は、一時的にApacheを停止させた際のログになります。サーバーが止まっていた間ログが欠けていることを確認することができます。
トリガーの設定
「設定」→「ホスト」→「トリガー」からトリガーの作成を行うことができます。深刻度と「追加」から条件式をUIから設定し、有効にすることでトリガーを設定することができます。
トリガーを設定しておくと、WEBのトップページから障害状況を確認することができます。また、「監視データ」→「トリガー」より障害発生履歴を確認することができます。
おわりに
今回は、ZabbixのインストールとWEBコンソールから状態を確認してみました。数あるサーバーの状態監視を一箇所に集約できるのは当たり前ですが便利だなと感じました。
アラートをメールで送ることも可能ですので運用時も重宝しそうです。
次の機会にどんなデータが取得できるか、トリガーをどう使っていくのが良さそうかを調べてみたいと思います。