GKEログ監視が便利になりました!
10 秒で概要
- 2021 年 7 月に、GCP のロギング機能にアップデートが入りました。
- これにより、GKE などと簡単に連携して、ログベースアラートを実現できるようになりました。
この記事で目指す姿
前提
- 任意のクラスタ上にソリューションが存在し、既存の Pod のログを通知する。
- クラスタは Autopilot モード にて実現済み。
- この記事では Email 通知を例として記載する。
GCP における監視ソリューション詳細の抜粋
オペレーションスイート(旧称 Stackdriver)でできること。
- Cloud Logging
Cloud Logging は、大規模に実行されるフルマネージド サービスです。アプリケーションとシステムのログデータのほか、GKE 環境、VM、Google Cloud サービスからのカスタム ログデータも取り込めます。Cloud Logging では、選択したログを分析でき、アプリケーションのトラブルシューティングが加速します。
- Cloud Monitorig
Cloud Monitoring では、クラウドで実行されるアプリケーションのパフォーマンスや稼働時間、全体的な動作状況を確認できます。Google Cloud サービス、ホステッド アップタイムのプローブ、アプリケーション インストルメンテーション、よく使われるさまざまなアプリケーション コンポーネントから指標、イベント、メタデータを収集し、チャートやダッシュボードで可視化してアラートを管理できます。
その他、APM(Application Performance Management)として、Cloud Trace
、Cloud Debugger
、Cloud Profiler
が存在する。
ポイント
-
Cloud Operations for GKEという名称で、GKE と
Cloud Logging
、Cloud Monitoring
のネイティブな統合が成されている。- Cloud Operations for GKE を利用する場合、Prometeus とのシームレスな連携が可能
Cloud Loggin の設定
Loggin の ON/OFF の設定
$ gcloud container clusters create/update NAME
実行時における、--logging フラグにてサポートされる。
-
--logging NONE
- ロギングを行わない
-
--logging SYSTEM
- コントロールプレーンからのログ全般
-
--logging WORKLOAD
- ユーザノードで実行されているシステム以外の Pod ログ
※Autopilot モードの場合は、クラスタ作成時点で強制的に WORKLOAD 状態となる。
ログエクスプローラのアップデート
ログベースアラート機能等の新機能を使うために、ログエクスプローラのアップデートを行う。
- 以前のログビューアより、アップデートを選択
Pod ログのクエリの検索
- クラスタの Pod 詳細の画面から、ログを表示を押下することでログエクスプローラに遷移する
- 上記手順によりログエクスプローラのアップデートを行った後であれば、新規エクスプローラ画面に、Pod ログを検索するクエリ実行済みのログエクスプローラに遷移する。
クエリ例)
resource.type="k8s_container"
resource.labels.project_id="PROJECT_ID"
resource.labels.location="asia-northeast1"
resource.labels.cluster_name="CLUSTER_NAME"
resource.labels.namespace_name="default"
resource.labels.pod_name="POD_NAME"
resource.labels.container_name="CONTAINER_NAME"
ログアラートの作成
- ログエクスプローラの
操作
から、ログアラートの作成
を選択する。
-
以下を入力し、Alert の設定を行う。
- Alert 名称
- Alert の Description
- ポーリング間隔
- クエリの設定
- ※通知チャネルを作ってない場合は最後の項目で
通知チャンネルを管理
を選択する
ここでは、一旦
- ここでは、ベータ版ではない Email を利用して通知チャンネルを作成する。
- Email 右側の Add New を選択
- 通知先のメールアドレスと、通知名称を入力して
SAVE
を押下
- ログエクスプローラに戻り更新ボタンを押下することで、作成した通知チャネルが表示される。
- この時点で飛んでくるメールは以下の通り。
Cloud Monitoring の設定
Monitoring の ON/OFF
$ gcloud container clusters create/update NAME
実行時における、--monitorign フラグにてサポートされる。
-
--monitorign NONE
- ロギングを行わない
-
--monitorign SYSTEM
- コントロールプレーンからのログ全般
※Autopilot モードの場合は、クラスタ作成時点で強制的に SYSTEM 状態となる。
Monitoring アラート画面の利用方法
Cloud Logging にて通知設定を行い、メール通知などに含まれるVIEW INCIDENT
を押下すると、Monitor のアラートページに遷移する。
この画面では、以下の操作ができる。
- ログ通知の POLICY の検索
- ログ通知の POLICY の編集
- 通知の際のログ表示
- インシデントの管理(認知するか、クローズするか)
インシデントとして認知した場合は、Monitoring のアラート画面にて確認済みとなる。
インシデントをクローズした場合は、Monitoring のアラート画面からインシデント行が削除される。SHOW CLOSED INCIDENTS
を押下することで、クローズ済みののインシデントの一覧を確認することが可能。
対象ログの絞り込み例
Cloud Loggin では、監視対象クラスタのコンソールログが json 形式で記載されている。実際のログについてはtextPayLoad
フィールドにて格納されているため、通知対象のログを絞り込みたいときはクエリに以下の情報を記載する。
textPayLoad="SEVERE hogehoge"
終わりに
- 既にクラスタが存在する場合は、作業時間 30 分程度で Email 通知ができました。
- ポーリングタイミングで通知がプッシュされますが、Monitor 上同一のインシデントは 1 件しかたまりませんでした。
Discussion