アイテムの取得データ型文字列から数字だけを取り出して数値(整数)で登録したい

教えてください。
スイッチからsnmpで温度を取得するアイテムを登録したのですが
値が「 30 C/86 F 」のような文字列でしか取得できませんでした。
エクセルなどで使うような関数的なもので数値として登録する方法が
ございましたらご指導ください。
よろしくお願いします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー KAZ の写真

midさん

Zabbixが取得した情報を加工するのは難しいような…
数値を取得するシェルを作ってUserParameterに設定するのが良いかと。

シェルはsnmpgetかsnmpwalkで値取得して、awkやcutで数値だけ切り取ってやればよいかと。
※:awkやcutじゃなくてphpやpythonで作っても良いです。

KAZさん
アドバイスありがとうございます。
なるほど、取得する前に加工すればよかった訳ですね。
手が空いたら作ってみようと思います。
ありがとうございました。

ユーザー fripper の写真

少し無理矢理な方法なのですが‥

本来のアイテムに加えて、別のアイテムを、1つ追加で定義し、
API の history.get 等で、過去の収集結果値を取得して、
改変後の値を、別アイテム側へ、再登録する、という方法が可能かもしれません

・オリジナルのデータ取得用アイテム
  ・種類:Zabbix エージェント / エージェント(アクティブ) / snmp / ipmi 等
  ・データ型:文字列
・改変・編集後のアイテム値を保存するためのアイテム
  ・種類:Zabbix トラッパー
  ・データ型:数値(整数)

サーバ上もしくはAPIで叩ける近隣サーバで、APIを利用したプログラムを書かなければいけませんが‥

1.API でオリジナル側アイテムのヒストリ値を取得
2.プログラム内でアイテム値を加工
    今回の事例だと、正規表現で数値部分のみを切り出し、等
3.加工したアイテム値とヒストリから得た時刻情報を基にして、
  zabbix_sender 等を使って、「トラッパー」側のアイテムへ、値を登録

などとすれば、数値型のアイテムへ加工データを放り込めるので、
グラフで値の推移等も見られるようになるんじゃないかと思います

オリジナルのアイテム側のヒストリ値が消えて(HouseKeeper等で)しまわないうちに、
加工スクリプトで拾ってきて、再登録‥みたいになるので、サーバ上では、実質データを二重持ちすることに
なってしまいますが‥