Zabbix入門のメモ（監視タイプ）

アイテムの監視タイプの特徴と、どんな用途に使えそうなのかをまとめます。

参考文献：
http://www.sraoss.co.jp/technology/zabbix/introduction/02-2ndstep.php

#Zabbixエージェント

* Zabbixエージェントによる監視なので、クライアント側にZabbixエージェントのインストールが必要
* LinuxもWindowsもOK
* サーバからエージェントに対してデータを要求
* CPU使用率、メモリ使用率、ディスク使用率、ファイル監視、Web監視などの監視に利用できる

[キーのリファレンス](https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/zabbix_agent)

#Zabbixエージェント(アクティブ)

* Zabbixエージェントによる監視なので、クライアント側にZabbixエージェントのインストールが必要
* LinuxもWindowsもOK
* エージェントからサーバに対して定期的にデータを送信
* ログ監視に利用できる

#シンプルチェック

* エージェントを使用しない監視
* ping、TCP疎通、TCP応答時間の監視に利用できる

[キーのリファレンス](https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/simple_checks)

#SNMPエージェント

* Zabbixサーバ→SNMPエージェントに問い合わせる
* SNMPエージェントによる監視
* CPU使用率、メモリ使用率、ディスク使用率、ディスクI/O、ネットワークI/Oの監視に利用できる

参考：[SNMPv1、v2、v3の違い](http://www.itmedia.co.jp/enterprise/articles/0705/16/news011_2.html)

##SNMPv1エージェント
* 平文のパスワードで認証
* SNMPトラップでの再送確認なし

##SNMPv2エージェント
* 平文のパスワードで認証
* SNMPトラップでの再送確認あり
* v1よりもMIB情報が若干増え、新たなデータ型が定義されている

##SNMPv3エージェント
* ユーザーレベルでの暗号化された認証
* SNMPトラップでの再送確認あり
* ユーザごとにアクセスできるMIBの範囲を定義する「VACM（View-Based Access Control Model）」機能をサポート

#SNMPトラップ

[SNMPトラップとは](http://www.itmedia.co.jp/enterprise/articles/0705/31/news042.html)

* SNMPエージェント→Zabbixサーバに通知する
* SNMPトラップによる監視

[キーのリファレンス](https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/snmptrap)

#Zabbixインターナル

* Zabbixサーバ内部のステータス情報であるアイテムやトリガーの数、監視のキューの数の監視に利用できる

[キーのリファレンス](https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/internal)

#Zabbixトラッパー

* zabbix_senderを用いて送信されたデータを受信する場合に使用

[トラッパーの設定](https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/trapper)

##zabbix_sender

* Zabbixサーバのトラッパープロセスにデータを送信するプログラム
* Zabbixエージェントに付属してインストールされる
* スクリプトに組み込んで監視データをZabbixサーバに送信し、DBに保存することができる

* Zabbixサーバにデータを送信するコマンド

```bash
zabbix_sender -z ＜サーバ＞ -s ＜ホスト名＞ -k ＜アイテムのキー＞ -o ＜送信する値＞
```

* zabbix_agentd.confに保存されているZabbixサーバの設定やホスト名を利用してデータを送信するコマンド

```bash
zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -k ＜アイテムのキー＞ -o ＜送信する値＞
```

#Zabbixアグリゲート
* 同じホストグループに属するホストの同じキーを持つアイテムの収集データを集計
* 複数のWebサーバの平均CPU使用率、複数DBサーバの空きディスク容量の合計などの監視に利用できる
* ZabbixのDBを参照してデータ集計を行うため、エージェントとの通信は発生しない

[キーのリファレンス](https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/aggregate?s[]=grpavg)

#外部チェック
* Zabbixサーバ上にあるスクリプトやコマンドによる監視
* 実行するスクリプトの設置場所は`/etc/zabbix/zabbix_server.conf`の`ExternalScripts`で指定
* 外部チェックを利用する場合、`スクリプト名[パラメータ]`で指定

例：NTPサーバの稼動監視

```bash:/usr/lib/zabbix/externalscripts/ntpcheck.sh
#!/bin/sh
/usr/sbin/ntpdate -q $1; echo $?
```

・アイテム設定のキー
`ntpcheck.sh[ntp.example.jp]`

#データベースモニタ
* ZabbixサーバからODBCを利用してDBサーバにSQLクエリを発行し、その結果を取得
* DBの稼動確認や内部のステータス情報を収集
* データベースモニタを利用するには、Zabbixサーバに`unixODBC`または`iODBC`のライブラリをインストールする必要がある
* DBサーバ側にZabbixサーバから接続できるよう設定しておく必要がある
* DBサーバに監視用ユーザを追加するべき

[キーのリファレンス](https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/odbc_checks)

##ODBCの設定
```bash:/etc/odbcinst.ini
[PostgreSQL]
Description     = ODBC for PostgreSQL
Driver          = /usr/lib/psqlodbc.so
Setup           = /usr/lib/libodbcpsqlS.so
Driver64        = /usr/lib64/psqlodbc.so
Setup64         = /usr/lib64/libodbcpsqlS.so
FileUsage       = 1

[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc5.so
Setup           = /usr/lib/libodbcmyS.so
Driver64        = /usr/lib64/libmyodbc5.so
Setup64         = /usr/lib64/libodbcmyS.so
FileUsage       = 1
```

```bash:/etc/odbc.ini
[postgresql]
Description = PostgreSQL Database
Driver      = PostgreSQL
Database    = ＜接続するデータベース＞
Server      = ＜監視対象サーバのホスト名またはIPアドレス＞
Port        = ＜監視対象サーバでPostgreSQLが利用しているポート番号＞

[mysql]
Description = MySQL Database
Driver      = MySQL
Database    = ＜接続するデータベース＞
Server      = ＜監視対象サーバのホスト名またはIPアドレス＞
Port        = ＜監視対象サーバでMySQLが利用しているポート番号＞
```

#IPMIエージェント
* IPMIにより、ハードウェアのステータス情報を収集
* クライアント側にIPMIエージェントのインストールが必要（OpenIPMI、OpenIPMI-libなど）
* サーバの温度や電源、ファンの状態などのステータスを取得

[IPMIの概要](https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/ipmi)

#SSHエージェント
* ZabbixサーバからSSHで監視対象にログインし、コマンドを実行し、結果を収集
* Zabbixエージェントのインストールなしで内部のステータス情報やアプリケーションの詳細を監視できる
* 公開鍵認証を利用してSSHエージェントを利用する場合、`/etc/zabbix/zabbix_server.conf`の`SSHKeyLocation`に公開鍵と秘密鍵を置いているディレクトリパスを設定する必要がある

#TELNETエージェント
* Zabbixサーバからtelnetを利用して監視対象にログインしてコマンドを実行し、結果を収集

#JMXエージェント
* JMXによるJavaアプリケーション監視

[JMXの記事](http://thinkit.co.jp/story/2012/04/13/3504/page/0/1)
[JMXの概要](https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/jmx_monitoring)

#計算
* 他のアイテムの値を基に計算
* ディスクの残量やメモリの使用量、CPU全体のロードアベレージ、急激なリソースの変化の取得など

参考：
[Zabbixでメトリクス監視する](http://kenjiskywalker.hatenablog.com/entry/20120510/1336623133)
[監視を始めるお!その6-2:Tips計算アイテム](http://wiki.arashike.com/zabbix/calc_item)