GCP入門: Kubernetes Engine での Cloud Logging -Vol.2-

スポンサーリンク
GCP入門: Kubernetes Engine での Cloud Logging -Vol.2- ノウハウ
GCP入門: Kubernetes Engine での Cloud Logging -Vol.2-
この記事は約6分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、Kubernetes Engine での Cloud Loggingについて解説しています。

スポンサーリンク

背景

下記の記事の続きになります。

実施内容

下記のコマンドを実行します。

make validate

下記のような出力になれば成功です。

Step 1 of the validation passed. App is deployed.
App is available at: http://xxx.xxx.xxx.xxx:8080
Step 2 of the validation passed. App handles requests.

ブラウザで「http://xxx.xxx.xxx.xxx:8080」にアクセスすると下記のような出力になります。

ロギングの確認

  1. Cloud コンソールのナビゲーション メニューで、[オペレーション] にある [ロギング] をクリックします。
  2. このページで、Resource type は [Kubernetes コンテナ]、cluster_name は [stackdriver-logging] を選択します。

ログ エクスポートの表示

  1. 引き続き [ロギング] ページを使用します。
  2. 左側のナビゲーション メニューで [ログルーター] をクリックします。
  3. ログ エクスポートの一覧に 4 つのシンクがあるのを確認します。
  4. シンクの右側にあるコンテキスト メニュー(その他アイコン)をクリックし、[シンクを編集] オプションを選択すると、シンクを表示して編集できます。
  5. ナビゲーション ウィンドウの上部にある [シンクの作成] オプションをクリックすれば、追加のカスタム エクスポート シンクを作成することもできます。

Cloud Storage におけるログ

  1. Cloud コンソールのナビゲーション メニューで [Cloud Storage] をクリックします。
  2. stackdriver-gke-logging-<random-Id> という名前のバケットを見つけてクリックします。
  3. シンクが Cloud Storage に反映されるまでには時間がかかるため、バケットのログの詳細は表示されない可能性があります。

BigQuery におけるログ

  1. ナビゲーション メニューの [ビッグデータ] で [BigQuery] をクリックします。[Cloud コンソールの BigQuery へようこそ] メッセージ ボックスが開いたら、[完了] をクリックします。
  2. 左側のメニューで、使用するプロジェクト名をクリックします。gke_logs_dataset というデータセットが表示されます。このデータセットを展開すると、存在するテーブルを確認できます(注: データセットはすぐに作成されますが、テーブルはログが書き込まれて新しいテーブルが必要になった時点で生成されます)。
  3. テーブルの一つをクリックして内容を表示します。
  4. テーブルのスキーマを見て、列の名前とデータ型を確認します。この情報は、次のステップでテーブルにクエリを実行してデータを調べるときに使います。
  1. 右上にある [クエリ] > [新しいタブ] をクリックして、テーブルに対してカスタムクエリを実行します。
  2. これでクエリがクエリエディタに追加されますが、このクエリには構文エラーがあります。
  3. クエリを編集し、Select の後にアスタリスク(*)を追加して、現在のテーブルからすべての情報が pull されるようにします。注: Select * クエリを実行すると一般にコストが高くなるので、おすすめしません。このラボで使うデータセットには直近 1 時間分のログしか含まれないため、データの量は多くありません。
  4. [実行] をクリックしてクエリを実行し、テーブルから結果を取得します。

解説

シンクとは

シンク(Sink)は、Google Cloud のログ管理システムの重要な機能の一つです。主にCloud Logging(以前はStackdriver Loggingと呼ばれていました)で使用されます。

シンクの主な特徴と用途は以下の通りです:

  1. 定義:
    シンクは、ログエントリを外部の宛先にエクスポートするための設定です。
  2. 目的:
  • ログデータの長期保存
  • 詳細な分析のためのデータ収集
  • 他のシステムとの統合
  • コンプライアンス要件の満たす
  1. 宛先タイプ:
    シンクは以下の宛先にログを送ることができます:
  • Cloud Storage:長期保存用
  • BigQuery:詳細な分析用
  • Pub/Sub:リアルタイム処理や他のシステムとの統合用
  • 別のGoogle Cloudプロジェクトのログバケット
  1. フィルタリング:
    シンクはフィルタを使用して、特定の条件に合致するログのみをエクスポートすることができます。
  2. IAM(Identity and Access Management):
    シンクには独自のサービスアカウントが割り当てられ、適切な権限を持つ必要があります。
  3. Terraformでの設定例:
   resource "google_logging_project_sink" "my-sink" {
     name        = "my-sink"
     destination = "storage.googleapis.com/${google_storage_bucket.log-bucket.name}"
     filter      = "severity >= WARNING"
   }
  1. 利点:
  • 中央集中型のログ管理
  • 柔軟なデータ保持ポリシー
  • 高度な分析と可視化の可能性
  • セキュリティとコンプライアンスの向上
  1. 注意点:
  • エクスポートされたログのボリュームに応じて追加のコストが発生する可能性があります。
  • 適切なIAM権限の設定が重要です。

シンクを使用することで、GCPのさまざまなサービスから生成されるログを効率的に管理し、長期保存や詳細な分析を行うことができます。これは、トラブルシューティング、セキュリティ監査、パフォーマンス最適化などに非常に有用です。

おわりに

今日は、Kubernetes Engine での Cloud Loggingについて解説しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました