改訂2版 Zabbix統合監視徹底活用 複雑化・大規模化するインフラの一元管理


[改訂2版]Zabbix統合監視徹底活用──複雑化・大規模化するインフラの一元管理 (Software Design plusシリーズ)


技術評論社


著者:TIS株式会社 池田大輔


Dear reader,
読者の皆様へ
はじめに
本書の想定読者
本書で扱う言葉の定義
本書の構成
サンプルコードのダウンロード
参考サイト
謝辞
目次

Part I 物理・仮想・クラウド・コンテナ環境運用の基礎知識
第1章 多様化するインフラ環境
1.1 さまざまなインフラ環境とその特徴
1.1.1 物理環境とは
 物理環境の特徴
 物理環境の安定運用に必要なこと
1.1.2 仮想環境とは
 仮想化ソフトウェアの種類
 仮想環境の特徴
 仮想環境の安定運用に必要なこと
1.1.3 クラウド環境とは
 クラウド環境の特徴
 クラウド環境の安定運用に必要なこと
1.1.4 コンテナ環境とは
 コンテナ環境の特徴
 コンテナ環境の安定運用に必要なこと
1.2 各インフラ環境間の違い
1.2.1 物理環境と仮想環境の違い
 リソースの扱い方
 環境構成の変更しやすさ
 運用担当者が管理すべき層
1.2.2 オンプレミス環境とクラウド環境の違い
 データの在り処
 環境の提供形式
 発生するコスト
1.2.3 仮想環境とコンテナ環境の違い
1.3 物理・仮想・クラウド環境の使い分け
1.3.1 クラウド環境が適しているパターン
1.3.2 複数環境を併用するパターン
 大量アクセス対応のための利用例
 ディザスタリカバリのための利用例
1.3.3 コンテナ活用により効果を発揮するパターン

第2章 物理環境の監視・管理
2.1 物理環境の監視
2.1.1 監視技術の基礎
 OSコマンドを利用した監視
 SNMPを利用した監視
 SNMPトラップを利用した監視
 監視対象ホスト内部の監視
2.1.2 物理環境の監視技術
 IPMIを利用した監視
2.1.3 監視対象ホストやOSの種別ごとの監視方法
 ネットワーク機器の監視
 サーバ機器の監視
2.2 物理環境の管理
2.2.1 IPMIを利用したリモート物理マシン制御
 OSハングアップ時の電源操作による復旧作業
 BIOSの設定変更
 ネットワーク通信途絶時のネットワークインタフェース復旧作業
2.2.2 ベンダー提供ツールの活用

第3章 仮想環境の監視・管理
3.1 仮想環境特有の監視
3.1.1 リソース利用状況の監視
 キャパシティプランニングへの応用
 障害原因の特定
3.1.2 環境構成変更状況の監視
3.1.3 仮想化ソフトウェア層での実施処理状況の監視
3.2 仮想環境特有の管理
3.2.1 キャパシティプランニング/仮想マシン配置管理
 各仮想マシンの負荷傾向に応じた構成
 各仮想マシンの用途に応じた構成
 オーバーコミットを考慮した構成
 仮想マシン同士の関連を考慮した構成
3.2.2 マイグレーション管理
3.2.3 バックアップ管理
3.2.4 スナップショット管理
3.3 仮想環境監視・管理の具体例
3.3.1 VMware vSphere
 管理ツールの活用
 vSphere APIの活用
 SNMPの活用
3.3.2 OSS仮想化ソフトウェア(KVM、Xen)
 GUIによる監視・管理
 CUIによる監視・管理
3.3.3 仮想化基盤統合管理ソフト
 仮想化基盤統合管理ソフト比較
 仮想化基盤統合管理ソフトを利用した運用

第4章 クラウド環境の監視・管理
4.1 クラウド環境運用の特徴と課題
4.1.1 クラウド環境運用での課題
 クラウドサービス障害起因による自社サービス障害発生
 不正アクセスやアタックの脅威
 利用者がコントロールできない個所への対応
 余分な費用の発生
