監視
Cloud Logging、Cloud Monitoring、Cloud Trace、Debugger、Error Reporting
1. コンセプト
オペレーションスイート(旧称 Stackdriver)
- Cloud Logging
- リアルタイムでログを収集・分析する大規模なフルマネージドサービス
- フィルターや検索でログ分析でき、トラブルシューティングが加速
- ログに基づいた指標(メトリクス)定義
- VM インスタンスに対してはLogging エージェントを導入する必要がある( GKE ノードはデフォルトで導入済)
- ログは 400 日間 保存されるが延長することはできないので、長期保存するには Cloud Storage などへエキスポートする必要がある
- アプリケーションとシステムのログデータのほか、GKE 環境 や Google Cloud サービスからのカスタム ログデータも取り込める
- BigQuery、Google Cloud Storage、Pub/Subへのエクスポートできる
- リアルタイムでログを収集・分析する大規模なフルマネージドサービス
- Cloud Monitoring
- 組み込みの大規模なリソース指標(メトリクス)オブザーバビリティ
- クラウドで実行されるアプリケーションのパフォーマンスや稼働時間、全体的な動作状況を確認できる
- メトリクス・イベント・メタデータを収集し、ワークスペース を作成することでチャートやダッシュボードで可視化してアラート管理できる
- AWS にも対応
- Cloud Trace
- 各プログラミング言語に対応したライブラリを使用することで、HTTP ヘッダを挿入し、VM、コンテナー、AppEngine、トレースをキャプチャする
- ロードバランサにも対応
- URL ごとの統計、レイテンシの分布
- 各プログラミング言語に対応したライブラリを使用することで、HTTP ヘッダを挿入し、VM、コンテナー、AppEngine、トレースをキャプチャする
- Cloud Debugger
- 本番環境でのコードのデバッグ(途中で止める)
- デバッグのスナップショットを取得する(コード内の特定の場所で、アプリのローカル変数とコールスタックの状態を確認できます)
- コードにログポイントを追加する(再起動したり通常の機能を妨げたりせずに、実行中のサービスにロギングを挿入できます)
- Cloud Profiler
- 本番環境のアプリケーションのリソース消費を継続的にプロファイリング
- 実行中のサービスの解析を行うために使用
- Cloud Error Reporting
- エラーをレポート、通知
- エージェント
- インスタンスから情報を収集する VM に Monitoring エージェント と Logging エージェント をインストールすることで収集可能となる
2. Cloud Logging
2.1. アクセス制御
IAM を使用して Google Cloud リソースのロギングデータへの アクセス制御 を実施できる。
roles/logging.viewer
(ログビューア)(=roles/viewer
)- アクセスの透明性ログとデータアクセス監査ログ以外のすべての Logging 機能に対する読み取り専用権限
roles/logging.privateLogViewer
(プライベート ログビューア)roles/logging.viewer
に加え、アクセスの透明性ログとデータアクセス監査ログの読み取り権限- このロールは、_Required バケットと _Default バケットにのみ適用される
roles/logging.logWriter
(ログ書き込み)- サービスアカウントに付与して、ログの書き込みに十分な権限のみをアプリケーションに付与できる
- ただし、閲覧権限はない
roles/logging.bucketWriter
(ログバケット書き込み)- サービス アカウントに付与すると、ログバケットにログを書き込むための十分な権限を Cloud Logging に付与できる
- このロールを特定のバケットに制限するには、IAM 条件を使用する
roles/logging.configWriter
(ログ構成書き込み)は- ログベースの指標、除外、バケット、ビューを作成し、シンクをエクスポートする権限
- これらのアクションに Logs Explorer(コンソール)を使用するには、
roles/logging.viewer
を追加する
roles/logging.admin
(Logging 管理者)- Logging に関連するすべての権限
roles/logging.viewAccessor
(ログ表示アクセス者)- ビュー内のログを読み取るための権限
- このロールを特定のバケット内のビューに制限するには、IAM 条件を使用
roles/editor
(プロジェクト編集者)- roles/logging.viewer の権限、ログエントリの書き込み権限、ログの削除権限、ログベースの指標の作成権限が含まれる
- この役割では、エクスポート シンクの作成や、アクセスの透明性ログまたはデータアクセス監査ログの読み取りを行うことはできない
roles/owner
(プロジェクト オーナー)- Logging に対する完全アクセス権(アクセスの透明性ログとデータアクセス監査ログ)
2.1. ログの種類
- Google Cloud Platform のログ: GCP サービス固定ログ
- ユーザー作成のログ:ユーザ独自ログで、Logging エージェント、Cloud Logging API、または Cloud Logging クライアント ライブラリから取り込んだもの
- セキュリティログ
- 監査ログ(Cloud Audit Logs)
- アクセスの透過ログ: Google スタッフによる操作ログ
- マルチクラウドとハイブリッド クラウドのログ: Azure や AWS など別クラウドから取り込んだログ
2.1.1. 監査ログ
権限管理された上で、オペレーションを監視するログに以下の種類がある。( Cloud Audit Logs )
- 管理アクティビティ監査ログ
- リソース構成やメタデータ変更オペレーションが記録される
- デフォルトで有効で無効にできない
- データアクセス監査ログ
- リソース構成やメタデータ読み取り API 操作が記録される
- デフォルトは無効
- システムイベント監査ログ
- Google システムによって生成される管理アクション
- ポリシー拒否監査ログ
- セキュリティ ポリシー違反のため Google Cloud サービスがユーザーまたはサービス アカウントへのアクセスを拒否したときに、ポリシー拒否監査ログを記録する
現状、アクティビティログというサービスがあるが、 Deprecated なので監査ログを使用すること。
2.2. エキスポート・シンク
Cloud Logging は以下のエキスポート・シンクをサポートする。
gcloud 、Cloud Console、Google Cloud APIs ログシンクでログシンクのエクスポート先を作成してから、集約シンク を作成する。
- Cloud Storage
- Cloud Storage バケットに保存される JSON ファイル
- BigQuery
- BigQuery データセットに作成されるテーブ。
- Pub/Sub
- Pub/Sub トピックに配信される JSON メッセージ
- サードパーティによる Logging との統合サービス(Splunk など)をサポート
3. Cloud Monitoring
- ワークスペース は、1 つ以上の Google Cloud プロジェクトまたは AWS アカウントに含まれるリソースをモニタリングするためのツール
- 各ワークスペースには、Google Cloud プロジェクトや AWS アカウントなど、1~100 個のモニタリング対象プロジェクトを作成できる
- ワークスペースの数に制限はないが、Google CloudプロジェクトとAWSアカウントを複数のワークスペースでモニタリングすることはできない
- ホストプロジェクト
- すべてのワークスペースには、ホストプロジェクトがある
- ワークスペースの作成に使用した Google Cloud プロジェクトが、ワークスペースのホスト プロジェクト
- モニタリング対象プロジェクト
- ホストプロジェクトでワークスペースを作成すると、Google Cloud プロジェクトと AWS アカウントが追加できるようになる
- 新しい空白の Google Cloud プロジェクトを使用してワークスペースをホストしてから、モニタリングするプロジェクトと AWS アカウントをワークスペースに追加するのがよい
- ホスト プロジェクトと Workspace の名前を自由に選択でき、ワークスペース間でモニタリング対象プロジェクトを柔軟に移動できる
- カスタムメトリクス
3.1. Metrics Explorer
Metrics Explorer を使用すると、プロジェクトで収集された指標のグラフを作成できる。
3.2. アラート
3.3. プラグイン
オンプレミスや Compute Engine にインストールしたサードパーティ製アプリケーションをモニタリングする際のプラグインとして以下のようなものがある。
- Apache
- JMX Monitoring
- Memcached
- MySQL : プラグインを導入するだけではダメで、 MySQL に接続するユーザの作成と設定が必要
- Nginx
- Redis
- StatsD