目次
PartI 物理・仮想・クラウド・コンテナ環境運用の基礎知識
第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 IIZabbixによる物理・仮想・クラウド・コンテナ環境の統合管理
第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の連携