4.2 クラウド環境の監視
4.2.1 クラウドサービス提供者管理層の監視
4.2.2 クラウドサービス利用者管理層の監視
4.2.3 外部アクセスの監視
4.2.4 課金情報の監視
4.3 クラウド環境の管理
4.3.1 仮想環境と共通する管理
 キャパシティプランニング/仮想マシン配置管理
 マイグレーション管理
 バックアップ管理
 スナップショット管理
4.3.2 クラウド環境特有の管理
 アクセス管理
 発生費用の管理
4.4 AWSの監視・管理
4.4.1 AWSの概要
 AWSのサービスとアーキテクチャ
 AWS環境の設計
 AWS運用手段
4.4.2 AWSの監視
 AWS提供者側管理層
 AWS利用者側管理層
 AWSでの発生費用
4.4.3 AWSの管理
 AWSのキャパシティプランニング/仮想マシン配置管理
 AWSのマイグレーション管理
 AWSのバックアップ/スナップショット管理
 AWSのアクセス管理
 AWSでの発生費用の最適化
 【コラム】IAMによるAPI操作の制限

第5章 コンテナ環境の監視・管理
5.1 コンテナ環境運用の特徴と課題
5.1.1 コンテナ環境の特徴
5.1.2 コンテナ環境運用での課題
5.2 コンテナ環境の監視
5.2.1 Docker環境における具体的な監視手法
 コンテナへの入力に対する応答監視
 コンテナ内の処理の状態監視
 コンテナ環境全体の変更イベントの監視
5.2.2 コンテナオーケストレーションツールによる監視
5.3 コンテナ環境の管理
5.3.1 Docker環境における具体的な管理方法
 ホストの稼働状況に合わせたコンテナ再配置
 利用状況に合わせたコンテナ稼働のスケールアウト/スケールイン管理
 永続化データの管理
 コンテナイメージの管理
Dockerレジストリサーバの利用
5.3.2 オーケストレーションツールを用いた管理

Part II Zabbixによる物理・仮想・クラウド・コンテナ環境の統合管理
第6章 Zabbixの監視のしくみ
6.1 Zabbixアーキテクチャの概要
6.1.1 Zabbixを構成する要素
 Zabbixサーバ
 Zabbixフロントエンド
 Zabbixエージェント
 Zabbixプロキシ
 Zabbix Javaゲートウェイ
6.1.2 Zabbixで扱うデータ
 監視結果データ
 監視設定データ
6.2 Zabbixのパフォーマンス対策
6.2.1 データベースのチューニング
6.2.2 プロセス数のチューニング
6.2.3 Zabbixサーバ内部メモリのチューニング
6.2.4 Zabbixフロントエンドのチューニング
6.3 Zabbixの高可用性対策
6.3.1 Zabbixサーバプロセスの可用性確保
6.3.2 データベースサーバの可用性確保
 データベースサーバプロセスの稼働監視
 データベースのデータ冗長化
6.4 セキュアなZabbix環境の実現
6.4.1 監視コンポーネント間通信の暗号化
 暗号化事前設定
 Zabbixサーバ/Zabbixプロキシ/Zabbixエージェントの設定
 Zabbix管理画面上での設定
6.4.2 管理画面のHTTPS化
6.4.3 リモートコマンドの実行制御
6.4.4 ユーザ権限管理
 ユーザグループの設定で制御すること
 ユーザの設定で制御すること
6.5 Zabbix環境の構築自動化
6.5.1 マシンテンプレートとCloudInitによる自動化
 マシンテンプレートの活用
 CloudInitの活用
6.5.2 Ansibleを用いた構築自動化
 Ansibleで管理すべきZabbix環境情報
 Ansibleを使ったZabbix環境管理手順
 【コラム】Serverspecを用いた構築環境の稼働テスト
6.5.3 Docker Composeを用いたコンテナベースの構築自動化
 Zabbix環境のコンテナ構成
 Docker ComposeによるZabbix環境起動

第7章 監視の効率性向上
7.1 監視における課題
7.2 監視の統合化
7.2.1 複数拠点での監視結果の統合
 Zabbixプロキシ
 オンプレミス環境複数データセンター監視統合例
 オンプレミス/クラウド監視統合例
 【コラム】Zabbixプロキシでの監視結果保存期間チューニング
