😸

GKEログ監視が便利になりました!

2021/11/04に公開

10 秒で概要

この記事で目指す姿

moverview

前提

  • 任意のクラスタ上にソリューションが存在し、既存の 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 TraceCloud DebuggerCloud Profilerが存在する。

ポイント

  • Cloud Operations for GKEという名称で、GKE とCloud LoggingCloud 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 状態となる。

ログエクスプローラのアップデート

ログベースアラート機能等の新機能を使うために、ログエクスプローラのアップデートを行う。

  • 以前のログビューアより、アップデートを選択

update

Pod ログのクエリの検索

  • クラスタの Pod 詳細の画面から、ログを表示を押下することでログエクスプローラに遷移する

pod_log

  • 上記手順によりログエクスプローラのアップデートを行った後であれば、新規エクスプローラ画面に、Pod ログを検索するクエリ実行済みのログエクスプローラに遷移する。

pod_log_query

クエリ例)

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"

ログアラートの作成

  • ログエクスプローラの操作から、ログアラートの作成を選択する。

log_alert_1

  • 以下を入力し、Alert の設定を行う。

    • Alert 名称
    • Alert の Description
    • ポーリング間隔
    • クエリの設定
    • ※通知チャネルを作ってない場合は最後の項目で通知チャンネルを管理を選択する

ここでは、一旦

log_alert_2

  • ここでは、ベータ版ではない Email を利用して通知チャンネルを作成する。
    • Email 右側の Add New を選択
    • 通知先のメールアドレスと、通知名称を入力してSAVEを押下

monitor_email

  • ログエクスプローラに戻り更新ボタンを押下することで、作成した通知チャネルが表示される。

log_alert_3

  • この時点で飛んでくるメールは以下の通り。

notify_email

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 のアラート画面にて確認済みとなる。

monitor_incident_monitor_incident_acknowlegde

インシデントをクローズした場合は、Monitoring のアラート画面からインシデント行が削除される。SHOW CLOSED INCIDENTSを押下することで、クローズ済みののインシデントの一覧を確認することが可能。

monitor_incident_monitor_incident_closed

対象ログの絞り込み例

Cloud Loggin では、監視対象クラスタのコンソールログが json 形式で記載されている。実際のログについてはtextPayLoadフィールドにて格納されているため、通知対象のログを絞り込みたいときはクエリに以下の情報を記載する。

textPayLoad="SEVERE hogehoge"

終わりに

  • 既にクラスタが存在する場合は、作業時間 30 分程度で Email 通知ができました。
  • ポーリングタイミングで通知がプッシュされますが、Monitor 上同一のインシデントは 1 件しかたまりませんでした。

Discussion