質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

2回答

8369閲覧

Zabbixにて自動でアイテムの追加・削除、そのアイテムのトリガーの値を設定する

GotHokLin

総合スコア34

0グッド

0クリップ

投稿2018/03/07 02:31

前提・実現したいこと

Zabbixにて、以下のような監視を行いたいと考えています。

  • 1台のサーバ内にある、特定ディレクトリ毎のディスク容量の使用量の増減を監視したい

例:
/var/data/1/
/var/data/2/
/var/data/.../

  • 上記例での1, 2, ...のディレクトリそのものが増減する
  • ディレクトリごと、Zabbix上ではアイテムとして分けたい
  • ディレクトリ自体が増減するので、例えば上記例での「/var/data/2/」がなくなった場合は、Zabbix上からそのアイテムを削除したい
  • ディレクトリごと(=Zabbix上でのアイテムごと)、トリガーになるしきい値(今回は使用量)が異なる
  • トリガーにしたいしきい値も運用上変動するため、そのアイテムのトリガーの値も都度自動で追従させたい
  • ディレクトリごとの使用量はduコマンドで、またそのディレクトリに対するしきい値については別のコマンドで取得できている
  • ディレクトリ容量を監視したいサーバ側の負荷を考慮し、バッチ処理にて1日1回や2回程度cronで実行する予定
  • その際にディレクトリそのものの増減が判明する
  • Zabbixへの値の取り込みは、Zabbixサーバ側からのポーリングではなく、ディレクトリのディスク使用量をチェックするバッチ処理の最後にzabbix_sender等を利用してZabbixサーバへ送るような形をとりたい(zabbix_senderと記載しましたが、今回の件ではzabbix_senderを利用するのが適切かどうかはわかりません。)

質問

Zabbix側にて、WebのI/Fなど人間の手作業を伴わず、監視のアイテムの増減や、トリガーのしきい値の設定を行うには、どういう方法があるでしょうか。
分からないながら調べたところ、Zabbix APIを利用すれば実現が可能そうですが、他に方法はありますでしょうか。

トリガーの設定まではできなかったかもしれませんが、アイテムの増減については、Zabbix APIを用いずともできる方法を解説したwebページを以前見た覚えがあるのですが、今検索しても見つけられませんでした。

後述しておりますが、Zabbixサーバ側は3.4を利用しております。
ディレクトリ容量を監視したいサーバにはZabbixエージェントとして3.0系が入っていますが、3.4系に上げることは可能です。zabbix_senderはまだインストールしておりませんが、インストールすることも可能です。

補足情報(FW/ツールのバージョンなど)

Zabbixサーバ側

  • zabbix-server-mysql-3.4.5-1.el7.x86_64
  • zabbix-web-japanese-3.4.5-1.el7.noarch
  • zabbix-agent-3.4.5-1.el7.x86_64
  • zabbix-release-3.4-2.el7.noarch
  • zabbix-web-mysql-3.4.5-1.el7.noarch
  • zabbix-web-3.4.5-1.el7.noarch
  • zabbix-sender-3.4.5-1.el7.x86_64
  • zabbix-get-3.4.5-1.el7.x86_64

Zabbixエージェント側

  • zabbix-release-3.0-1.el6.noarch
  • zabbix-agent-3.0.10-1.el6.x86_64

以上となります。なにとぞ、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

面白そうなのでやってみました。
Zabbix3.0でやってみましたが、ローレベルディスカバリ機能があるバージョンならばできるはずです。

1. 対象ホストのエージェントにローレベルディスカバリが必要とするjsonデータを出力するスクリプトを仕込む
ローレベルディスカバリではエージェントから帰ってきたjsonデータを元にしてアイテムを作成します。
特定ディレクトリ以下の1階層目だけのディレクトリリストをjsonにして出すスクリプトがこんな。

bash