7.2.2 複数プラットフォームの監視統合
 SNMP/SNMPトラップ監視
 Zabbixエージェント監視
 外部チェック監視
 Zabbixトラッパー監視
 Zabbix VMware監視
7.3 Zabbixによる仮想環境の監視統合
7.3.1 SNMPエージェントとZabbixの連携
 SNMP監視
 SNMPトラップ監視
7.3.2 vSphere APIとZabbixの連携
 外部スクリプトの設定例
 【コラム】Zabbixのマクロ機能
 zabbix_senderの活用
 Zabbixエージェントの活用
7.3.3 Zabbix VMware監視機能による連携
 ハイパーバイザや仮想マシンが存在しなくなったときの挙動
7.4 Zabbixによるクラウド環境の監視統合
7.4.1 AWS APIとZabbixの連携
7.4.2 Web監視を利用したAWS上システムの監視
 【コラム】zabbix_senderの便利な利用方法
 AWS上のシステムをWeb監視する際の注意点
 Zabbixエージェントを起点としたWeb監視
7.4.3 Web監視の利用と注意点
 リダイレクトされるページの監視
 セッション情報を維持した遷移が必要なページの監視
 HTTPプロキシ越しに表示する必要があるページの監視
 クライアント証明書を使った認証が必要なHTTPSページの監視
 表示内容が前ステップの表示内容に依存するページの監視
7.5 Zabbixによるコンテナ環境の監視統合
7.5.1 Docker環境の監視方式
 コンテナ環境の監視統合で注意すべき点
 DockerホストにZabbixエージェントを導入して監視
 ホストのディレクトリをマウントしたZabbixエージェントコンテナを起動して監視
7.5.2 その他の監視方式(DockerリモートAPI経由で監視)
7.6 監視の自動化
7.6.1 ネットワークディスカバリ機能を利用した監視自動化
7.6.2 自動登録機能を利用した監視自動化
 ホストメタデータの送付設定
7.6.3 Zabbix APIを活用した監視自動化
 Zabbix APIの概要
 不要ホストの監視設定削除自動化
7.6.4 ローレベルディスカバリを利用した監視設定の自動化
 ディスカバリルール設定
 アイテムプロトタイプ設定
 ローレベルディスカバリのカスタマイズ

第8章 ログ管理の効率性向上
8.1 ログ管理における課題
8.2 ログ管理の効率性向上へのアプローチ
8.2.1 Zabbixのログ監視機能
8.2.2 FluentdとZabbix
 Fluentdとは
 FluentdとZabbixの連携
8.3 Zabbixログ監視機能を活用したログ集約管理
8.3.1 ログ監視のしくみ
 ログ監視の基本設定
8.3.2 ログ監視の活用例
 大量ログの監視
 複数行に渡るログの対応
 Zabbixエージェントが導入できない機器のログ監視
8.3.3 コンテナのログ監視
 複数のログの統合監視
8.3.4 ログ監視のパフォーマンス
 ZabbixエージェントからZabbixサーバに送付する対象のログを減らす
 ログ監視の更新間隔の調整と一度の送付件数の調整
 複数の条件でのログ監視時の対処
8.4 Fluentdを活用したログ集約・解析
8.4.1 Fluentdによるログ集約
8.4.2 Fluentdによるログ解析
 Apacheアクセスログのレスポンスコード別解析
 Apacheアクセスログのレスポンス時間別解析
 MySQLスロークエリログ解析
 Dockerのログの収集

第9章 監視データの有効活用
9.1 トリガー条件の効果的な設定
 過去からの推移状況をもとに判定するパターン
 複数ホスト、複数アイテムのデータを計算処理した結果をもとに判定するパターン
 マクロで指定したデータを含む計算処理結果をもとに判定するパターン
 トリガーに対してメンテナンス時間を指定するパターン
 計算アイテムを活用した判定パターン
