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

こんな画面になるので、右下の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の監視テクニックなどは、本記事では触れないので他のサイトを参照してください。