zabbixでVyOSをSNMP監視する

運用するVyOSのトラフィック量、CPU使用率、メモリ使用率、インタフェースのアップダウン状態等を監視するためにzabbixサーバの構築とVyOSのSNMP設定について記述していきます。
SNMPはMIBなどの知識があると監視の幅を広げられますが、今回はその点には触れずにあくまでSNMP監視ができる環境の構築ということで記事を書いていきます。

# 構築環境
* zabbix 3.2
* VyOS 1.1.7
* ubuntu 16.04

# zabbixサーバの構築

今回はUbuntu16.04にzabbixサーバを構築していきます。 
zabbixはパッケージがOSSで提供されているので、それを使って構築を行います。
またDBとしてPostgreSQLとMySQLが選べますが、今回はMySQLを利用します。

## パッケージのインストール

zabbix.comからパッケージをダウンロード

```
$ wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
```
ダウンロードしたパッケージをUbuntu上にインストール

```
$ dpkg -i zabbix-release_3.2-1+<codename>_all.deb
$ apt-get update
```

## DB(MySQL)まわりの設定

必要なパッケージのインストール

```
$ sudo apt-get install zabbix-server-mysql zabbix-frontend-php
```

zabbixで利用するDBの登録

```
$ mysql -uroot -p[パスワード]
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '[zabbixで利用するDBのユーザパスワード]';
mysql> quit;
```
zabbixでDBを利用するための初期データを作成したDBに入れていく。

```
$ zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u zabbix -p zabbix

[パスワード(zabbixで利用するDBのユーザパスワード)]を入力
```
zabbixのconfファイルを編集して、zabbixサーバとDBを対応付ける。
また、TimeZoneをAsia/Tokyoに変更する。

```
$sudo vi /etc/zabbix/zabbix_server.conf
--省略--
(以下のように該当部分を編集)
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
```

```
$vi /etc/apache2/conf-enabled/zabbix.conf
--省略--
(以下のように該当部分を編集)
php_value date.timezone Asia/Tokyo
```

編集後、zabbix起動及びapache2の再起動をします。

```
$ service zabbix-server start
$ sudo systemctl enable zabbix-server.service
$ service apache2 restart
```

## zabbixフロントエンドにアクセス

Webブラウザを立ち上げて、`http://<ipアドレス|FQDN>/zabbix`にアクセスします。
※ IPアドレスはlocalhostやプライベートIPになると思います

<img width="645" alt="2016-12-09_14h43_42.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/c1b3104a-f5d0-7c68-cb48-f19f93e30a3d.png">

こんな画面になるので、右下の`Next step`をクリックします。

次にPHP環境のバージョンチェックになります。
私は、ここで以下のエラーが出ました。

```
PHP bcmath extension missing (PHP configuration parameter --enable-bcmath).
PHP mbstring extension missing (PHP configuration parameter --enable-mbstring).
PHP xmlwriter extension missing.
PHP xmlreader extension missing.
```

その場合、以下のコマンドを行ってPHP環境を再設定して上げてください。

```
$ sudo apt-get install php-bcmath
$ sudo apt-get install php-mbstring
$ sudo apt-get install php-xml
$ service zabbix-server restart
$ service apache2 restart
```

<img width="846" alt="スクリーンショット 2017-08-17 17.01.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/d282ecb0-e8c6-1469-daf0-741c383eb2e7.png">

このようにエラーがなくなればOKです。

次に行くと、DBの設定になるので前項で設定した内容に基づきDB情報を入力します。

<img width="640" alt="2016-12-09_14h46_23.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/f9f56469-2836-8a6d-8295-fadc4bf70d38.png">

続いて、zabbixサーバの設定となるので任意の管理しやすい名前などをつけます。

<img width="642" alt="2016-12-09_14h46_58.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/08c9f39d-59c3-fb11-3c8f-0fcf3ba315f9.png">

これでセットアップは完了です。

<img width="643" alt="2016-12-09_14h47_13.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/f82c017c-8531-3b06-eff7-2ab5696c1e0f.png">

<img width="644" alt="2016-12-09_14h47_25.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/2049e4bf-b2a4-9a89-7562-cb6ad921551b.png">

## zabbixにログインする

zabbixの初期設定では
Username:Admin
Password:zabbix
となっているのでこれを入力してzabbixにログインしましょう。

<img width="364" alt="スクリーンショット 2017-08-20 3.17.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/c584689f-451b-ea85-5f99-c674c4f5f7bc.png">