9.2 数値データの予測統計分析
9.2.1 forecast関数を用いた障害検知
9.2.2 timeleft関数を用いた障害検知
9.2.3 予測関数の応用
9.3 Elasticsearchによるデータ分析
9.3.1 ZabbixヒストリデータをElasticsearchに格納する
9.3.2 ログの内容に対するキーワード検索
9.3.3 Aggregations機能を使った頻出キーワード分析
9.4 Zabbix監視データ取り出し方法と活用例
9.4.1 Zabbix APIによる取り出し
9.4.2 ローダブルモジュールによる取り出し
 モジュールのコード作成
 モジュールのコンパイル
 Zabbixサーバへのモジュール組み込み
9.4.3 リアルタイムエクスポート機能
9.4.4 監視データの分析例
 外部で分析した結果を統合管理に活用する

第10章 監視結果の効果的な可視化
10.1 Zabbixダッシュボードの有効活用
10.1.1 グラフウィジェットの設定
10.1.2 マップウィジェット、マップナビゲーションウィジェットの設定
 マップナビゲーションの設定
 マップの設定
10.2 スクリーンの有効活用
10.2.1 スクリーンによる一覧管理
10.2.2 スクリーンの動的生成
10.3 マップの有効活用
10.3.1 マップ機能を使った環境構成の視覚化
10.3.2 Zabbixホストグループを活用したマップ設定
10.3.3 Zabbix APIを活用したマップ設定
 Zabbix API mapメソッドの利用方法
 【コラム】ダッシュボード、スクリーン、マップの権限
10.4 外部ツールと連動したより高度な可視化
10.4.1 Grafanaとの連携
 Zabbixの監視アイテムのヒストリデータグラフの表示
 Grafana Annotations機能を使ったグラフとイベントの関係可視化

第11章 通知アクション実行の効率化
11.1 アクション機能を利用した自動処理化
 【コラム】内部イベントにおけるアクション
11.1.1 アクション機能の基本的な使い方
 アクション機能を利用するための事前設定
 【コラム】root権限での実行
 アクションの登録
 【コラム】アクションステップの効果的な利用
11.2 メッセージ通知内容のカスタマイズ
11.3 メッセージ通知の応用
11.3.1 スクリプトを利用したAmazon SNSへのメッセージ通知
11.3.2 Amazon SESのSMTPサーバ機能と連携したアラートメール通知
11.4 リモートコマンドの実行による操作自動化
11.4.1 カスタムスクリプトを利用した仮想マシンメモリ割り当て自動変更例
11.4.2 SSH接続を利用してDockerホストからコンテナを実行する例
11.5 時間のかかる処理への対応
11.5.1 Zabbixエージェントの監視タイプによるタイムアウトの扱いの違い
11.5.2 グローバルスクリプト実行時のタイムアウト設定
 時間のかかる処理を行いたい場合

第12章 構成情報(インベントリ)管理の自動化
12.1 構成管理における課題
12.1.1 構成管理におけるZabbixの活用
 ホストインベントリ機能とは
12.2 ホストインベントリ機能を活用した機器構成管理
12.2.1 ホストインベントリ登録方法
 手動登録
 自動登録
12.2.2 ホストインベントリ機能のメリット
12.2.3 仮想環境での活用例
 構成管理情報の自動管理
 マクロを活用した詳細なアラート通知
12.2.4 クラウド環境での活用例
 構成管理情報の自動管理
12.2.5 コンテナ環境での活用例
 構成管理情報の自動管理
12.2.6 効率性向上のための応用例
 仮想マシンとハイパーバイザ用ホストのトリガー依存関係を自動設定する

Appendix
A.1 SNMPTTを利用したSNMPトラップ監視環境の構築
A.2 Zabbix VMware監視機能の監視可能アイテム
A.3 Serverspecの導入と利用
A.3.1 インストール
A.3.2 設定とテスト実行
A.4 Fluentdの導入と利用
A.4.1 インストール
A.4.2 Fluentdの設定
 Fluentdでのデータの扱い方
 インプットの設定
 アウトプットの設定
 プラグイン追加
A.5 Elasticsearch、Kibanaの導入と利用
A.5.1 インストール
A.5.2 Elasticsearchマッピング定義設定
A.5.3 ElasticsearchとKibanaの連携
A.6 Grafana、Grafana-Zabbixの導入と利用

索引

書籍目次

Posted by shi-n