OpenWRT21.0xをZabbix5.4の監視対象とする

OpenWRT本体にもステータス表示画面があり、リアルタイムグラフ機能等があるのですが、時系列でデータを追いたい為、Zabbixの監視対象にOpenWRTを含めることにしました。そのセットアップの備忘をご紹介します。

時系列でデータを取ることで、下記のようなメリットがあると思います。

  • OpenWRTルータの負荷状態を知ることで、「買い替えの要否」の判断材料に出来る
  • 一定期間のWAN側、LAN側通信量を把握しておくことで、異常な通信量UP/DOWN時に気付ける為、万が一外部から不正アクセスされ、ずっとデータを外部へ送ってしまうようなことになった場合に気付くネタとなる
  • WAN側回線使用率を抑えることで、プロバイダ乗り換え時期の検討材料とできる
  • 異常発生時に検知できる(Zabbixの設定で連絡する設定を入れる必要あり)

OpenWRTへのZabbix Agentoのインストール

システム>ソフトウェアより、下記の4つをインストールします。検索窓にzabbixと入れると良いです。リストが出ない場合には、Update listsをしてから対応してください。

  • zabbix-agentd
  • zabbix-extra-mac80211
  • zabbix-extra-network
  • zabbix-extra-wifi

最初は、上記だけで良いと思っていたのですが、実はコマンドラインからzabbix_agentd.confを編集する必要がありました。(昔、GUIから特定ファイルの編集が出来たような記憶があるのですが、見当たらなかったのでSSHで接続します)

SSHでOpenWRTへrootユーザーでログインします。パスワードはGUIにログインする際のAdminのパスワードです。

vi /etc/zabbix_agentd.conf

zabbix_agentd.confは以下のように編集します。

# 下記の2項目は、ZabbixServerのIPを指定します。
Server=10.1.0.100
ServerActive=10.1.0.100

# 下記は指定しなくてもOKです。OpenWRTのシステム設定にあるホスト名設定値がデフォルト値になります。
# Hostname=OpenWRT_Elecom

# zabbix agentはインストール直後は0.0.0.0:10050で起動してしまうので、
# zabbixサーバが接続してくるインターフェースでのみListenするようにします
ListenIP=10.1.0.1

上記設定が完了したら、OpenWRT上のzabbix agentdを再起動します。

# zabbix agentd 再起動
/etc/init.d/zabbix_agentd  restart

ステータス>システムログを確認し、zabbix agentdが正常に起動していれば問題ありません。

daemon.warn zabbix_agentd[10031]: Got signal [signal:15(SIGTERM),sender_pid:1,sender_uid:0,reason:0]. Exiting ...
daemon.info zabbix_agentd[10031]: Zabbix Agent stopped. Zabbix 5.0.7 (revision 1b3db7f980).
daemon.info zabbix_agentd[10946]: Starting Zabbix Agent [OpenWRT_Elecom]. Zabbix 5.0.7 (revision 1b3db7f980).
daemon.info zabbix_agentd[10946]: Starting Zabbix Agent [OpenWRT_Elecom]. Zabbix 5.0.7 (revision 1b3db7f980).
daemon.info zabbix_agentd[10946]: Press Ctrl+C to exit.
daemon.info zabbix_agentd[10946]: **** Enabled features ****
daemon.info zabbix_agentd[10946]:
daemon.info zabbix_agentd[10946]: IPv6 support:          YES
daemon.info zabbix_agentd[10946]: TLS support:            NO
daemon.info zabbix_agentd[10946]: **************************
daemon.info zabbix_agentd[10946]: using configuration file: /etc/zabbix_agentd.conf
daemon.info zabbix_agentd[10946]: agent #0 started [main process]
daemon.info zabbix_agentd[10948]: agent #1 started [collector]
daemon.info zabbix_agentd[10949]: agent #2 started [listener #1]
daemon.info zabbix_agentd[10950]: agent #3 started [active checks #1]


# いくらかサポートしていない機能についてwarningが出ますが、こちらは一旦無視します。
daemon.warn zabbix_agentd[10950]: active check "owrt.apackages" is not supported: Unsupported item key.
daemon.warn zabbix_agentd[10950]: active check "owrt.boxid" is not supported: Unsupported item key.
daemon.warn zabbix_agentd[10950]: active check "owrt.ipackages" is not supported: Unsupported item key.
daemon.warn zabbix_agentd[10950]: active check "owrt.klogcnt[Modules linked in]" is not supported: Unsupported item key.
daemon.warn zabbix_agentd[10950]: active check "owrt.klogcnt[invoked oom-killer]" is not supported: Unsupported item key.
daemon.warn zabbix_agentd[10950]: active check "owrt.logcnt[RADIUS No authentication server configured]" is not supported: Unsupported item key.
daemon.warn zabbix_agentd[10950]: active check "wifi.channel.discovery" is not supported: Unsupported item key.
daemon.warn zabbix_agentd[10950]: active check "wifi.clients.discovery" is not supported: Unsupported item key.
daemon.warn zabbix_agentd[10950]: active check "wifi.if.discovery" is not supported: Unsupported item key.
daemon.warn zabbix_agentd[10950]: active check "wifi.neigh.discovery" is not supported: Unsupported item key.

