KUSONEKOの見る世界

ZabbixでHVTR-BCTX3のUSB HDDの容量を監視する

HVTR-BCTX3は、HTTPアクセスすることで様々な情報を取得することができます。
アクセスするURLは、テレリモなどのアプリの通信をキャプチャすることで確認できます。

取得できる情報は様々ですが、今回はUSB HDDの容量を監視したいと思います。
その他REC-ONシリーズでも同様の方法で監視できるかもしれません。

環境:
CentOS 7.6.1810
Zabbix 3.4
HVTR-BCTX3 1.02.16

HDDの容量取得

値の取得方法

USB HDDの容量取得には以下コマンドで可能です。
http://HVTR-BCTX3のIP/cmd/GetDriveInfo?driveId=512

driveIdは、USB HDDが1台であれば、512になると思います。
driveIdは以下のコマンドで確かめられます。
curl http://HVTR-BCTX3のIP/cmd/GetRegisteredUsbDrives

取得結果の加工

実際に取得してみると、以下のようなJSON形式で取得できます。
[root@server ~]# curl http://*.*.*.*/cmd/GetDriveInfo?driveId=512 -s
{"type": "usb-hdd", "total": 4000648790016, "remain": 2593526906880, "isConnected": true, "isRecordable": true, "remainTime": {"dr": 863661, "af": 1604449, "an": 2406236, "as": 3438547, "al": 4720317, "ae": 10189599, "mr1": 2582930, "mr2": 3438547, "mr3": 5141926, "mr4": 8540285, "mr5": 13575769, "mr6": 22500780}}
この値を加工するために、jqをインストールしました。

jqのインストール方法は単純にyumをするだけです。
[root@server ~]# yum install jq

先ほどのJSON形式の出力をjqに渡します。
そうすると値だけを取り出すことができます。

HDDの総容量は以下で取得できます。
[root@server ~]# curl http://*.*.*.*/cmd/GetDriveInfo?driveId=512 -s | jq '.total'
4000648790016

HDDの残容量は以下で取得できます。
[root@server ~]# curl http://*.*.*.*/cmd/GetDriveInfo?driveId=512 -s | jq '.remain'
2640712826880

残念ながら、HDDの使用量は無いため、あとで計算して出します。

Zabbix

Zabbixでの取得方法

Zabbixで監視するために、定期的に値を取得する必要があります。

アイテムで以下のキーを設定して、取得出来なくもないですが、USB-HDDの起動に時間が掛かり、タイムアウトや取得しても0と出力されることもあります。
system.run[curl http://*.*.*.*/cmd/GetDriveInfo?driveId=512 -s | jq '.total']
他にも、Zabbixの取得頻度が最大1日であり、1日に一回も容量を見る必要は無いと考えていますし、HDDの寿命に影響してしまう懸念もあり、この方法はおすすめしません。

代わりに、cronで定期的にシェルスクリプトを実行させ、値をファイルに出力し、そのファイルをZabbixで定期的に読ませる方法にしました。
cronであれば、週一や月一でも実行ができるため便利です。

シェルスクリプトの作成

シェルスクリプトは詳しくありませんので、おかしい所があるかもしれませんが、以下で動作はしています。
[root@server ~]# vi /etc/cron.weekly/hvtr-bctx3_get_disk_usage.sh
#!/bin/sh
curl http://HVTR-BCTX3のIP/cmd/GetRegisteredUsbDrives -s  > /dev/null
sleep 10

Total=`curl http://HVTR-BCTX3のIP/cmd/GetDriveInfo?driveId=512 -s | jq '.total'`
Remain=`curl http://HVTR-BCTX3のIP/cmd/GetDriveInfo?driveId=512 -s | jq '.remain'`

echo $Total > /var/tmp/HVTR-BCTX3_hdd_total
echo $Remain > /var/tmp/HVTR-BCTX3_hdd_remain
echo `expr $Total - $Remain` > /var/tmp/HVTR-BCTX3_hdd_used
[root@server ~]# chmod 700 /etc/cron.weekly/hvtr-bctx3_get_disk_usage.sh
最初のアクセスはダミーで、USB-HDDを起動させ、値が取得できるまで次の行で10秒待ちます。
その後、総容量と残容量を取得し、ファイルに書き出しています。
最後に総容量 - 残容量で使用量を計算し、ファイルに書き出しています。

Zabbixで設定

アイテムの作成(総容量)

[設定]→[ホスト]→[Zabbix server]→[アイテム]
[アイテムの作成]を押下。

名前:任意
タイプ:Zabbixエージェント
キー:vfs.file.contents[/var/tmp/HVTR-BCTX3_hdd_total]
データ型:数値 (整数)
単位:B
更新間隔:1d

[追加]を押下。

アイテムの作成(使用量)

[アイテムの作成]を押下。

名前:任意
タイプ:Zabbixエージェント
キー:vfs.file.contents[/var/tmp/HVTR-BCTX3_hdd_used]
データ型:数値 (整数)
単位:B
更新間隔:1d

[追加]を押下。

グラフの作成

[設定]→[ホスト]→[Zabbix server]→[グラフ]
[グラフの作成]を押下。

名前:任意
アイテム:総容量と使用量を追加する。
    [追加]を押下。
    アイテムで作成した名前を選択。
    グラフの形式:面

[追加]を押下。

グラフが作成できました。
これをスクリーンに追加するなどして、監視しましょう。

これで容量が少なくなり、自動で番組が消されたり、録画の失敗が起こる前に気づくことができるでしょう。
また、今回は容量を監視しましたが、各録画モード毎の録画可能時間の監視もできます。
こちらの監視も面白いかもしれません。

追記 2019/10/10

CentOS 8 + Zabbix4.0環境でも出来ました。
ただしjqのインストールは、CentOS 8では以下のコマンドです。
dnf install jq