以下がログイン後の管理画面です。

<img width="512" alt="2016-12-09_14h48_01-1024x441.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/dab8f600-b5c0-a593-12ff-9b7b51da4304.png">

# SNMP監視環境の構築

ここではzabbixサーバ側とVyOS側のSNMPに関する設定について説明します。

## Zabbixサーバ側

SNMP監視で必要になるパッケージのインストール

```
$ sudo apt-get install snmp snmpd snmp-mibs-downloader
```

ZabbixのWebフロントにアクセスして
[設定]→[ホスト]→[ホストの作成]をクリック

![プレゼンテーション3.jpg](https://qiita-image-store.s3.amazonaws.com/0/161771/3646cad9-9508-c2ab-ef32-648e09169eff.jpeg)

自身の環境に従って、VyOSのzabbixサーバから到達性のあるIPアドレスとSNMPインタフェース用のポートの指定をします。また、ホスト名,グループの作成(強制)も行います。

<img width="1276" alt="スクリーンショット 2017-08-20 3.52.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/e2c75baf-8eba-5765-4c25-58c6373d1334.png">


次に、バーの[テンプレート]をクリックして、SNMPで監視する情報のテンプレートを選択します。VyOSはLinuxベースなので、[選択]から`Template SNMP OS Linux`を選び[追加]していきます。

<img width="1280" alt="スクリーンショット 2017-08-20 3.39.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/d13c3fa4-c9bb-b4a6-30e9-0b74799be7e0.png">

追加が完了後、[追加]ボタンをクリックすればホストの登録が完了です。

<img width="1280" alt="スクリーンショット 2017-08-20 3.40.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/e84d6fda-6f38-c7d6-07de-7119b3869b26.png">

最後にSNMPコミュニティ(zabbixとVyOS間の認証みたいなもの)を
[設定]→[ホスト]→[vyos]→[マクロ]の順にクリックして設定していきます。
コミュニティ名は任意の名前で設定してください。

<img width="1280" alt="スクリーンショット 2017-08-20 3.52.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/887230a7-74d4-ff2b-7c72-31e0287eaad7.png">

zabbix側の設定は以上です。

## VyOS側

VyOSでは、SNMPインターフェースの指定やzabbixのアドレスなどを設定します。

```
# 設定モードに入る
configure

# SNMPコミュニティの名前とzabbixからの権限(今回はread-only)を設定
set service snmp community hogehoge(SNMPコミュニティ名) authorization ro

# SNMPインターフェースの設定(待ち受けIPアドレスとポート番号)
set service snmp listen-address 192.168.1.1 port 161

# zabbixサーバの指定
set service snmp trap-target 192.168.1.10

# 変更のコミットおよび設定保存
commit
save
```

# (おまけ)zabbix-server自身の監視

zabbixでは、zabbix自身の監視をすることも当然ながらできる。
それは、通常のserver同様にzabbix-agentをインストールすることである。

zabbix-agentをインストルーする。

```
$ sudo apt-get install zabbix-agent
```

confファイルを編集する。(デフォルトのままで可)

```
$ sudo vim /etc/zabbix/zabbix_agentd.conf

Server=127.0.0.1
ServerActive=127.0.0.1

(その他、デフォルトのままでOK)
```

zabbix-agentを起動する。

```
$ sudo systemctl enable zabbix-agent.service
$ sudo systemctl start zabbix-agent.service
```

webフロントで確認する。実は、zabbix-serverの監視の設定はデフォルトで入っている。

<img width="1280" alt="スクリーンショット 2017-08-23 16.03.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/5b4c466d-c8ef-45a2-cfc3-eeb0e4a1517d.png">

<img width="1280" alt="スクリーンショット 2017-08-23 16.03.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/c568cbba-8eb3-3623-65b7-09c8050d9c8a.png">

これで、zabbix-server自身の監視情報(CPU,メモリ,インターフェースなど)が見れるようになります。

## おわり

以上までSNMPの設定でした。数分するとVyOSからSNMPの情報が送られて、その情報がzabbixで確認できるようになります。正しくできてる場合は、[設定]→[ホスト]にて作成したホストの`エージェントの状態`が以下のように緑色になります。
<img width="137" alt="スクリーンショット 2017-08-20 4.03.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/161771/01a85926-1940-2ea2-813f-157489c8e917.png">

zabbixの監視テクニックなどは、本記事では触れないので他のサイトを参照してください。