Vyatta/Vyos のコマンドインターフェース
久しぶりにLinuxのネタでも書いてみようかと。
Linux Box を Router として使うのに便利な Vyos (旧 vyatta) で、ちょいと自分たちが調べたい統計を取ろうと思い、いろいろと調べていました。
Vyos の場合、Console や SSH などでログインをすると、LinuxのBashの代わりに
ちょうど監視項目として、vbash 経由で取得できる情報を使って、IPアドレス貸出数を zabbix 経由で取得したかったので、調べてみたのです。
まず
show コマンドはBashのマクロっぽいもので実装されていますね。
次に
この部分からわかったのが、
こんな感じにして、Vyatta/Vyos のコマンドから取得できる値をBashスクリプトにして、Zabbix agent から読み出すようにしてみます。
あとは
引数を取るようになっているので、Zabbix のアイテム設定時のKeyのパラメータに pool名を引数として設定します。
あとはグラフも設定して完了っと。
Linux Box を Router として使うのに便利な Vyos (旧 vyatta) で、ちょいと自分たちが調べたい統計を取ろうと思い、いろいろと調べていました。
Vyos の場合、Console や SSH などでログインをすると、LinuxのBashの代わりに
/bin/vbash
というBashっぽいものが動き、ネットワーク機器に有りがちなコマンドインターフェースが提供されています。 このコマンドインターフェースではルータとしての機能設定や現在の状況を表示することができ、例えばshow dhcp server statistics
といったコマンドを実行すれば、DHCPサーバのIPアドレス貸出数 (number of leased) が表示されます。ちょうど監視項目として、vbash 経由で取得できる情報を使って、IPアドレス貸出数を zabbix 経由で取得したかったので、調べてみたのです。
まず
show
コマンドの実装がどうなっているのか調べてみたところ、こんな感じでした。 $ type show
show is aliased to `_vyatta_op_run show'
$ type _vyatta_op_run | head -5
_vyatta_op_run is a function
_vyatta_op_run ()
{
local -i estat;
local tpath=$vyatta_op_templates;
show コマンドはBashのマクロっぽいもので実装されていますね。
次に
show dhcp server statistics
がどうなっているのか調べるために、Bashの実行オプションを set -x
と変更して、評価されるコマンドを表示して調べてみました。
vyatta@vyatta:~$set -x
+ return 0
++ history -a
vyatta@vyatta:~$show dhcp server statistics
.... 中略 ....
+ eval shopt -s 'extglob;shopt' -u 'nullglob;'
++ shopt -s extglob
++ shopt -u nullglob
+ [[ -t 1 ]]
+ eval '${vyatta_bindir}/sudo-users/vyatta-show-dhcp-server.pl --show-stats'
++ /opt/vyatta/bin/sudo-users/vyatta-show-dhcp-server.pl --show-stats
+ return 0
pool pool size # leased # avail
---- --------- -------- -------
hogehage 200 4 196
++ history -a
この部分からわかったのが、
show dhcp server statistics
というコマンドを実行すると /opt/vyatta/bin/sudo-users/vyatta-show-dhcp-server.pl --show-statsが最後に実行されるということでした。
こんな感じにして、Vyatta/Vyos のコマンドから取得できる値をBashスクリプトにして、Zabbix agent から読み出すようにしてみます。
!/bin/bash
target="$1"
column="$2"
case "$column" in
"poolsize"|1) col=2;;
"leased"|2) col=3;;
"avail"|3) col=4;;
*)
echo "$0 (poolsize|1|leased|2|avail|3)"
exit 255
;;
esac
/opt/vyatta/bin/sudo-users/vyatta-show-dhcp-server.pl --show-stat pool="$target"|grep "^$target" | awk "{print $${col} }"
あとは
/etc/zabbix/zabbix_agentd.d/userparameter_dhcpd.conf
とかいうファイルに、下記内容を書いて sudo service zabbix-agent restart
すればOKです。
UserParameter=service.dhcpd.leased[*],/etc/zabbix/dhcp_server_stat.sh $1 leased
引数を取るようになっているので、Zabbix のアイテム設定時のKeyのパラメータに pool名を引数として設定します。
service.dhcpd.leased[hagehoge]
あとはグラフも設定して完了っと。
コメント
コメントを投稿