運用する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になると思います

こんな画面になるので、右下の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

このようにエラーがなくなればOKです。
次に行くと、DBの設定になるので前項で設定した内容に基づきDB情報を入力します。

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

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


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

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

SNMP監視環境の構築
ここではzabbixサーバ側とVyOS側のSNMPに関する設定について説明します。
Zabbixサーバ側
SNMP監視で必要になるパッケージのインストール
$ sudo apt-get install snmp snmpd snmp-mibs-downloader
ZabbixのWebフロントにアクセスして
[設定]→[ホスト]→[ホストの作成]をクリック
自身の環境に従って、VyOSのzabbixサーバから到達性のあるIPアドレスとSNMPインタフェース用のポートの指定をします。また、ホスト名,グループの作成(強制)も行います。

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

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

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

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の監視の設定はデフォルトで入っている。


これで、zabbix-server自身の監視情報(CPU,メモリ,インターフェースなど)が見れるようになります。
おわり
以上までSNMPの設定でした。数分するとVyOSからSNMPの情報が送られて、その情報がzabbixで確認できるようになります。正しくできてる場合は、[設定]→[ホスト]にて作成したホストのエージェントの状態
が以下のように緑色になります。
zabbixの監視テクニックなどは、本記事では触れないので他のサイトを参照してください。