前編では Stackdriver Logging のログのエクスポートに関する全体的な概要とGCSへエクスポートする方法についてご紹介いたしました。
今回は Stackdriver Logging のログを BigQuery や Cloud Pub/Sub にエクスポートする方法を試してみましょう。
前回はログのエクスポート先を事前に準備する必要がありましたが、
実は事前にエクスポート先を準備しておかなくても、シンク作成の時に、エクスポート先を新規で作成することができます。なので今回は、面倒な事前準備を省いた下記の手順でログのエクスポートを試してみます。
- シンクを作成
- エクスポートの確認
目次
1. BigQueryへログをエクスポートする
始める前に
BigQuery については以下をご参考ください。
・公式ドキュメント
・はじめの一歩が踏み出せない人のためのBigQuery入門
エクスポートする前にプロジェクトで BigQuery を有効にしておく必要があります。
新しいプロジェクトを作成した場合は BigQuery が自動的に有効になります。
既存のプロジェクトで BigQuery が有効になっていない場合、有効にする方法については後ほど参考として説明します。
BigQueryにも無料枠がございます。無料枠は以下の通りです。Stackdriver の無料枠と一緒に見ておくと良いでしょう。
- Stackdriver : 30日間保存されるログサイズ50GB
- BigQuery : クエリ使用量1TB, ログ保存サイズ10GB
1-1. シンクを作成
「どれをどこにエクスポート」の設定に相当する「シンク」を作成しましょう。
前回でご説明したようにシンクを作成、削除、変更するためには、プロジェクトでオーナーまたはLogging / ログ構成書き込みのどちらかの IAM 役割も必要です。詳細については、こちらをご覧ください。
ナビゲーションメニューより、Loggingを開きます。メニューからエクスポートを開き[エクスポートを作成]をクリックします。
①フィルタを設定
ログレベルを指定してエクスポートする場合は、以下のようにログレベルを選択します。
より高度なログフィルタの設定する場合は、フィルタボックスの右側にある[▼]メニューをクリックし[高度なフィルタに変換]をクリックしてフィルタを指定します。
②シンクの設定
次はエクスポート先を決めるシンクを設定します。
画面右側の[エクスポートの編集]パネルに以下を入力します。
- シンク名
- シンクサービス
- シンクのエクスポート先
シンクサービスに Bigquery を選択すると下のシンクのエクスポート先が
「BigQuery データセット選択」に変わることがわかります。
次に、シンクのエクスポート先を選択します。
ここで事前にエクスポート先として「Bigquery のデータセット」を作成しておかなくても
新規で作成できます。
「新しい BigQuery データセット を作成」画面が開きますので、BigQuery データセットの名前を入力し、[作成]をクリックします。
シンクの編集、削除、フィルタ表示ついては、前回の記事をご参考ください。
1-2. エクスポートの確認
BigQueryへログがエクスポートされているか確認しましょう。
左側のナビゲーションメニューから[BigQuery]をクリックします。
BigQuery で確認するとシンク作成時に作った stackdirver_log_sink データセットが作成されています。
stackdirver_log_sink データセットの▶︎をクリックして、作成されたテーブルが確認できます。
appengine_googleapis_com_request_log_20190829 という名前でテーブルが作成されていることが確認できます。
Stackdriver Logging のログを BigQuery へエクスポートする手順は以上となります。
BigQueryを用いてエクスポートしたログの高度な分析や SQL のようなクエリを実行できます。
BigQuery が有効になっていないと。。
Stackdriver Logging のログを BigQuery へエクスポートするためには、プロジェクトで BigQuery が有効になっている必要がありますが、有効になっていない場合シンクの作成で「新しい BigQuery データセット を作成」の時に、以下のようなエラーが出力されます。
[参考] BigQuery を有効にするには
新しいプロジェクトを作成した場合は BigQuery が自動的に有効になります。
既存のプロジェクトで BigQuery が有効になっていない場合は以下の手順で有効にしましょう。
① 左側のナビゲーションで [APIとサービス]をクリックし、[ライブラリ]をクリックします。
② 検索窓で「BigQuery API」をキーワードで検索するか、左側のカテゴリから[ビックデータ]をクリックして、[BigQuery API]に移動します。
2. Cloud Pub/Sub へログをエクスポートする
今度は Cloud Pub/Sub に Stackdriver Logging のログをエクスポートしてみましょう。
その前に料金が気になりますね。Cloud Pub/Sub にも無料枠がございますのでご安心を。
無料枠は以下の通りです。Stackdriver の無料枠と一緒に見ておくと良いでしょう。
- Stackdriver : 30日間保存されるログサイズ 50GB
- Cloud Pub/Sub : 1ヶ月あたりのメッセージ使用量10GB
2-1. シンクを作成
ナビゲーションメニューより、Loggingを開きます。メニューからエクスポートを開き[エクスポートを作成]をクリックします。
①フィルタを設定
取得したいログをフィルタリングします。フィルタとログレベルを指定しましょう。
②シンクの設定
シンクの設定の手順は、前項「BigQueryへログをエクスポートする」と同様です。
画面右側の[エクスポートの編集]パネルに以下を入力します。
- シンク名
- シンクサービス
- シンクのエクスポート先
選択メニューから[Cloud Pub/Sub]を選択します。
シンクサービスに Cloud Pub/Sub を選択すると下のシンクのエクスポート先が
「Cloud Pub/Sub トピックを選択」に変わります。
次に、シンクのエクスポート先を選択します。
事前にエクスポート先を作成しておかなくても新規で作成できます。
以下の「新しい Cloud Pub/Sub トピック を作成」画面が開きますので、Cloud Pub/Sub トピックの名前を入力し、[作成]をクリックします。
閉じるボタンで作成完了画面を閉じて、左メニューのエクスポートから、作成されたシンクを確認しましょう。
2-2. エクスポートの確認
Cloud Pub/Sub へログがエクスポートされているか確認しましょう。
左側のナビゲーションメニューから[Pub/Sub]をクリックします。
Pub/Sub で確認するとシンク作成時に作ったトピック stackdirver_log_sink が作成されていることが確認できます。
Stackdriver Logging のログが Cloud Pub/Sub に溜まるか確認するためにサブスクリプションを作成します。
作成されているトピック stackdriver_log_sink をクリックするとトピックの詳細画面が開きます。
画面下の方の「サブスクリプションを作成」ボタンをクリックします。
「サブスクリプションをトピックに追加」の画面でサブスクリプション名を入力し、[CREATE]ボタンをクリックします。
作成されたサブスクリプション log-sink をクリックしてみましょう。
サブスクリプションの詳細画面が開き、詳細内容が確認できます。
ログが溜まるかを確認するためにプルしてみましょう。
[メッセージを PULL する]をクリックします。
すると右からメッセージ画面が展開されます。[PULL]ボタンをクリックします。
想定通りログが溜まることが確認できます。
下のスクロールバーでスクロールしたり確認応答の展開ボタンをクリックすると、より詳細な内容が確認できます。
3. まとめ
前回に引き続き Stackdriver Logging のログを BigQuery や Cloud Pub/Sub へエクスポートすることを試してみました。BigQuery や Cloud Pub/Sub へエクスポートもコンソール画面で何回かクリックするだけで、簡単にログをエクスポートすることができました。これで Stackdriver Logging のログ保存期間の30日間制限を気にせずに費用を抑えながら長期間ログデータを保存できます。
前回もご説明しましたが、高度な分析や SQL のようなクエリを実行したい場合は BigQuery へ、サードパーティのソリューションや任意のエンドポイントにログデータをストリーミングしたい場合は Cloud Pub/Sub を経由するなど、用途に応じてエクスポート先を設定すると良いでしょう。