Zabbix監視テンプレート（GlusterFS Node）

Zabbix監視テンプレート（GlusterFS Node）を作成しました。
Zabbix 3.0、GlusterFS 3.7.8で検証しています。

# 前提条件
- /etc/logrotate.dの設定がrestartではなく、reloadを使用している事。
- Zabbixエージェントの設定ファイルにパラメータ"Include=/etc/zabbix/zabbix_agentd.d/"を設定している事。

# GlusterFS Node

## テンプレート
- Template App GlusterFS Node Service（テンプレートとのリンク: なし）

## アプリケーション
- GlusterFS Node service

## アイテム
| # | アイテム名 | トリガー | キー | データ型 | 単位 | 乗数の使用 | 更新間隔（秒） | ヒストリ | トレンド | タイプ | アプリケーション | 内容 | 備考 |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| 1 | GlusterFS Node service is running | 1 |net.tcp.listen[24007] | 数値 | - | - | 30 | 90 | 365 | Zabbixエージェント | GlusterFS Node service | TCP24007ポート（glusterd）のステータス取得 | 
| 2 | Version of gluster | 0 | custom.glusterfs.gluster.version | 文字列 | - | - | 86400 | 90 | - | Zabbixエージェント | GlusterFS Node service | glusterのバージョン取得 | 
| 3 | Version of glusterfsd | 0 | custom.glusterfs.glusterfsd.version | 文字列 | - | - | 86400 | 90 | - | Zabbixエージェント | GlusterFS Node service | glusterfsdのバージョン取得 |
| 4 | Checksum of /usr/sbin/gluster | 1 | vfs.file.cksum[/usr/sbin/gluster] | 数値 | - | - | 3600 | 90 | 365 | Zabbixエージェント | GlusterFS Node service | glusterのハッシュ値取得 | prelinkが無効にされている事 | 
| 5 | Checksum of /usr/sbin/glusterfsd | 1 | vfs.file.cksum[/usr/sbin/glusterfsd] | 数値 | - | - | 3600 | 90 | 365 | Zabbixエージェント | GlusterFS Node service | glusterfsdのハッシュ値取得 | prelinkが無効にされている事 
| 6 | Number of running processes glusterd | 1 | proc.num[glusterd] | 数値 | - | - | 30 | 90 | 365 | Zabbixエージェント | GlusterFS Node service | glusterdプロセスの個数取得 | 
| 7 | Number of running processes glusterfs | 1 | proc.num[glusterfs] | 数値 | - | - | 30 | 90 | 365 | Zabbixエージェント | GlusterFS Node service | glusterfsプロセスの個数取得 | 
| 8 | Number of running processes glusterfsd | 1 | proc.num[glusterfsd] | 数値 | - | - | 30 | 90 | 365 | Zabbixエージェント | GlusterFS Node service | glusterfsdプロセスの個数取得 | 
- ヒストリとは各収集値の保持期間
- トレンドとは数値データタイプの1時間あたりの最低値、最高値、平均値および合計値の保持期間
- Zabbixにリトライ回数、リトライ間隔、タイムアウト時間は存在しない

## トリガー
| # | 深刻度 | トリガー | 条件式 | 種別 | 内容 | 備考 |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| 1 | 軽度の障害 | GlusterFS Node service is down on {HOST.NAME} | net.tcp.listen[24007].max(#3)=0 | ポート | 直近3回のTCP24007ポート（glusterd）のステータス取得時の戻り値（最大値）が0（Close）だった場合 | 
| 2 | 警告 | /usr/sbin/gluster has been changed on {HOST.NAME} | vfs.file.cksum[/usr/sbin/gluster].diff(0)>0 | バージョン | /usr/sbin/glusterのハッシュ値の最新値と前回値に差があった場合 | prelinkが無効にされている事 
| 3 | 警告 | /usr/sbin/glusterfsd has been changed on {HOST.NAME} | vfs.file.cksum[/usr/sbin/glusterfsd].diff(0)>0 | バージョン | /usr/sbin/glusterfsdのハッシュ値の最新値と前回値に差があった場合 | prelinkが無効にされている事 
| 4 | 重度の障害 | glusterd process is not running on {HOST.NAME} | proc.num[glusterd].last(0)<1 | プロセス | 稼働中のglusterdプロセスの最新個数が1未満だった場合 | 
| 5 | 重度の障害 | glusterfs process is not running on {HOST.NAME} | proc.num[glusterfs].last(0)<1 | プロセス | 稼働中のglusterfsプロセスの最新個数が1未満だった場合 | マウントの個数とプロセスの個数は比例するため、閾値はマウントの個数に合わせて適宜調整する事
| 6 | 重度の障害 | glusterfsd process is not running on {HOST.NAME} | proc.num[glusterfsd].last(0)<1 | プロセス | 稼働中のglusterfsdプロセスの最新個数が1未満だった場合 | ブリックの個数とプロセスの個数は比例するため、閾値はブリックの個数に合わせて適宜調整する事

## コンフィグの設置
```vim:/etc/zabbix/zabbix_agentd.d/userparameter_glusterfs.conf
# Custom Monitoring Items
UserParameter=custom.glusterfs.gluster.version,/usr/sbin/gluster --version | head -n 1 | cut -d ' ' -f 1-2
UserParameter=custom.glusterfs.glusterfsd.version,/usr/sbin/glusterfsd --version | head -n 1 | cut -d ' ' -f 1-2
```

## zabbix-agentの再起動（CentOS 5, 6）
```bash
[root@localhost ~]# /etc/init.d/zabbix-agent restart
```

## zabbix-agentの再起動（CentOS 7）
```bash
[root@localhost ~]# systemctl restart zabbix-agent
```

# 関連記事
[Zabbix監視テンプレート（GlusterFS Client）](https://qiita.com/bloodia/items/94c1f9b0b61eee2eecd3)