Zabbix Server と Zabbix Agent のインストールの個人的なメモです。

目次

Zabbix とは

サーバーを監視してグラフ化にしたり、障害やサーバーの状態に応じてメールなどで通知させる統合監視ソフトウェア。

似たような統合監視ソフトウェアで、私は Nagios しか使ったことがなかったんだけど、監視するサーバーが増えたり監視したい情報が増えたりしたときに、Nagios 力が低すぎてやりたいことがやれなかったのですが、Zabbix は基本的にはブラウザから設定するみたいだし、UI は日本語だし、日本語の情報も多いし、AWS 用の拡張ツールもあるみたいなので、Nagios から Zabbix に乗り換えることにしました。

参考

Zabbix Server をインストールした環境

  • OS: CentOS 6.6
  • アーキテクチャ: i686

(x86_64なサーバーマシンが欲しいよぉおお)

インストールした Zabbix Server と Zabbix Agent のバージョン

$ zabbix_server -V
Zabbix server v2.4.3 (revision 51175) (15 December 2014)
$ zabbix_agent -V
Zabbix agent v2.4.3 (revision 51175) (15 December 2014)

Zabbix Server と Zabbix Agent のインストールの流れ

yumリポジトリの登録

$ rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/i386/zabbix-release-2.4-1.el6.noarch.rpm

x86_64アーキテクチャの場合は下記。

$ rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

Zabbix パッケージをインストール

$ yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent zabbix-get

Zabbix Sender のインストール

HyClopsプラグインを使用する場合に必要らしい。(HyClopsプラグインは使ってないので未確認)

$ yum -y install zabbix-sender

MySQLデータベースの初期化

$ mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '{パスワード}’;
mysql> exit

スキーマへのデータインポート

$ cd /usr/share/doc/zabbix-server-mysql-2.4.3/create
$ mysql -uroot zabbix < schema.sql
$ mysql -uroot zabbix < images.sql
$ mysql -uroot zabbix < data.sql

Zabbix Server の設定を修正

$ vi /etc/zabbix/zabbix_server.conf
# 修正箇所のみ表示
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword={パスワード}

Zabbix Server プロセスを開始

$ /etc/rc.d/init.d/zabbix-server start

Zabbix Server の自動起動

$ chkconfig zabbix-server --list
zabbix-server  	0:off	1:off	2:off	3:off	4:off	5:off	6:off
$ chkconfig zabbix-server on
$ chkconfig zabbix-server --list
zabbix-server  	0:off	1:off	2:on	3:on	4:on	5:on	6:off

Apache の設定ファイルを修正

/etc/httpd/conf.d/zabbix.conf が作られるので良しなに修正する。

Zabbix Server のインストール

http://example.com/zabbix にアクセスすると Zabbix Server のインストール画面が表示されるので、順番に進めていけばOK。

※メモ: インストールの流れのスクリーンショット画像を撮り忘れたので、またインストールし直す機会にスリーンショット画像を差し替えたい

Zabbix Agent のみをインストールする場合の流れ

監視対象のサーバーでウェブのUI(Zabbix Server)が必要ない場合は Zabbix Agent だけをインストールすればOK。

yumリポジトリの登録

Zabbix Server の場合と同じ。

Zabbix Agent のインストール

$ yum -y install zabbix-agent

Zabbix Agent の設定を修正

$ vi /etc/zabbix/zabbix_agentd.conf
# 修正箇所のみ表示
Server={Zabbix Server のドメイン}
ServerActive={Zabbix Server のドメイン}
Hostname={ホスト名}

※1: ServerServerActive の違いはよくわかってないけど、とりあえず同じにしておいた
※2: Hostname はサーバーのホスト名と同じじゃなくてもいいと思うけど、とりあえず同じにしておいた

Zabbix Agent プロセスを開始

$ /etc/rc.d/init.d/zabbix-agent start

Zabbix Agent の自動起動

$ chkconfig zabbix-agent --list
zabbix-agent   	0:off	1:off	2:off	3:off	4:off	5:off	6:off
$ chkconfig zabbix-agent on
$ chkconfig zabbix-agent --list
zabbix-agent   	0:off	1:off	2:on	3:on	4:on	5:on	6:off

ポートの開放

標準では、 Zabbix Agent は 10050 番ポートで Zabbix Server からのアクセスに応答し、 Zabbix Server は 10051 番ポートで Zabbix Agent からのアクセスに応答するので、それぞれのポートを開けてあげる必要がある。

Zabbix Server と Zabbix Agent 間の通信が全て許可されているような場合にはこの設定は気にしなくてよい。

Zabbix Agent 側のポート開放

