録画鯖のメンテナンス

弊宅では地上波の録画のため録画鯖を運用してます。そのメンテナンス備忘録です

録画鯖として Proxmox 上に Ubuntu 22.04 を構築し PVE に USB カードリーダー, RTX2060 Super をパススルーで VM から使えるようにして構築しています。

録画用 Disk は さすがに Cpeh に置けないので Proxmox に 4TB のあまり物を設置し direct attach するという脳筋で対応してます。(今のところ不具合なし)

使用機材

KeyValue
CPUIntel Core i7-8700 3.20GHz (C6/12T)
Memory32GB PC4-19200 (16GBx2)
GPUELSA GeForce RTX 2060 Super S.A.C
Disk OSINTEL SSDPEKKW512G8
Disk RECHGST HDS724040ALE640
USB Card ReaderSCR3310/v2.0
TunnerDigital Devices Max M4

メンテナンスで解消したい点

弊宅の録画鯖は NVEnc で高速エンコードすることで 1時間分の録画が 6GB -> 716MB と生データの 11% で保存できるようにしている。 これには FFmpeg の NVEnc で HEVC(H.265) でハードウェアエンコードすることで実現しているが Mirakurun, EPGStation の環境を Docker で構築していることもあり EPGStation のコンテナ内から NVEnc にアクセスできなくなることがしばしばある。これを解消したい。

実際には事象が発生した時に EPGStation のコンテナを stop, start すれば回復する所を見るに Ubuntu に組み込まれてる Package update で runtime のシンボリックリンクが切れてアクセスできなくなっているのではないかと思うが、頻度を観測できてないため監視を組む所を目標にする。

監視の方法

ここは弊宅は一般家庭のため Zabbix を愛用している(一部 New Relic)のでこれで監視できれば宅内 MGMT には Zabbix-proxy がいるので クラウド<->宅内 の接続が切れても安心である。

Zabbix agent2 にはテンプレートが用意されているようで docker compose の Health を拾えそうなためこれを利用する。

docker compose には下記を追加
healthcheck.test の箇所は nvidia-smi を実行した時に表示される id を指定して Docker に mount されている GPU を確認するように変更しているので各自環境に合わせてほしい。

docker-compose.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
version: '3.7'
services:

  # ...(snip)...
  epgstation:

    # ...(snip)...
    healthcheck:
      test:
        - "CMD-SHELL"
        - "nvidia-smi --id=0"
      start_period: "30s" # 立ち上がるのに、30秒かかりそう
      retries: 3 #          3回ぐらい失敗応答したら許さない
      timeout: "5s" #       応答が5秒以上かかっても許さない
      interval: "60s" #     ヘルスチェックは1分に1度ぐらいに押さえておきたい

Zabbix ユーザーで Docker.sock が操作できないとだめなので適宣 zabbix ユーザーを docker グループに追加する sudo usermod -aG docker $USER
これで、Healthcheck が落ちると Zabbix で検知できるのでタイミングを見て再起動すれば良い

Built with Hugo
テーマ StackJimmy によって設計されています。