Zabbix3.0 で各ディレクトリのファイル容量を監視する方法 (グラフ作成)

# Zabbix3.0 で各ディレクトリのファイル容量を監視する方法
## まえがき
筆者の所有しているサーバのHDD容量が逼迫してきたことをきっかけにUSB3.0に対応したHDDを買ってきてサーバにマウントしました。やったー。
そこで、そのHDDにあれやこれやファイルを放っていまして、動画ファイルなんかも置いたりしてます。
さらに自動でHDD側にログファイルやら何やらを移動するスクリプトを作って、どんどんUSBHDDの方にファイルを移動しています。

その結果…　**HDD容量が不安になってきました…**

ということで今回は、Zabbixを用いて外付けHDDの容量を調べることにしました。
HDD容量をグラフで表示することで現在のHDD使用容量がわかるという試みです。

多くのZabbix関連の資料ではサーバ全体(ディスク全体)の容量の監視設定は充実しているのですが、
(vfs.fs.size など) ディレクトリごとに参照する方法や外付けHDDを/にマウントしていない場合などは
あまり資料がなかったので記載することにします。

**※本記事はzabbix初心者向けです。詳しい方には冗長だと思います**


## 前提条件
### サーバ要件
debian jessie
Zabbix 3.0.4
~~日本語環境が整備されていること(筆者が英語苦手なので)~~

基本的にZabbixのバージョンが合っていれば(たぶん2.x系でもいけると思う)
できるはずです。
### 事前準備
1. Zabbixサーバが準備されていること
2. Zabbixエージェントが準備されていること
3. ZabbixエージェントがZabbixの監視対象ホストとして設定済みであること
4. ~~できなくても筆者を責めない心~~


## ディレクトリファイル容量監視グラフ作成手順
### 流れ
Zabbixに新しい監視設定項目を作成する時は基本的に次の流れで設定していきます。
1. テンプレートの作成
2. テンプレートにアイテムを作成
3. (アラームによるイベント監視をしたいなら) トリガーを設定
4. グラフの作成

となります。
今回はトリガーの作成は省略します。

####補足
* テンプレートとは、ホストと各監視項目を結びつけるような役目をするもので、
まぁ「あなたは○○っていうテンプレートに属するからこの監視項目見るね」みたいなものです（適当）
* アイテムは各監視項目です。30分に一回 HDDの容量などを確認してその数値などをトリガーやグラフに渡します。
* トリガーはアイテムで算出された数値などを利用して条件式を作り、当てはまった場合アラームを出す、というものです。
* グラフは言葉のまんま、アイテムからの数値をもとにグラフを作成します。

### Zabbix-agent 側の設定変更
アイテムのキーで利用するsystem.run はZabbix-agent 側のサーバでコマンドを実行することのできる項目なので
危険だという判断もありデフォルトでは無効化されています。
有効化しましょう。
/etc/zabbix/zabbix_agentd.conf
を開き、
EnableRemoteCommands=0 を 1 にしてコメントアウトします。
そしてZabbix-agentを再起動します。


### テンプレートの所属グループ作り
まず、テンプレートが所属するグループを作ります。
こうすると色々楽です。

1. 設定→ホストグループ　と進み、ホストグループの作成に進みます。
2. グループ名に A_Templates と入力して 追加を押して下さい

### テンプレートの作成
1. Zabbixにログイン後、設定→テンプレート と進み、テンプレートの作成に進みます。

2. テンプレート名に A_Template_hogehoge と入力してください。
A_Templateを頭につける理由については詳しいことはわかりませんが
憶測でA_ から始まるとソートされた状態で表示されるのでトップにでてきて扱いやすいとかそんな感じだと思います（適当）

3. 表示名は空欄で結構です
4. 所属グループにその他のグループからA_Templates を追加して下さい
5. 追加 または更新を押して下さい

### アプリケーションの作成
アプリケーションはアイテムをひとまとめにしたものです。
例えば /home/ の配下の容量を確認するアイテムと
/var/ 配下の容量を確認するアイテムは基本的に動作は同じです。
そのような場合、ざっくりと、容量を確認する系のアイテム群なんだなと判断する感じの
なんやかんやそんな感じです。

1. 設定→テンプレート A_Template_hogehoge の行のアプリケーションを押して下さい
2. アプリケーションの作成を押して作成に進みます。
3. 名前を入力します。　わかる名前でいいです

### アイテムの作成
いよいよ、アイテムを作成していきます。
1. 設定→テンプレートから A_Template_hogehoge の行にあるアイテムを押して下さい
2. アイテムの作成を押して下さい
3. 名前はわかる名前で(ディレクトリ名 Usageとかでいいんじゃね)
4. キーは次のように入力して下さい

```bash:監視したいディレクトリが/hogehoge/hogehogeの場合
system.run[du -s -b  /hogehoge/hogehoge | awk '{print $1}',wait]
```

system.runはZabbixエージェント側でコマンドを実行させ、実行結果をzabbixサーバへ返す（こともできる）キーです。標準出力をzabbixサーバ側へ渡すことができます。上記のキーですと　duコマンドを /hogehoge/hogehoge に対して実行した結果を渡すことで実現しています。

-s オプションは配下のサブディレクトリ、ファイルの大きさ表示をなくし、合計の大きさだけ表示するオプションで、-b オプションでバイト表示にします。

さらにディレクトリ情報などを廃した数値にする目的でawkを使ってます。

5. データ型は数値、データ形式は10進数です。
6. 単位をバイト(B)にするとバイト換算になります。ここら辺は公式のリファレンスに詳しいことが書いてあるはずです。

7. アプリケーションは先ほど作成したものを選択して下さい。
8. 追加、または更新を押します

### グラフ作成
いよいよグラフ作成です。

1. 設定→テンプレートから先ほど作成したテンプレート(A_Template_hogehoge)の行にあるグラフを押します。
2. グラフの作成を選択します
3. 名前はわかるような名前を入力します。ココがそのままグラフ名になります。
4. 幅、高さも適当に
5. アイテムの追加を押すと先ほど作成したアイテムが出てきますのでグラフにしたい数値を選択します。複数選択するとグラフを重ねることもできます。
6. 追加または更新を押します。

これでひとまずグラフができました。

## 見てみる

監視データからグラフを選択し、上部のプルダウンから該当グラフを選択すると…

![グラフ.png](https://qiita-image-store.s3.amazonaws.com/0/97408/63a6a902-e3e9-df8b-c551-226e494c40fe.png)

グラフが見れました。

## さいごに
わかりにくい説明ですみません。要するにsystem.runを使えば柔軟な監視ができますよ、ということでした。