はじめに
この記事では、Google Cloud の Cloud SQL で発生するエラーログを、オブザーバビリティプラットフォームである New Relic に転送するための設定手順を解説します。この設定を行うことで、New Relic 上で他のデータと合わせて ログを一元的に確認・分析できるようになり、問題発生時の迅速な検知や原因調査に役立ちます。
対象読者:
* Google Cloud および New Relic を利用している方
* 複数のログソースを New Relic で一元管理したい方
ログ転送方式について:
Google Cloud から New Relic へログを転送する方法はいくつかありますが、今回は Google Cloud のログルーターと Pub/Sub (Push サブスクリプション) を利用する、比較的設定が簡単な「ヘッダーレス API」方式を採用します。この方式は、ログ量が膨大でなければ手軽に導入できます。(大量のログを扱う場合は、Dataflow を利用する方式も検討してください。)
この記事の流れ:
1. 前提条件の確認
2. New Relic でログ取り込み用 URL を作成
3. Google Cloud で Pub/Sub トピックとサブスクリプションを作成
4. Google Cloud でログルーターシンクを作成し、ログをルーティング
5. 動作検証
それでは、具体的な設定手順を見ていきましょう。
前提条件
- 有効な Google Cloud アカウントとプロジェクトが存在すること。
- 有効な New Relic アカウントが存在すること。
- 基本的な Google Cloud と New Relic のインテグレーション設定(Google Cloud プロジェクト情報の連携など)が完了していること。
設定手順
ステップ1: New Relic でログ取り込み用 URL を作成する
まず、Google Cloud から送信されるログを受け取るためのエンドポイントを New Relic 側で作成します。
1. New Relic の UI にログインし、[Integrations & Agents UI]へ移動します。
表示されたタイルから、「Logging」 → 「Google Cloud Platform Logs」をクリックします。
↓
2. ログ転送のセットアップ画面が表示されるので、ログを受け取りたい New Relic アカウントを選択し、「Continue」をクリックします。
3. New Relic へデータを送信するための API キー(Ingest – License Key)を選択または新規作成し、「Continue」をクリックします。
このキーが認証に使われます。
4. Google Cloud ログ用の Ingest URL が生成されます。
この URL をコピーしてください。この URL が、後ほど Google Cloud Pub/Sub で設定する宛先になります。
オプションで、この URL 経由で送信されるすべてのログに共通の属性(キーと値のペア)を追加することもできます。例えば GoogleCloud_project_id: your-project-id
のように設定すると、どの Google Cloud プロジェクトからのログか識別しやすくなります。
コピーした Ingest URL は後で使うので、メモしておきましょう。
ステップ2: Google Cloud で Pub/Sub トピックとサブスクリプションを作成する
次に、Google Cloud 側でログルーターからのログを受け取り、New Relic に Push するための Pub/Sub トピックとサブスクリプションを作成します。
- Google Cloud コンソールで [Pub/Sub] > [トピック] に移動し、「トピックを作成」をクリックします。
- 任意の「トピック ID」)を入力し、「作成」をクリックします。他の設定はデフォルトのままで構いません。
- 作成したトピックの詳細画面に移動し、「サブスクリプション」タブを開いて「サブスクリプションを作成」をクリックします。
- 以下の設定でサブスクリプションを作成します。
- サブスクリプション ID: 任意の ID
- 配信タイプ:
Push
を選択 - エンドポイント URL: ステップ1でコピーした New Relic の Ingest URL を貼り付けます。
- その他の設定(確認応答期限など)は必要に応じて調整してください。
- 設定後、「作成」をクリックします。
ステップ3: Google Cloud でログルーターシンクを作成する
最後に、Cloud SQL のエラーログを指定した Pub/Sub トピックに転送するためのログルーターシンクを作成します。
- Google Cloud コンソールで [Logging] > [ログルーター] に移動し、「シンクを作成」をクリックします。
- シンクの詳細を設定します。
- シンク名: 任意の名前
- シンクサービス:
Cloud Pub/Sub トピック
を選択 - シンクの宛先: ステップ2で作成した Pub/Sub トピッ を選択します。
- 「次へ」をクリックします。
- シンクに含めるログ(転送するログ)のフィルタを設定します。以下のようなクエリを入力し、Cloud SQL のログを転送するように設定します。
```text resource.type = "cloudsql_database" resource.labels.database_id="clp-ci-sre3:y-ishikawa-test-sql" severity = ("ALERT" OR "ERROR" OR "CRITICAL" OR "EMERGENCY" OR "WARNING") ``` このクエリは、「リソースタイプが `cloudsql_database` で、かつ database_id が`clp-ci-sre3:y-ishikawa-test-sql`、重要度が `WARNING` 以上のログ」を対象とします。
クエリの書き方の詳細は以下を確認してください。
https://cloud.google.com/logging/docs/view/logging-query-language?hl=ja - 設定が完了したら、「シンクを作成」をクリックします。
- シンクが作成されると、ログを Pub/Sub トピックに書き込むための専用のサービスアカウントが自動的に生成されます。このサービスアカウントに、対象の Pub/Sub トピックへの書き込み権限 (
roles/pubsub.publisher
) を付与する必要があります。- 作成したシンクの詳細画面で、「シンクの宛先」セクションに表示されている「書き込みサービスアカウント」のメールアドレスをコピーします。
- ステップ2で作成した Pub/Sub トピックの画面に戻り、「権限」タブを開いて「プリンシパルを追加」をクリックします。
- 「新しいプリンシパル」にコピーしたサービスアカウントのメールアドレスを入力します。
- 「ロールを割り当てる」で「Pub/Sub パブリッシャー」を選択し、「保存」をクリックします。
これで、Cloud SQL で発生したエラーログが、ログルーター → Pub/Sub トピック → New Relic へと転送されるようになりました。
動作検証
設定が正しく行われたかを確認しましょう。
手順1: Cloud SQL でエラーログを発生させる
実際に Cloud SQL でエラーを発生させてみます。テスト用のインスタンスで、存在しないユーザーでのログイン試行や、不正な SQL の実行などを行います。
手順2: Google Cloud Cloud Logging でエラーログを確認する
Google Cloud コンソールの [Logging] > [ログ エクスプローラ] で、ステップ3で設定したシンクフィルタと同じ条件でログを検索します。
resource.type = "cloudsql_database" resource.labels.database_id="clp-ci-sre3:y-ishikawa-test-sql" severity = ("ALERT" OR "ERROR" OR "CRITICAL" OR "EMERGENCY" OR "WARNING")
意図したエラーログが出力されていることを確認します。タイムスタンプやメッセージ内容を覚えておきましょう。
手順3: New Relic Logs UI で転送されたログを確認する
New Relic の UI に移動し、「Logs」を開きます。Google Cloud でログが発生してから New Relic に表示されるまで、数分の遅延が発生することがあります。
検索バーで、Google Cloud で確認したログに対応するログを探します。
Google Cloud で確認したログと同じ内容(タイムスタンプ付近、メッセージ、インスタンス ID など)のログが表示されていれば、転送設定は成功です!
まとめ
今回は、Google Cloud の Cloud SQL で発生したエラーログを、ログルーターと Pub/Sub を利用して New Relic に転送する設定手順と、その検証方法について解説しました。
この設定により、Cloud SQL のエラーログを他のシステムログやアプリケーションログと合わせて New Relic 上で一元的に監視・分析できるようになり、インシデント発生時の状況把握や原因究明を迅速化できます。
ぜひ、この設定を活用して、システムのオブザーバビリティ向上にお役立てください。
参考情報
- New Relic:
https://docs.newrelic.com/jp/docs/logs/forward-logs/google-cloud-platform-log-forwarding/ - Google Cloud Documentation:
https://cloud.google.com/logging/docs/overview?hl=ja
https://cloud.google.com/logging/docs/routing/overview?hl=ja
https://cloud.google.com/pubsub/docs/overview?hl=ja
https://cloud.google.com/logging/docs/view/logging-query-language?hl=ja