クラウド同上

Stackdriver Loggingのログを失う前にエクスポートしておく方法(前編)

Author
Lv:3 Exp:857

GAE、GCPについて日々勉強中です。

こんにちはクラウドエース システム開発部のGCP初心者、キムです。

みなさんは Stackdriver Loggingのログの保持期間が30日であることを知っていますか??私は最近までそれを知らず、1ヶ月前のログが見たく検索したらログがないことにびっくりして困っていました。「ログがなくなって調査が難しい」なんて口が裂けても言えない。どうしよう。。。と、悩んでいたときに先輩が「そりゃ〜ログをエクスポートしておくんだよ」って救ってくれたので、本記事は「Stackdriver Loggingのログをエクスポートする方法」について紹介します。

1. Stackdriver Loggingはログの収集、調査のためのサービス

Stackdriver Loggingは、Google Cloud Platform(GCP)に付属する運用管理サービスである Stackdriver の一部で、ログの収集、調査のためのサービスです。
SaaSとして提供されるため、ログの収集を設定するだけで、ストレージ容量や、検索システムの手配などはサービスが全部管理してくれるためログの検索や監視に集中できます。また、GCPだけでなく、AWSにも対応しています。

2. 気になる料金は保存データ量のみ

気になる料金は、無料枠(プロジェクト毎に最初の50GBまで)を超える使用量(ログデータ量)に対してのみ、料金($0.50/GB)が発生します。

料金 毎月の無料割当量
$0.50/GB プロジェクト毎に最初の50GBまで

※ Stackdriver の詳しい料金体系については公式ドキュメントをご参照ください。

[参考] GCP の各種サービスに対する無料枠についてはこちらがいいです。

1プロジェクトあたりで50GBもの無料枠があるため、無料枠を超えないプロジェクトでは気楽に使えますね。

無料枠を超えるような大きいプロジェクトでは、

  • ログの除外
  • ログのエクスポート

などの方法を取ることで費用を抑えることも可能です。
ログの除外方法については、今回は紹介しませんが、こちら公式ドキュメントをご参照ください。
ログのエクスポートはログの長期保管のためだけでなく、料金を抑える観点からも重要になると思います。また、ログをエクスポートするための料金や制限はありませんが、エクスポート先ではログデータの保存や送信にはそれぞれのサービスに対する料金が発生します。

3. ログをエクスポートする3つの理由

ログをエクスポートする理由は、大体次のような場合でしょう。

  • 長期間ログを保存するため。(30日保持期間の回避)
  • ログをBigQueryなどのビックデータ分析ツールで分析するため。
  • ログを利用したリアルタイムデータ処理を実装するため。

4. ログをエクスポートする3つの方法

本記事では「ログビューアによるエクスポート」について紹介します。

ちなみに、ログビューアを使用すれば、読み込まれたログを最大300件までJSONやCSV形式でダウンロードできます。30日以内のログを探索し、必要な箇所を抽出するのにはログビューアがとても便利です。

5. ログをエクスポートする3つのエクスポート先

ログのエクスポートは用途に応じて、以下3つのエクスポート先を選択できます。

  • GCS (Google Cloud Storage)
  • BigQuery
  • Cloud Pub/Sub

各エクスポート先の用途についてはざっくり、以下のようです。
用途に応じてログをエクスポートすると良いでしょう。

エクスポート先 送信単位 用途
GCS 1時間毎 ログデータをアーカイブしたい。
費用を抑えながら、長期間データを保存したい。
BigQuery ニアリアルタイム 高度な分析や SQL のようなクエリを実行したい。
費用も抑えられる。Streaming Insert の料金がかかるが、
$0.05/GB ぐらいなので、Stackdriver Logging(50GB以上から $0.5/GB) の十分の一のお値段。この金額が許容範囲ならBigQueryが最も便利。
Cloud Pub/Sub ニアリアルタイム サードパーティのソリューションや任意のエンドポイントにログデータをストリーミングしたい。

今回は GCS へログをエクスポートする手順について紹介します。
BigQuery や Cloud Pub/Sub へエクスポートについては次回紹介します。

ここまでは、ログのエクスポートについて全体的な概要について説明しました。
それでは、実際にログをGCSへエクスポートしてみましょう。

6. GCSへのログエクスポートは3ステップ

ログのエクスポートは下記の3ステップで簡単に設定出来ます。

  1. エクスポート先の準備
  2. エクスポートの設定
  3. エクスポートの確認

6-1. エクスポート先の準備:GCSのバケットを作成

まず、エクスポート先として入れ物を事前に準備しておく必要があります。
今回はGCSへエクスポートを試すので、エクスポート先としてGCSのバケットを作っておきます。
ナビゲーションメニューより、Storageを開き、[バケットを作成]をクリックします。

名前、ストーレジクラス、リージョンなどを入力して[作成]をクリックします。

これでログのエクスポート先の準備として、GCSのバケットの作成はOKです。

もちろん、既に作成済のバケットを使うことも可能です。

6-2. エクスポートの設定

