一つのコマンドで複数のアイテム取得は可能でしょうか
zabbix3.4を利用しています。
監視対象のLinuxマシン上で、iostat等を実行し、その値を取得したいのですが、例えばiostatの場合存在するディスク分の tps kB_read/s kB_wrtn/s kB_read kB_wrtn等の項目が
コマンド実行時に取得出来ます。
これらをgrepなりawkなりで必要なディスクの特定項目を抜き出して取得するように、ディスカバリなどで設定してやれば良い、と考えていたのですが、その場合
ディスク*項目数分コマンドが実行されることになり、非常に非効率のように思われます。
一度に複数個のアイテムの値を取得する、と言うような事はやはりできないのでしょうか。
今のところ、iostatであれば監視するサーバ自体にcronかなにかで定期取得させ、zabbix側からはzabbix側からは単純に取得するのみ、とするのがベターかなと考えています。
テンプレートなどでディスカバリとして設定するだけで完結できれば楽ではあるのですが、調べてみてもそのような手法が見当たりませんでした。
同じような事をされている方いらっしゃればアドバイスをいただけないでしょうか。
よろしくお願いいたします。
TNK - 投稿数: 4671
Zabbix 3.4とのことですので、依存アイテムで対応できると思いま
す。
ディスクの増減にも対応するとなるとそれなりにLLD対応のスクリ
プトを作成しないと対応できなさそうですが、固定のディスク数と
名前でよければ、iostatの呼び出しは1回で、その結果から値を切
り出すことができるでしょう。
親アイテムとしてiostatの結果を取得して、依存アイテムとして、
各ディスクの値を保存前処理の正規表現を利用して取り出せるので
はないでしょうか。
サンプル:sdaの行から各値を取り出すための正規表現
sda\s*([0-9]+.[0-9]*)\s*([0-9]+.[0-9]*)\s*([0-9]+.[0-9]*)\s*([0-9]*)\s*([0-9]*)
yas - 投稿数: 43
ありがとうございます、3.4でその機能が追加になっていることに気がついていませんでした。
おっしゃられるように固定のディスクならどうにかなりそうです。
なるたけテンプレートとディスカバリで自動化できればと思っているのですが、正規表現で取れそうに無ければ監視ホスト側でuserparameterなどを利用して、json化して親アイテムに
投げてやる、と言う手法になるかなと考えています。
正規表現部分にディスカバリから取得したディスク名をマクロで割り当て、ができればと思ったのですが、正規表現ないでのマクロは未対応のようなので、色々と考えてみます。