2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Zabbix ローレベルディスカバリ(LLD)の拡張④ ディスク使用量の多いフォルダの監視

Last updated at Posted at 2015-03-14

Zabbix ローレベルディスカバリ(LLD)の拡張①
Zabbix ローレベルディスカバリ(LLD)の拡張②
Zabbix ローレベルディスカバリ(LLD)の拡張③
Zabbix ローレベルディスカバリ(LLD)の拡張④
Zabbix ローレベルディスカバリ(LLD)の拡張⑤

はじめに

監視ソフトでディスク使用率の監視をしていてアラートが発生したはいいけど、どこのフォルダが肥大化傾向にあるのか調査するのに四苦八苦したことはありませんか?また問題フォルダの当たりはついたけど過去どう推移してきたか知りたいといったことがあるかと思います。

増加が見込まれるフォルダがある程度絞れていれば、そのフォルダだけduコマンドの結果を取得すれば良いのですが、そうでない場合、数が多く対象も逐次変わるため、そうもいきません。
Zabbixのローレベルディスカバリ機能を使い、自動的に使用量の多いフォルダをピックアップし、それらに対して自動的にチェックする仕組みを考えてみました。

ディスク使用量の多いフォルダ(TopX)

ディスク使用量の多いフォルダのうち、多い順にX番目までのフォルダ名を返します。

zabbix_agentd.conf(エージェント側)での設定

  UserParameter=vfs.du.discovery,/etc/zabbix/zabbix_discovery/vfs.du.discovery.sh $1

WebGUIでの設定

ディスカバリルール
名前 フォルダサイズのディスカバリ
タイプ Zabbixエージェント
キー vfs.du.discovery[5]
アイテムのプロトタイプ
名前 フォルダサイズ[{#DIR_NAME}]
タイプ Zabbixエージェント
キー system.run["du -bs {#DIR_NAME}"]
vfs.du.discovery.sh
#!/bin/bash

TOP_line=$1

deny_list="$(cd $(dirname $0); pwd)/vfs.du.discovery_deny.list"

LIST=`du -b -S -X ${deny_list} /* | sort -nr | head -${TOP_line}`
if [ "${LIST}" = "" ] ;then
    echo "ZBX_NOTSUPPORTED"
    exit 1
fi

IFS=$'\n'

echo -n "{\"data\":["
FIRST=1
for line in ${LIST}
do
  DIR_VAR=`echo ${line} | awk '{print $2}'`
  if [ ${FIRST} -eq 1 ] ; then
      FIRST=0
  else
      echo -n ","
  fi
      echo -e -n "{\"{#DIR_NAME}\":\"${DIR_VAR}\"}"
done

echo "]}"
vfs.du.discovery_deny.list
## duコマンドのチェック除外リスト。ライブラリや静的なファイルしかないことが分かっているフォルダを記述。
## また使用量は多いが増加しないことが最初から判明している場合は除外したほうが良いでしょう。
## 固定サイズで確保しているRDBのデータファイルの保管場所とか
/bin
/boot
/cgroup
/dev
/lib
/lib64
/lost+found
/media
/misc
/mnt
/net
/proc
/sbin
/selinux
/srv
/sys
/usr/include
/usr/lib
/usr/lib64
/usr/libexec
出力結果
# zabbix_get -s 192.168.0.1 -k "vfs.du.discovery[5]" | jq "."
{
  "data": [
    {
      "{#DIR_NAME}": "/var/tmp"
    },
    {
      "{#DIR_NAME}": "/var/tmp/hoge"
    },
    {
      "{#DIR_NAME}": "/root"
    },
    {
      "{#DIR_NAME}": "/home/hoge"
    },
    {
      "{#DIR_NAME}": "/var/log"
    }
  ]
}
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?