$ iptables -A INPUT -p tcp --dport 10050 -j ACCEPT -s {Zabbix Server のグローバルIPアドレス}

Zabbix Server 側のポート開放

$ iptables -A INPUT -p tcp --dport 10051 -j ACCEPT -s {Zabbix Agent のグローバルIPアドレス}

ポートが正しく空いているか確認する

nmap コマンドでポートの開放状況を確認できる。
nmap コマンドが入っていない場合は、 yum -y install nmap とかする。

$ nmap -p 10050 {Zabbix Server のグローバルIPアドレス、またはドメイン}

Starting Nmap 5.51 ( http://nmap.org ) at 2015-01-08 23:08 JST
Nmap scan report for {Zabbix Server のドメイン} ({Zabbix Server のグローバルIPアドレス})
Host is up (0.026s latency).
rDNS record for {Zabbix Server のグローバルIPアドレス}: {Zabbix Server のドメイン}
PORT      STATE SERVICE
10050/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 0.34 seconds

10050 番ポートが空いていることを確認できた。

Zabbix Server に監視対象ホストを追加する

[ホスト] タブ

監視対象ホストの接続情報など。

  1. http://example.com/zabbix から Zabbix Server にログイン
  2. [設定] -> [ホスト] の [ホストの作成] ボタンをクリック
  3. [ホスト名] [表示名] はよしなに
  4. [所属グループ] は任意でグループ分けできる機能なので、よしなに
  5. [エージェントのインターフェース] は [DNS名] を入力して、 [接続方法] は [DNS] を選択(ポートはデフォルトの「10050」でOK)

[テンプレート] タブ

テンプレートをリンクさせることで、そのホストに対して「何を監視するか」や「何の値がどれくらいになったらアラートメールを送信するか」などの設定を行う。

監視対象サーバーは Linux なので、 [Template OS Linux] テンプレートをリンクさせる。

  1. [新規テンプレートをリンク] の [選択] リンクをクリックすると、ポップアップでテンプレート一覧が表される
  2. [Template OS Linux] にチェックを入れて [選択] ボタンをクリック(もしくは [Template OS Linux] リンクをクリック)
  3. [新規テンプレートをリンク] に [Template OS Linux] が入力されていることを確認して [追加] リンクをクリック

入力が完了したら、 [追加] ボタンで監視対象ホストが追加される。

他のタブはよくわかっていないので、おいおい勉強していくことにする。

アラートメールを送信する

これを設定しないと障害や障害の予兆のような動作が発生しても Zabbix Server は何も知らせてくれない。

http://example.com/zabbix にログインすれば状況を確認することができるけど、障害や障害の予兆のような動作があったときに何らかの方法でお知らせしてくれるようにしておきたい。

今回は管理ユーザーにメールアドレスを登録して、アラートメールが送信されるようにする。

管理ユーザーにメールアドレスを追加する

  1. [プロファイル] -> [メディア] タブの [追加] リンクをクリックすると ポップアップで [新規メディア] 追加画面が表示される
  2. [タイプ] は「Email」、[送信先] は自分のメールアドレス、[有効な時間] [指定した深刻度のときに使用] はよしなに、[ステータス] は有効にしておく
  3. [追加] ボタンをクリックする
  4. ポップアップウィンドウが閉じて [メディア] に上記で入力したメールアドレスが表示されていることを確認する
  5. [更新] ボタンで変更が更新される

アクションを設定する

アクションは設定した覚えがないので初めから設定されていた気がするけど、どうだったけかな…。

また Zabbix Server をインストールすることがあったらこの内容を更新する。

とりあえずスクリーンショット画像だけ貼っておく。

障害、または何らかのデータが閾値を超えるのを待つ

障害を待つのはダルいので、一旦、監視対象の Zabbix Agent の 10051 番ポートを閉じて Zabbix Server から Zabbix Agent に接続できない状況にして、この状態でアラートメールが送信されるか確認したりすればいいと思う。

まとめ

Zabbix はインストールが簡単だし、設定がブラウザからできるので初心者にもわかりやすいです。

今は Zabbix で安定したサーバー監視ができている状態になったので、Nagix は停止して Zabbix に完全移行することができました。

改訂版 Zabbix統合監視実践入門 ~障害通知、傾向分析、可視化による省力運用 (Software Design plus)
改訂版 Zabbix統合監視実践入門 ~障害通知、傾向分析、可視化による省力運用 (Software Design plus)

Zabbix統合監視徹底活用 ~複雑化・大規模化するインフラの一元管理 (Software Design plus)
Zabbix統合監視徹底活用 ~複雑化・大規模化するインフラの一元管理 (Software Design plus)