次は作成したGCSのバケットにログをエクスポートするために「どれをどこにエクスポート」の設定に相当する「シンク」というものを作成します。
シンクを作成、削除、変更するためには、プロジェクトでオーナーまたはLogging / ログ構成書き込みのどちらかの IAM 役割も必要です。詳細については、こちらをご覧ください。

シンクには、以下2点の設定によって「どれ」を「どこに」エクスポートするかを設定します。

  • フィルタ:「どれ」をエクスポートするかに対するログエントリを選択
  • エクスポート先:「どこに」エスクポートするかに対する3つのエクスポート先(Cloud Storage、BigQuery、Cloud Pub/Sub)の中でどれかを選択

ナビゲーションメニューより、Loggingを開きます。メニューからエクスポートを開き[エクスポートを作成]をクリックします。

①フィルタを設定

まずは「どれ」に対するフィルタを設定します。
特にフィルタを設定せず、全てのログをエクスポートする場合は、フィルタは空で良いでしょう。

ログレベルを指定してエクスポートする場合は、以下のようにログレベルを選択します。

より高度なログフィルタをかける場合は、フィルタボックスの右側にある[▼]メニューをクリックし[高度なフィルタに変換]をクリックしてフィルタを指定します。

②シンクの設定

次は「どこに」に対するシンクを設定します。画面右側の[エクスポートの編集]パネルに以下を入力します。

  • シンク名:シンクに割り当てるIDです。
  • シンクサービス:エクスポート先のサービスを選択します。
  • シンクのエクスポート先:エクスポートされたログを受信する特定のバケットを選択します。

シンク名の入力しましょう。

シンクサービスを選択します。

選択メニューから[Cloud Storage]を選択します。

シンクのエクスポート先を選択します。

前項 7-1. でエクスポート先として作成しておいたバケット(test-log-sink-01)を選択します。

ちなみに、下図のアイコンをクリックすると、バケットの作成画面が開き
新規でバケットを作成することもできます。

今回はせっかくバケットを前もって作成しておいたのでそれを使いましょう。
一通り入力が済んだら[シンクを作成]をクリックします。

設定が保存されるまでしばし待ちましょう。

シンク作成が完了すると、下記の作成完了画面が表示されます。

作成されたシンクを確認しましょう。

6-3. エクスポートの確認

実際にログがGCSのバケットに溜まるかどうか確認します。
ログのエクスポート先が、GCSの場合は、公式ドキュメントによると

Cloud Storage バケットへのログエントリの保存は 1 時間に 1 回、一括して行われます。最初のエントリが表示されるまでに 2~3 時間かかることがあります。

だそうです。一旦エントリが保存されるまで待ちましょう。
ちなみに、GCS 以外の BigQuery や Cloud Pub/Sub の場合は、GCS と違って即時送信されるようです。

2, 3時間待つと GCS の作成したバケットに Stackdriver Logging のログが集約されたJSONファイルで出力されていることが確認できると思います。

作成されたフォルダをどんどん辿っていきますと。。。

1時間単位でログがまとまったJSONファイルが出力されていることがわかります。
ちなみに test-log-sink-01 バケットの配下のフォルダは自動で作られます。
これで過去のログも簡単に探せるので安心ですね^^

[参考] シンクの編集、削除、フィルタ表示

ご参考までに、作成したシンクの編集、削除、フィルタ表示について説明します。
下記画面のようにシンクの右側にあるメニューボタンをクリックすると、
シンクの編集、削除、フィルタ表示ができます。

シンクの編集


[シンクを編集]をクリックするとエクスポートの編集画面が開き、フィルタやシンク設定の編集ができます。

シンクの削除

シンクを削除したい時は、
削除したいシンクにチェックを入れ、画面上部にある[削除]ボタンをクリックするか、
あるいは、削除したいシンクの右側にあるメニューボタンから[シンクを削除]をクリックします。


削除したシンクはリストから消え、「シンクを削除しました。」のメッセージが表示されます。

フィルタを表示

シンクのフィルタをみたい時は、[フィルタを表示]をクリックします。


ここで[編集]をクリックすると編集画面が開き、フィルタやシンク設定の編集ができます。

7. まとめ

今回は Stackdriver Logging のログを GCS へエクスポートすることを試してみました。
コンソール画面で何回かクリックするだけで、集約されたログをエクスポートすることができました。GCSへのエクスポートはログデータをアーカイブしておくことで、費用を抑えながら長期間データを保存できます。また、GCSにアップしたタイミングで連携してgz圧縮するともっと保存コストを抑えることが出来ます。

GCSの他に、高度な分析や SQL のようなクエリを実行したい場合は BigQuery へ、サードパーティのソリューションや任意のエンドポイントにログデータをストリーミングしたい場合は Cloud Pub/Sub を経由するなど、用途に応じてエクスポート先を設定すると良いでしょう。

GCSの他 BigQuery、Cloud Pub/Sub へエクスポートする方法については、次回ご紹介しますのでご期待ください。

次の記事を読み込んでいます
次の記事を読み込んでいます
次の記事を読み込んでいます