ネット情報を元にZabbixをインストールするとハマるポイント

Zabbixのインストールに限らず、Web上の情報を鵜呑みにして作業を行うと、思わぬ落とし穴にハマることがある。Web上の情報を頼りにZabbixをインストールした場合、よくハマるポイントをまとめてみた。Windows版 に関しては個人的にあまり扱っていないので、Linux版 に情報を限定する。

## 作業に移る前に

### 新旧の情報が入り乱れている
Zabbix の手順を Google で検索すると、古いバージョンの情報が多くヒットする。古いバージョンの情報でも、基本的な手順は変わらない。ただ、インストールするOSのバージョンが古く、CentOS の6系の操作手順でサービスの起動とポート開放の手順が書かれていることも多い。

古い情報を頼りにインストールすると、細かい手順の修正が必要なため、抜け漏れが発生しやすくなる。できるだけ、インストールするバージョンも一緒に検索条件に含めることを勧める。情報を記載した日付も新しいものを選ぶ方が無難。

### 使用するDBについて
Zabbix で はMySQL と PostgreSQL が利用できる。ややこしいのが、MySQLとMariaDBについてだ。MySQLの手順はそのままMariaDBでも流用できる。大人に事情(Oracle関連)があって、平たく言えばほとんど同じものだ。詳細については、以下のリンクを見て欲しい。

> MariaDB と MySQL のソースコードの類似度を調べる
> https://www.s-style.co.jp/blog/2018/04/1709/

DBをインストールする手順については、別のネットの情報を参照して行っても差し支えは無い。最新版が利用したければ、Zabbix も最新のものをインストールすることを勧める。同じような時期に出たものを利用するのが無難。

### PHPのバージョンについて
古い CentOS での手順を実行すると、デフォルトで使用される古いバージョンの PHP5 がインストールされるので注意。新しい手順では、リポジトリを設定して PHP7 を使用するようになっていることが多い。Zabbix の LTS（ロング タイム サポート）をインストールしても、PHPの方が先にサポート切れになるという情けない事態が起きることになる。


## 書いてある通りにやってもうまくいかないポイント
### Zabbixのバージョン
ネット上で公開されている Zabbix のインストール手順では、CentOS であれば yum、Debian、Ubuntu では apt を使用したものが中心だ。注意すべきは、手順で指定されたリポジトリのバージョンだ。監視をするサーバにインストールした Zabbix Server のバージョンと、監視対象にインストールする Zabbix Agent のバージョンが違うと、上手く監視ができないことがありる。

特に、Zabbix Server のインストール Zabbix Agent のインストールと、別のWebページを見てインストールを行った時にこのような現象が発生する。Zabbix Server のバージョンとZabbix Agent のバージョンが違った時に、どういう現象が起こるかは細かく検証はしていない。ただ、新機能が使用できなかったり、説明ができないような挙動をする原因になることが考えらられる。

リポジトリを追加する際に、だいたい以下のような手順がある。

```
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
```

このコマンドをよく見て欲しいのだが、"/zabbix/3.0/rhel/7/" という記述がある。これは、Redhatの7系のZabbix3.0用のリポジトリだ。また、インストールするrpmも "zabbix-release-3.0-1.el7.noarch.rpm" と、バージョンと対象のOSが指定されている。ここを確認しないと、意図しないバージョンがインストールされたり、もしくはインストール自体ができないので注意しよう。

使用する OS と Zabbixのバージョン など、条件に合ったリポジトリの rpm をインストールするコマンドは、以下の公式サイトで調べることができる。

> Download Zabbix
> https://www.zabbix.com/jp/download?zabbix=4.0&os_distribution=centos&os_version=7&db=MySQL



### ポートの開放の手順が略されていることがある
公式の手順にポートを解放する手順が無い。

> Download Zabbix
> https://www.zabbix.com/jp/download?zabbix=4.0&os_distribution=centos&os_version=7&db=MySQL

ネットで公開されている手順に多いことだが、どういう条件でインストールしているかは手順を読んで自分で理解する必要がある。ネットで公開されているZabbixのインストール手順で多いのは、Zabbix Server をインストールしてWebインターフェイスが表示されるまでの手順のことが多い。

理由として、Zabbix Server をインストールするサーバに Zabbix Agent をインストールすれば、同じサーバなのでポートを設定しなくても監視が通ってしまうからと考えられる。Zabbix Server で自サーバでの監視データはとれるのに、エージェントを追加した別のサーバの監視ができないケースがある。大概はポートを開けていないことが原因だ。


