ZabbixでOpenVZやDTI VPSのネットワーク流量をモニタするには 2016年02月19日

The Nic Master

最近はちょこちょことzabbixをいじったりしています。設定に慣れてちゃんと自分のみたい情報をモニタできるようになるとやっぱりいろいろとソフトウェアの動作、ネットワークパフォーマンスに関して理解が深まりますな。

ちなみに仮想化のプラットフォームであるOpenVZや、クラウドサービスであるDTIのVPSを見てみるとゲストOSのインタフェース名が venet0:0 などになっていてこのネットワークインタフェースのトラフィック量をモニタしようとしてもうまく設定できない。ステータスが取得不可になる。

zabbixでのネットワークインタフェースごとのトラフィック量のモニタはzabbixの監視アイテムでキーに

net.if.in[eth0,bytes]

というようにifconfigで確認できるインタフェース名を記載すれば見れるものだと思っていた。が、OpenVZやDTIのVPSだと上にならってvenet0:0という風に指定してもステータス取得不可でエラーが出っぱなし。

net.if.inの監視についてですが、Linuxの場合、/proc/net/dev の中身から監視結果を導きだしています。
そのため、/proc/net/dev に表示されるデバイス名を引数として正しく設定する必要があるかと思います。
私の手元の環境では、/proc/net/dev の中身は以下のようになっています。

> $ cat /proc/net/dev
> Inter-| Receive | Transmit
> face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
> lo: 562150 6216 0 0 0 0 0 0 562150 6216 0 0 0 0 0 0
> virbr0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> eth0: 207641941 677398 0 0 0 0 0 0 40044342 293802 0 0 0 0 0 0

この場合だと、lo、virbr0、eth0の3つのデバイスの監視が実施できることになります。
一度、この/proc/net/devをご確認いただけますでしょうか。

net.if.in のインターフェース名について | ZABBIX-JP から

調べていくと結局こういうことだった。zabbixのNIC監視のIF名指定フォーマットは、/proc/net/dev に記載されてるインタフェース名が基本になる模様。なのでここに記載されているIF名しか監視できない。

DTIのVPSでは初期設定で割り振られているIPも後から追加するIPも全部 venet0:0 やら venet0:1 やら仮想IPのようなフォーマットで表示されるが、上記の /proc/net/dev の中では venet0 でひとまとめにして記述されている。だから多分これらの複数NICをまとめて一括でモニタするしかできない模様。個人的には全体量が見れればよかったのでいいんだが、人によっては結構文句が出そう。。。

一応自分の備忘録も兼ねて記載しておきます。。。

zabbix サーバー&エージェントインストール 2015年10月09日

My Day

久々に必要があってZabbixというLinuxベースのオープンソースのサーバーモニタリングツールであるzabbixをサーバーとエージェント両方のモジュールをインストール。

Zabbix – Wikipedia
↑ 後述するが、ある1台のマシンのCPU使用率、メモリ使用率、HDD使用率を見るくらいならSNMPとかでエージェントレスでも見れた模様。。。

v1.8.1を入れましたがインストール手順はだいたい以下で。

Zabbixのインストール(RPM編) | ZABBIX-JP

エージェントのインストールは至極簡単ですが、サーバー側のインストールが難しくはないものの、PHPやApache、DBとして使用するMySQLなどを別途手作業でインストールする必要があり、そちらの初期設定などZabbixのパッケージインストールとは別物なので少々時間がかかってめんどくさい。

Linuxのアプリケーションでも商用のものだとアプリケーションとともにだいたいDBが同時にインストールされて・・・なんてお手軽に作ってくれているものだから、たまにこういうオープンソースでインストールに手間のかかるものにあたると手間取る。

Zabbixのサーバー、エージェント、MySQLのインストール

yum install zabbix zabbix-agent zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql
yum install mysql-server

から /etc/my.cnf の編集、DBサーバーの起動、zabbix用DBの作成、zabbix用DBユーザーの作成、スキーマのインポート などなど。ずーっとzabbix用DBユーザーの作成の権限設定でエラーが出続けるので結構迷ったが単純にprivilegesの綴を間違えて頂けでガックリ。。。zabbixサーバーのユーザーインタフェースになるHTTPサーバーはzabbixサーバーとともにインストールされているので( ← たぶん)そのまま http://own_zabbix_server_IP_Addr/zabbix を開く。そしたら今度はPHPの設定チェックが走り、エラーがある場合、php.iniファイルをviなどで手作業で直します。php.iniファイルを編集した後にはhttpdの再起動が必須。なのでhttpdの上で動いているウェブコンソールはチェックだけで修正までカバーしてくれてません。。。

ウェブコンソールの初期設定をすべて終わらせたら再度 /etc/zabbix/zabbix_server.conf でzabbixサーバーの設定。でもこれはウェブコンソールで設定した接続先DBの情報を手作業でconfファイルに書いてあげるぐらいの作業。

エージェントのほうは接続先のIPアドレスとサーバーのホスト名などを /etc/zabbix/zabbix_agentd.conf に書いてあげるだけなので結構簡単。

これで基本的にはzabbixサーバー、エージェントともに立ち上がります。さらに今度はウェブコンソール側で再度監視対象としてzabbixエージェントのホストを登録して、どういった項目を監視するかを登録する必要があってsquidのプロキシサーバーを1台モニタさせようと思っただけなんだけどかなり時間がかかった。とりあえず簡単にSquid入れてるサーバーのCPU使用率とかメモリ使用量、ディスクの使用量を見たかったのでLinuxのモニタテンプレートを当てて設定完了。

最後はchkconfigで各サービスがサーバーの起動時に立ち上がるように設定されているかを確認しておくことですな。

後はSquidのログ解析ツールを入れて終了というところですがこれはまだ未完。