zabbix_agentd.conf 編集後は、コミットのような指示をする必要があると思っていたのですが、再起動後も zabbix_agentd.conf の内容がそのままだったため、問題無いようでした。

ファイアウォールの設定

LAN側は全く制限をかけていない場合には無視してください。私の場合にはLAN側も許可した通信しか出来ない為、Zabbix Agent<>Zabbix Server間でやり取りする為の穴あけをしました。

通信元通信先通信元ポート通信先ポートアクション
OpenWRTZabbix Server10051Accept
Zabbix ServerOpenWRT10050Accept

Zabbix5.4のインストール

Zabbixのオフィシャルサイトを参考にZabbix5.4をインストールします。当方はUbuntu20.04で、ほぼオフィシャルサイトの通りインストールしているのですが、その際のコマンドを下記に記します。

一旦、DBパスワードは「cni9c8dcsA__sdfDCa_cdsa」としていますが、適当に置き換えてください。

# 事前アップデート
apt update ; apt upgrade

# Zabbix パッケージのインストール
cd /tmp

# ダウンロードするパッケージが最新か否かは、Zabbixオフィシャルサイトよりご確認ください。
wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu20.04_all.deb
sudo dpkg -i zabbix-release_5.4-1+ubuntu20.04_all.deb
sudo apt update 
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent 

# MySQLでのDB、ユーザー作成とACL設定
sudo mysql 
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by 'cni9c8dcsA__sdfDCa_cdsa';
grant all privileges on zabbix.* to zabbix@localhost;
quit; 

# DBデータの流し込み(30分程度かかりました)
cd /tmp
cp /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz ./
sudo mysql zabbix < ./create.sql

# 設定ファイル編集。
sudo vi /etc/zabbix/zabbix_server.conf 

# ※DBPassword=cni9c8dcsA__sdfDCa_cdsa
#   を更新して保存

# 関係パッケージの再起動
sudo systemctl restart zabbix-server zabbix-agent apache2

# 自動起動するように設定。MySQLやApacheが自動起動でなければ合わせてここで設定します。
sudo systemctl enable zabbix-server zabbix-agent 

上記でインストールを完了させたのち、サーバ「http://<サーバIP>/zabbix」へアクセスして、zabbixの設定を完了させてください。

Default Languageの選択肢で日本語を選べれば日本語を選んでください。選べない場合には下記設定をすることで、日本語を指定可能となります。(後で「ユーザー設定>プロフィール」から Default Language を訂正可能なので、このままセットアップを進めてしまって問題ありません)

Zabbixで日本語文字コードが選べない場合に実行するコマンド

sudo localedef -f UTF-8 -i ja_JP ja_JP

次に、サーバ上の各種設定のチェックが走ります。NGとなった個所があれば、その個所を修正した上で再チェックしてください。

次に、ZabbixがDBに接続するための情報をしています。当方が記載した手順通りの場合はパスワードに 「cni9c8dcsA__sdfDCa_cdsa」 を指定することになります。変更している場合にはそのパスワードを指定してください。

Zabbixサーバのホスト、ポート番号を指定します。セットアップ後に変更しても

Default time zoneに、Asia/Tokyoを選択してください。

問題なければNext Stepを押します。

下記のように、インストール成功画面が出たら、まずはZabbixのインストールは完了です。

ZabbixがOpenWRTを監視できるようにする

オフィシャルサイトにて、Zabbixテンプレートの紹介があったのですが、対応するZabbixバージョンが古いのかインポートできませんでした(エラーメッセージに従って項目追加して再度インポート⇒エラー⇒再度対策を1時間程度繰り返したのですが、中々上手くいきませんでした)。そこで各所で公開してくださっているテンプレートを片っ端から試してみたところ、こちらのテンプレートが利用可能でした。

ZabbixへOpenWRTのテンプレートを登録する

こちらより「zabbix_owrt_template.xml」をダウンロードし、それをZabbixの設定>テンプレート画面右上のインポートボタンから登録します。

インポートするファイルに、ダウンロードした「 zabbix_owrt_template.xml 」を選択してインポートします。

設定>ホストグループから「Templates/OpenWRT」を作成します。

次いで、 「Templates/OpenWRT」 にインポートしたOpenWRT用のテンプレートを括り付けておきます。

ZabbixにOpenWRTルータを登録する

OpenWRTを登録しますので、設定>ホストからホストの作成をクリックします。

