Zabbixの監視を制限して公開する


# ●これは何？
Zabbixで監視している内容の一部をお客さんに公開するよという話。公開というよりは提供か？
正直この記事に需要があるのか不明だが、自分用のメモと割り切りる。
ググってもこれに似たような記事も無いからいいよね

# ●経緯
簡単に経緯と要件のまとめ。


* オンプレのサーバを、1台丸ごと特定のお客さん専用サーバにしてた
* サーバの監視はZabbixで行っている
* お客さんからはサーバの状況が分からないので、ちょいちょい問い合わせがくる。(例：昨日のメモリのグラフ下さい
* お客さんが直接Zabbixで見れば良いよね？
* でも全ホスト、全アイテムの情報が見れるのは、大人の事情で問題だよね
* 設定も変更されたら困るよね
* 通知も出来ればいいよね

という前提で構築した内容のメモです。

# ●環境
* Zabbix:ver3.0


# ●概要
* ホストグループを作成
	- ホストの制限
* ユーザグループの作成
	- 権限(読込のみ)の制限
* ユーザの作成
	- ログインユーザ
	- 通知先
* ホストの作成
	- 同一IPで複数のホスト
* ホストの編集
	- アイテムの制限
	- トリガーの制限
* アクションの作成
	- 通知設定

以下それぞれ詳細な手順。
設定例の名称のネタは攻殻機動隊

# ●ホストグループの作成
設定　→　ホストグループ　→　ホストグループの作成

* グループ名：HostGoup_PublicSecuritySection9
* ホスト：この時点では空

ホストグループを追加する

# ●ユーザグループの作成
管理　→　ユーザグループ　→　ユーザグループの作成をクリック

## ユーザグループタブ
* グループ名：UserGroup_PublicSecuritySection9
* ユーザ：-- この時点では空

他はデフォルト

## 権限タブ
ここの権限設定で閲覧のみ許可となる。

* 読込専用：HostGoup_PublicSecuritySection9

ユーザグループを追加する

# ●ユーザの作成
管理　→　ユーザ　→　ユーザの作成をクリック
## ユーザタブ
* エイリアス：major
* 名前：motoko
* 名字：kusanagi
* グループ：UserGroup_PublicSecuritySection9
* パスワード：pass

他は必要に応じて設定。基本的にはデフォルトで良い。

## メデイアタブ
以下の内容で追加する。通知方法はメールとする。

通知しない場合、この設定は不要。

* タイプ：Email
* 送信崎：mk@sample.com
* 深刻度：全部チェック
* 有効：チェック

## 権限タブ
* ユーザの種類：Zabbixユーザ

他は設定を確認するだけで変更は出来ない

ユーザを追加する


# ●ホストの作成
設定　→　ホスト　→　ホストの作成をクリック
## ホストタブ
同一のIPで複数のホストを設定出来る。Zabbixのドキュメントには記載されていないが、設定してみた所問題無く動作している。
ただ、Zabbixのサーバ・クライアント(ホスト)共に処理が重くなると推測される。半年ほど運用した主観だと、重くなったような印象は無い。

* ホスト名：tachikoma01
* 表示名：(空)
* グループ：HostGoup_PublicSecuritySection9
* エージェントのインターフェース：192.168.1.1 ←これは例。該当ホストのIPをいれる

他はデフォルト

## テンプレートタブ
必要なテンプレートを追加する。
例：Template OS Linux

ここで公開用のテンプレートを作っておけば、次の「ホストの編集」は不要になるはず。まだ公開件数が少ないのでテンプレートは作っていない。次に依頼があれば絶対作る。

## マクロタブ
テンプレートから継承されたマクロ等で設定が必要な項目あれば設定する。
例のテンプレートはTemplate OS Linuxなのでデフォルトのままなら特に無い。

ここで一旦、ホストを追加する。

# ●ホストの編集
ここでアイテムの制限をする。テンプレートを追加しただけの状態なので、基本的にアイテムが全公開になっている。
ここから公開するアイテムのみに絞る。この辺は要望によって変わるはずなので各自で判断して決めればいいと思うよ。
お客さんもアイテムが多すぎると、何を見ていいか分からないという事もあるし。実際クレームになりました。

以下例では

* CPUの使用率
* 空きメモリ量
* ネットワーク帯域

のみ公開する前提で行く。


## アイテムの設定
設定　→　ホスト　→　ホスト一覧の中のtachikoma01のアイテムをクリック

### アイテムを一括で無効にする
とりあえずアイテムを一括で無効にする
アイテム一覧の左側のチェックボックスにチェックを入れて一番下の無効をクリック。
ディスカバリ関連(DiskとNetworkとか)はチェックボックスが効かないので一括で無効にならない。NetWork系以外を地道に右側の「有効」をクリックして「無効」にする。

### 必要なアイテムを有効化
以下アイテムを有効化する

* Available memory
* CPU system time
* CPU user time
* CPU steal time
* CPU softirq time
* CPU idle time
* CPU interrupt time
* CPU iowait time
* CPU nice time
* Network interface discovery: 系。複数あり

## トリガーの設定
通知の必要がある場合はそれぞれのトリガーを設定する。

閾値は基本的にデフォルト値で良い。
有効無効は一旦全部無効にして必要な項目を有効にする。


### 余談
デフォルトの閾値はホストのスペックの差を考慮してないと推測される。というかホストのスペックはZabbixとしては分からないのでどうしょうもないともいう。一応スペック低いマシンを想定しているような印象をうけるので必要に応じて変更すれば良いのではなかろうか

### さらに余談
トリガーの閾値はテンプレートのマクロにした方が後々楽になる。

余談終わり


# ●アクションの作成
通知の設定。
アクションは既存で使用しているものをコピペした方が簡単。ここでは新規に作成する手順で説明
方針としては深刻度が「重大な障害」以上を通知する

設定　→　アクション　→　アクションの作成をクリック

## アクションタブ
件名とメッセージは自由に改変すれば良いと思うよ。詳細は長くなるので、ここでは省略

* 名前：Action_MailToMajor
* デフォルトの件名：（そのまま）
* デフォルトのメッセージ：（そのまま）
* リカバリメッセージ：チェックあり
* 復旧通知の件名：（そのまま）
* リカバリメッセージ：（そのまま）
* 有効：チェックあり

## アクション実行条件タブ
ホストグループを設定しないと全ホストの「重度の障害」以上で通知が発生する。

* 計算のタイプ：And/Or
* アクションの実行条件：
	- メンテナンスの状態 期間外 メンテナンス(デフォルト)
	- トリガーの値 = 障害(デフォルト)
	- トリガーの深刻度 >= 重度の障害(追加)
	- ホストグループ = HostGoup_PublicSecuritySection9(追加)

## アクションの実行内容
* デフォルトのアクション実行ステップの間隔：60(デフォルト)
* アクションの実行内容
	- ステップ：1　-　1(デフォルト)
	- ステップの間隔：0(デフォルト)
	- 実行内容のタイプ：メッセージの送信
	- ユーザーグループに送信：(無し)
	- ユーザーに送信：major (motoko kusanagi)
	- 次のメディアのみ使用：Email
	- デフォルトのメッセージ：チェックあり
	- アクションの実行条件：(無し)

アクションを追加する


# ●テスト
* 作成したユーザでログインしてみる
	- 外部からログイン出来るとかね
* 設定が変更出来ない事を確認
* 監視データが制限された内容で表示される事を確認
 - グラフ
 - ホストスクリーン
* お気に入りに登録
* 障害を発生させて通知されるか確認

# その他
* ログイン情報をお客さんに連絡
	- URL
	- ID
	- pass
* Zabbixの簡単な使い方を説明
* 通知内容の説明。　←　サーバがこういう状況になると、こんな感じのメールが飛ぶよ。的な


# ●まとめ
以上で必要最低限の情報のみをお客さんに提供出来るようになったはず。
同じIPに複数のホストを設定出来るというのがキモでした。

何かツッコミあればコメントが編集リクエストお願いします。