### 監視対象の追加方法について
Zabbixの設定でホストを追加する際に、テンプレートを指定しなくてもホストのデータだけは登録できてしまう。Zabbix Server と Zabbix Agent のポートを開放して、サービスも起動している、コンフィグを設定しているのに、Webインターフェイスのエージェントの状態が緑にならない時は、テンプレートを指定しているかを確認しよう。意外と手順に書かれていないことが多い。

Zabbix Agent をインストールすると、監視情報のサーバが 127.0.0.1 に設定されている。Zabbix Server にインストールした場合、そのままの設定で正常に動いてしまう。/etc/zabbix/zabbix_agentd.conf を適切に編集して、Zabbix Agent を再起動しなければ Zabbix Server にデータを送信しない。監視対象で 10050のポート を開けておかないと、監視が有効にならない。

Webの情報では、Zabbix Server のインストール、Zabbix Agent のインストール、ホストの追加で手順が別々になっていることが多い。手順のつなぎ目の部分で情報が欠落することが多いので注意する。

### Zabbix Agent の接続状態確認
Zabbix Agent で接続できているかどうかを確認するには、zabbix_get というコマンドを使って行う。

> Zabbix Documentation
> https://www.zabbix.com/documentation/2.0/jp/manual/concepts/get

yum の場合、zabbix-get は別パッケージになっているので別途インストールする(手順によっては、どさくさに紛れてインストールしている)。サーバから Zabbix Agent の疎通確認を行うには、サーバから以下のように実行する。

```
zabbix_get -s ＜監視対象のIPアドレス＞ -k ＜Zabbixアイテムキー＞
```

疎通を確認するのであれば、以下のアイテムキーを指定すれば、Zabbix Agent 経由でhostnameを取得できる。

```
zabbix_get -s ＜監視対象のIPアドレス＞ -k system.hostname
```

アイテムキーに何を設定すればどういう情報が取れるかは、テンプレートの設定を見て調べることができる。


### SNMPの監視について
Webで公開されている情報のほとんどが　Zabbix Agent　を使用した監視が前提だ。SNMPでの監視について手順が記載されていない。ネットワーク機器等を監視したい場合は、Zabbix Server　から SNMP 監視をする手順を別途で調べておく必要がある。Web上の Zabbix Server から SNMP を監視する手順では、コマンドでSNMPの情報が取得できる状態からスタートしていることが多い。snmpwalk で情報が取得できるところまでは、別途、手順をしらべて設定しておく必要がある。

Zabbix で SNMP を使用する手順だが、コミュニティー名 の設定や MIBファイル についてお茶を濁している手順も多い。そういう手順では、暗黙で、コミュニティー名が標準の "Public" を使用していることが前提だったり、標準MIB の監視が前提になっていたりする。詳細を記載するとなるとなかなか説明が大変なので致し方ないとは思う。

また、SNMPで監視する手順では、SNMP の Version1 か 2 を使用する前提になっている。SNMP3 を使用したい場合は、別途手順を調べておく必要がある。SNMP のどのバージョンを使用するかは、SNMP のバージョン毎にテンプレートが用意されている。使用するテンプレートでSNMP のバージョンが選択できる。

Zabbixに慣れていないのであれば、まずはコミュニティー名を Public(標準) で標準MIBの項目を拾えるように設定しよう。設定 > ホスト を選択して、設定したいホストを選択。マクロの項目を選択して、以下の画像のように変数を設定する。

![Macro.jpg](https://qiita-image-store.s3.amazonaws.com/0/39277/318da635-5072-d296-d761-27efc8547564.jpeg)

> {$SNMP_COMMUNITY} ⇒ public

余談ではあるが、YAMAHA のルーター RTX1200 では、GUIのWebインターフェイスから設定すると SNMPv1 で設定される。SNMPv2 を使用したければ、明示的にコマンドで設定する。

> SNMP の設定
> http://www.rtpro.yamaha.co.jp/RT/docs/snmp/index.html#example

## 最後に
Zabbixに限らず、Webで公開されている手順をやればそれなりに動くところまではいく。しかし、どういう条件で動いているかは自分で確認しよう。動いた時点で満足してしまうと、特定の機能が使用できなかったり、ソフトウェアが想定していないことをやろうとしてしまったりと、そういう勘違いに繋がっていくことが多々ある。

この記事にの内容については、個人的に目に付いた範囲について記載している。内容については、随時、追加や修正を行うこともある。修正や加筆の希望などがあれば、編集リクエストを頂ければと思います。