RTX1200をLua拡張してサーバ死活監視とネットワークリソースの可視化

09.16.16 補足

「その2」を書いたのでこっちも読んでください.重要な内容です.
RTX1200でネットワークリソースの可視化(その2) - Mi’s blog
GitHub - mi2428/rtx1200-network-visualization

RTX1200を警子ちゃんにする

vboxでホストしている内部DNSサーバとRADIUSサーバの死活監視がしたくなった. RTX1200はLuaで機能を拡張でき,しかも内部ブザーのディスクリプタも用意されているので,これらを利用し警子ちゃんを作ってみる.

InfluxDBを準備

Ping応答の有無をInfluxDBに送信していく. 時系列データベースだからメトリクス監視と相性がいい. ただまだ開発中ということもあり,APIの仕様が頻繁に変わるので注意が必要.

influxdb:
    image: influxdb:1.0.0-beta2-alpine
    container_name: influxdb
    ports:
        - "8183:8083"
        - "8186:8086"
    volumes:
        - $PWD/influxdb:/var/lib/influxdb
        - $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro

influxdb - DockerHub

Grafanaを準備

死活状態の可視化を行う. ELKでおなじみのKibana,ではなくGrafanaを採用(特に深い理由はない).

grafana:
    image: grafana/grafana:3.1.0-beta1
    container_name: grafana
    ports:
        - "3000:3000"
    environment:
        - GF_SERVER_ROOT_URL=http://127.0.0.1
        - GF_SECURITY_ADMIN_PASSWORD=grafana

grafana/grafana - DockerHub

Luaスクリプトの準備

こんな感じになった.

Luaスクリプト機能
Luaスクリプト機能(ライブラリ関数一覧)
Lua向けヤマハルーター専用API
複数のホストを監視する

テスト

ホストが死ぬと,

% sudo ip addr del 192.168.10.111/24 dev ens9

10秒間「シ〜(B3)♪ シ〜(B4)♪ シ〜(B2)♪」というメロディーが流れる. 同時にsyslogにも事象が記録される. ホストが復帰すると,

% sudo ip addr add 192.168.10.111/24 dev ens9

メロディーも止む. Grafanaはこんな感じ.

RTX1200でネットワークリソースを可視化する

さっきの続き.

環境

vboxゲストで導入したArchLinx上にnspawnコンテナを作成し,その中にいろいろ詰め込んでいく.

% pacman -Qi grafana influxdb
Name            : grafana
Version         : 3.0.4-1
Description     : Gorgeous metric viz, dashboards & editors for Graphite, InfluxDB & OpenTSDB
Architecture    : x86_64
URL             : http://grafana.org
Licenses        : Apache
Groups          : None
Provides        : None
Depends On      : glibc
Optional Deps   : None
Required By     : None
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 82.72 MiB
Packager        : Sébastien Luttringer <seblu@seblu.net>
Build Date      : Fri 27 May 2016 06:32:15 AM JST
Install Date    : Thu 30 Jun 2016 09:24:49 PM JST
Install Reason  : Explicitly installed
Install Script  : Yes
Validated By    : Signature

Name            : influxdb
Version         : 0.13.0-1
Description     : Scalable datastore for metrics, events, and real-time analytics
Architecture    : x86_64
URL             : http://influxdb.org/
Licenses        : MIT
Groups          : None
Provides        : influxdb
Depends On      : None
Optional Deps   : None
Required By     : None
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 28.30 MiB
Packager        : Unknown Packager
Build Date      : Thu 30 Jun 2016 09:26:30 PM JST
Install Date    : Thu 30 Jun 2016 09:26:50 PM JST
Install Reason  : Explicitly installed
Install Script  : Yes
Validated By    : None

Luaスクリプトの準備

envmon.lua

CPU使用率,メモリ使用率,パケットバッファ使用率,筐体内温度をInfluxDBに送信するLuaスクリプト.

natdhcpmon.lua

IPマスカレードテーブルエントリ数,DHCPリース状況をInfluxDBに送信するLuaスクリプト. グローバルIPアドレスを抜き出す部分はコメントアウトしてある(今度使うかもしれない).

trafficmon.lua

PPインターフェイス,LANインターフェイスの送受信負荷率と帯域をInfluxDBに送信するLuaスクリプト. RTX1200のファームウェアRev.10.01.65 (Tue Oct 13 12:23:48 2015)ではoctetsoctetに縮んだりするので注意.