当方は、OpenWRTのIPは10.1.0.1なので、その指定をして、ホスト名には「OpenWRT上設定しているホスト名」を指定しています。赤字としている箇所は大事で、指定しているホスト名がDNSで解決できないと、OpenWRTエージェント側で下記のエラーが出ました。

OpenWrt zabbix_agentd[2907]: no active checks on server [10.1.0.100:10051]: host [OpenWRT_Elecom] not found

次に、テンプレートタブで、下記パッケージを指定します。

Zabbix agent/Zabbix agent activeは、「Templates/Modules」の下にあります。

OpenWRT用のテンプレートは、先ほどインポートしたテンプレートとなります。手順通りにしていれば、Templates/OpenWRTの下にあると思います。

ZabbixにOpenWRTが登録されたことの確認

監視データ>ホスト画面を開き、OpenWRTルータが登録されていることを確認します。エージェントの状態が「不明」の場合、少し待ってみてください。ずっと不明だった場合には、設定ミスの可能性が高いです。

解析データや障害、グラフが見れるので、確認してみてください。データがたまってから見た方が面白い為、30分程度放置してからの方が、グラフの描画されていると思います。

ちなみに、私の環境はVLANを導入している為、VLAN毎に下記のようにグラフ描画されていました。

(VLAN1の流入が多いのは、VLAN4の監視カメラデータをVLAN1上のサーバへ常時送っている為です)

微調整:取得できない項目は無効にする

少し動かしてみると、ZabbixServerのテンプレートに定義されているが、Zabbix Agent側にその項目が無くて取得できない項目がOpenWRT側のログに「~~~の値はサポートしていないので取れません」と出ます。Zabbixがデータを取ろうとアクセスするたびにメッセージに出力される為、結構邪魔なメッセージです。

環境によるのかもしれませんので、対象の確認方法と無効化方法をご紹介させていただきます(試行錯誤した結果をまとめたものなので、対処方法等間違っていたらコメントいただければ幸甚です)。

メッセージの例

zabbix_agentd[2913]: active check "owrt.apackages" is not supported: Unsupported item key.
zabbix_agentd[2913]: active check "owrt.boxid" is not supported: Unsupported item key.
zabbix_agentd[2913]: active check "owrt.ipackages" is not supported: Unsupported item key.
zabbix_agentd[2913]: active check "wifi.channel.discovery" is not supported: Unsupported item key.
zabbix_agentd[2913]: active check "wifi.clients.discovery" is not supported: Unsupported item key.
zabbix_agentd[2913]: active check "wifi.if.discovery" is not supported: Unsupported item key.
zabbix_agentd[2913]: active check "wifi.neigh.discovery" is not supported: Unsupported item key.
zabbix_agentd[2913]: active check "owrt.klogcnt[Modules linked in]" is not supported: Unsupported item key.
zabbix_agentd[2913]: active check "owrt.klogcnt[invoked oom-killer]" is not supported: Unsupported item key.
zabbix_agentd[2913]: active check "owrt.logcnt[RADIUS No authentication server configured]" is not supported: Unsupported item key.

Zabbix Server側で対応する項目の見つけ方

メッセージ中のダブルクォーテーションで囲まれた「owrt.apackages」のキーワードで、ダウンロード、インポートしたテンプレートのXMLファイルを検索すると、下記のような感じでZabbix Server上の設定値名が分かります。

                <name>Available packages</name>
                <type>7</type>
                <snmp_community/>
                <multiplier>0</multiplier>
                <snmp_oid/>
                <key>owrt.apackages</key>

Zabbix Server側で対応する項目の無効化方法

設定>テンプレート>Template Openwrtから、アイテム、グラフを開き、その中にある該当項目を無効化します。

トラブルシューティング

今回、OpenWRTにzabbixのパッケージがあったので、導入すればすぐにZabbix Serverからデータが取れるものとばかり思っていたのですが、結構躓き、ログを確認して対処を繰り返しました。その時のナレッジを共有致します。

問題原因対処
no active checks on server [10.1.0.100:10051]: host [OpenWRT_Elecom] not foundのエラーメッセージが出るZabbix Agentのホスト名指定が間違っているため、Zabbix Agentが正常に起動していませんzabbix_agentd.confを修正します。特にホスト名で指定しているOpenWRTホスト名とそのIPは、Zabbix Server側の設定、Zabbix Agent間で統一させてください。
何時までたってもエージェントの状態が不明のままOpenWRTのテンプレートだけ指定した場合に発生しました。Zabbix Agentのテンプレートも併せて指定します。
同上OpenWRT、ないしはZabbix Server側のiptables設定が間違っているZabbixが使用しているポートを許可します。切り分けの為であれば、OpenWRT<>Zabbix Server間は一旦フルオープンにして切り分けるのも有効かと思います。

他に問題点があればコメントからご連絡いただければ、出来る範囲でご回答させて頂きます。

タグ , . ブックマークする パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください