Zabbix統合監視入門

「ハッキング被害」というキーワードを耳にする機会が多くなりました。
安全なシステム運用を考えたときに統合監視ソフトウェア「Zabbix」に興味が湧きました。
書籍「Zabbix統合監視入門」を読んで用語を中心に読書メモとしてまとめました。
※最新版ではないので情報が古い部分があると思われます:bow_tone1:

Zabbixオフィシャル日本語サイト
https://www.zabbix.com/jp

***
* 統合監視ソフトウェア「Zabbix」の機能
    * 専用監視サーバから、監視対象のサーバにインストールする専用の監視エージェント
    * SNMPエージェントなどを利用して、ネットワークを介して複数のサーバやネットワーク機器の稼働監視
、リソース監視
    * アプリケーション監視を定期的に行い、収集したデータを一元管理するデータ収集機能
    * 収集した監視データが正常かを判断し、設定した値を上回った/下回った場合に障害として検知するための障害検知機能
    * 障害発生/復旧時、システム管理者に知らせる通知機能
    * 専用の管理インターフェースから、収集した情報の履歴やグラフの表示、監視設定を行う表示機能

* 統合監視ソフトウェアを利用するメリット
    * 監視対象のプラットフォームの差異を吸収できる
    * 専用のインターフェースにより、監視システムの運用を標準化できる
    * ユーザーごとに管理権限を設定できる

* Zabbixの主な特徴と機能
    * オープンソースソフトウェア
    * LAMP、LAPPシステム上で動作
    * 動作が軽量　Zabbixエージェントは「C言語」で開発されている
    * さまざまなOSと監視に対応した専用エージェント
    * SNMPv1/v2/v3に対応
    * エージェントレスの監視に対応
    * webインターフェースから監視設定/表示が可能
    * マップグラフ複数グラフの表示機能
    * 監視データをRDBMSで一元管理
    * テンプレートによる監視項目/閾値設定/グラフ設定の管理
    * スクリプトによる監視項目の拡張機能
    * 大規模システムにも対応する分散監視機能
    * サービスの稼働率とSLAを算出するITサービス機能
    * 視対象の自動登録機能とディスカバリ機能

* Zabbix動作環境
    * 監視を行うzabbixサーバ
    * 監視対象に導入するzabbixエージェント
    * 監視設定やデータの表示を行うWebインターフェースで構成される
    * Zabbixサーバの動作には実績や情報の多さ、導入のしやすさから動作OSにはLinuxが推奨

***

##### 用語
`システム監視`
システム内で動作しているサーバ、アプリケーション、ネットワークなどが、正常に動作しているかを定期的に確認することにより、システムで発生した障害やリソース不足を検知し、システム管理者に通知を行うための作業や仕組み

`稼働監視`
pingを実行して応答を確認することネットワークの疎通を確認したり、
アプリケーションが利用するポートに接続を行い応答確認して正常に稼働しているか監視すること

`リソース監視`
CPU、メモリ、ディスク、ネットワーク、OS、サーバーハードウェア、ネットワーク機器などのリソースの使用状況をチェックすることにより、パフォーマンスが十分であるかを監視すること

`SNMP【Simple Network Management Protocol】`
ルータ、スイッチ、サーバなどTCP/IPネットワーク に接続された通信機器に対し、ネットワーク経由で監視、制御するためのアプリケーション層プロトコル

`アプリケーション監視`
サーバー上で稼働している各アプリケーション内部のステータスやリソース使用状況を監視すること
アプリケーションの監視は個々のアプリケーションによって監視方法が異なるため、個別に開発が必要
***
* Zabbix InnoDBをデフォルト使用する理由
    * Zabbixは更新系のクエリが多い
    * 行単位のロックができる
    * オンラインでデータベースのダンプを取得できる
    * 書き込みのバッファを利用することでI/Oの負荷を軽減することができる
    * ※MySQLサーバを初回起動する前に行っておく必要がある
    * MySQLの設定でI/O負荷を低減する為のチューニングを行っておくことで、1台のZabbixサーバでより多くの監視を行うことができる

***
##### 用語2
`MyISAM`
MySQLのデフォルトストレージエンジンで、ストレージエンジンを指定せずにテーブルを作成するとMyISAMが選択される

`InnoDBエンジン`
MySQLに豊富なトランザクション機能を提供するストレージエンジン
行単位でロックが行えることや、標準でオンラインでデータベースのバックアップを行える機能を有しているｋと、更新系のクエリが多い場合のチューニングが行いやすいことから小規模システムであってもInnoDBを使用することで容易に運用を行える

`ストレートエンジン`
データへアクセスする主な機能の部分
***

* Zabbixの監視設定の流れ
    * ホスト、アイテム、トリガー、アクション、グラフ、マップ、スクリーンは、機能別に大きく3つのカテゴリに分けられる
    * ステータス情報収集機能（ホスト/アイテム）監視対象をホスト設定で登録する
    * 障害検知/通知機能（トリガー/アクション）アイテムで収集した情報に対して閾値であるトリガーを設定する
    * グラフィカル表示機能（グラフ/マップ/スクリーン）ステータス情報収集機能で収集した情報を利用し、グラフ、マップ、スクリーンなどグラフィカルな表示をおこなう
    * アイテム（監視項目）監視対象からデータを収集し、Zabbixサーバのデータベースに保存する情報収集の設定をおこなう

***
`監視対象と監視項目の設定`

次回掲載予定:bow_tone1:

***
##### 用語3
`IPMI【Intelligent Platform Management Interface】`
SNMPやDMI(Desktop Management Interface)などのサーバー管理ソフトウェアが、特定のハードウェアシステムやOSに依存することなく、サーバーハードウェアをモニタ可能にするための標準インターフェイス仕様
ハードウェアのステータス情報の監視やリモート制御を行うための仕様です。
標準的なインターフェースが策定されていることで、OSやベンダーにかかわらず共通の手法でハードウェアの監視や制御を行うことができる

`ポーリング（polling）`
通信やソフトウェアにおいて、競合を回避したり、送受信の準備状況を判断したり、処理を同期したりするために、複数の機器やプログラムに対して順番に定期的に問い合わせを行い、一定の条件を満たした場合に送受信や処理を行う通信及び処理方式のこと

`スタンドアローン`
システムが他のリソースに依存せず、単独でも機能すること

`xinetd ザイネットディー`
Unix系オペレーティングシステムで動作するオープンソースのスーパーサーバ（英語版）型デーモンで、インターネットベースの接続性を管理する、inetdをよりセキュアに拡張したバージョン

`MIB 【 Management Information Base 】`
MIBとは、SNMPで管理されるネットワーク機器が、自分の状態を外部に知らせるために公開する情報のこと

`ODBC 【 Open Database Connectivity 】`
ODBCとは、アプリケーションソフトがデータベース管理システム（DBMS）などに接続し、データの取得や書き込み、操作などを行う方法の標準を定めたもの

`Telnet【 Teletype network】`
汎用的な双方向8ビット通信を提供する端末間およびプロセス間の通信プロトコルである。 `RFC 854`で規定されている

***
#### 障害検知と障害通知の設定

#####トリガー条件式の書式
`｛ホスト名:アイテムのキー,関数｝演算子　数値`

#####トリガー条件式の設定例
ファイルが更新された場合に障害として検知する
`/etc/inetd.confが更新されれば障害として検知できます。
{GCS-001-api-01:vfs.file.cksum[/etc/inetd.conf].diff(0)}>0`

ホスト名`GCS-001-api-01`に設定されている、キー設定が`vfs.file.cksum[/etc/inetd.conf]`のアイテムデータから、`関数diff(0)`によって最新データと1つ前のデータを比較します。同じであれば0を、それ以外であれば1を返すため、1であれば障害として検知する

Windowsサービスが稼働していなければ障害として検知する
`{GCS-001-api-01:vfs.file.cksum[/etc/passwd].diff(0)}>0`

ホスト名`GCS-001-api-01`に設定されている、キー設定が`vfs.file.cksum[/etc/inetd.conf]`のアイテムデータから、`関数last(0)`によって最新データを参照します。アイテム`vfs.file.cksum[/etc/passwd]`はWindowsTimeサービスが稼働していれば0を、それ以外の状態であれば1以上を返すため、0より大きければ障害として検知します。

#####テンプレート（雛形）の利用とエクスポート/インポート

`テンプレート`　監視設定をテンプレート化して管理する機能
OSごとやアプリケーションごとなどでテンプレートを作成しておくことで多数のサーバの監視設定を効率良く行うことができる
***