UserParameterで変数が2つ有る場合の処理に関して
お世話になっております。
Zabbix 5.4.3.
監視対象 CentOS7
監視対象のホストからpingを外部に打って応答速度を監視したく、以下の様なUserParameterを作成しました。
UserParameter=remote.ping.time[*],/usr/bin/ping -c 1 -w 1 $1 | grep from | awk '{ print $7 }' | cut -c 6-
ターミナルからスクリプト部分を実行すると正常に動作します。
$ /usr/bin/ping -c 1 -w 1 8.8.8.8 | grep from | awk '{ print $7 }' | cut -c 6-
3.39
しかしzabbix_getから確認すると以下の様に出力されてしまいます。
$ sudo zabbix_get -s 127.0.0.1 -k remote.ping.time[8.8.8.8]
tes from 8.8.8.8: icmp_seq=1 ttl=116 time=3.75 ms
$1と$7が有る事でawkが機能していない様にも見えるのですが。
アドバイス頂けるでしょうか。
どうぞよろしくお願いします。
TNK - 投稿数: 4729
アイテムキーの引数を使用する場合、$1や$2やアイテムキーのは引
数を示すので、awkの引数で指定する引数は、$$7というように$$を
使う必要があったと思います。
MSG - 投稿数: 59
ありがとうございます。
マニュアルにも記載が有りました。
https://www.zabbix.com/documentation/2.2/jp/manual/config/items/userpara...
位置基準を変更せずに使用するには、awk '{print $$2}'というように、ドル記号を入れてください。
この場合、実際には$$2はコマンドを実行した時に$2に変わります。