1#!/bin/bash 2for dir_path in `/bin/find $1 -maxdepth 1 ! -regex $1 -type d`; do 3 tmpdata=$tmpdata"{\"{#DIRPATH}\":\"$dir_path\"}," 4done 5jsondata="{\"data\":["`echo $tmpdata | sed -e "s/,$//"`"]}" 6echo $jsondata

このスクリプトを適当なところへ保存。例えば/usr/local/bin/dirlist.shとか。
出力されるデータはこんなのです。

json

1{"data":[{"{#DIRPATH}":"/tmp/mm"},{"{#DIRPATH}":"/tmp/mm/1"},{"{#DIRPATH}":"/tmp/mm/2"}]} 2

2. 対象ホストのzabbixエージェントに上記のスクリプトをUserParameterにして登録
キーの名前はなんでもいいんですが、ファイルシステムっぽいのでvfsにしています。適当に。

zabbix.conf

1UserParameter=vfs.directory.discovery[*],/bin/sh /usr/local/bin/dirlist.sh $1

3. zabbixサーバでディスカバリルールと、アイテムのプロトタイプを作成
設定→ホスト→ディスカバリで、「ディスカバリルールの作成」
名前:適当に
タイプ:Zabbixエージェント
キー:vfs.directory.discovery[/home]

/home以下のディレクトリについて調べる場合。

つづいてアイテムのプロトタイプ
名前:directory size of [{#DIRPATH}]
タイプ: Zabbixエージェント
キー: vfs.dirdu.size[#DIRPATH]
アプリケーション: FileSystems

これも好みで変えてOK。#DIRPATHのところだけは、上記のjsonキーと一致させる必要があります。

4. 対象ホストのzabbixエージェントに上記で作成したアイテムのキーを登録
さっきの2と合わせてこんな感じ。

UserParameter=vfs.directory.discovery[*],/bin/sh /tmp/mm.sh $1 UserParameter=vfs.dirdu.size[*],sudo du -b -s $1 | awk '{print $$1}'

du -bにしていますが、そのあたりも適当に変更してもOK。
ここまで書いたらzabbixエージェントを再起動。

これでアイテム追加されました。
削除は自動的にやってくれるのかな。ディスカバリルールのところで「存在しなくなったリソースの保持期間」という設定項目があるのでそのあたりで調整できるかもしれません。

参考になれば。

投稿2018/03/07 08:44

編集2018/03/08 09:17
rogueref

総合スコア727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GotHokLin

2018/03/08 01:17

roguerefさん、サンプルスクリプトも含め、誠にありがとうございます。 まだ私の中では頂いた回答を試すことができないのですが、なるべく早く試してみたいと思います。 ご回答いただいた内容に加え、自動登録したディレクトリの使用量に対するしきい値の自動登録をする方法があればありがたいのですが、なにか方法はありそうでしょうか。
rogueref

2018/03/08 08:45

一定の数字を超えたらなにかアクションを起こすとかですかね? それだとZabbixのトリガそのものですね。トリガは1つだけ作ればいいので、自動登録なんて意味がないと思いますよ。 それにトリガの自動設定はできないんじゃいないかな。
rogueref

2018/03/08 08:51

あ、ウソですね。ディスカバリルールの設定でトリガのプロトタイプってのもあるので、これを使えばトリガの自動登録もできるはず。試してみてください。
guest

0

ご回答いただいた後全く別の業務に追われておりました。
大変遅くなってしまったのですが、やっと本件に手を付ける時間ができroguerefさんのご回答を元にLLDにて対象ディレクトリ分、自動でアイテムの登録ができるようになりました。
アイテムごと個別に値を指定するトリガについては、今回は見送りました。
Zabbixから呼ばれるアイテムについては、実際のディレクトリの使用量をZabbixに返すのではなく、サーバ内で利用率として返し、トリガーについては、全アイテム共通で90%といったしきい値で稼働するように設定いたしました。

長い間、放置したままで申し訳ありませんでした。今更ですが、ベストアンサーなどを付けさせていただきました。

投稿2018/11/29 05:54

GotHokLin

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問