はじめに

この記事では、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 トピックとサブスクリプションを作成します。

  1. Google Cloud コンソールで [Pub/Sub] > [トピック] に移動し、「トピックを作成」をクリックします。
  2. 任意の「トピック ID」)を入力し、「作成」をクリックします。他の設定はデフォルトのままで構いません。
  3. 作成したトピックの詳細画面に移動し、「サブスクリプション」タブを開いて「サブスクリプションを作成」をクリックします。
  4. 以下の設定でサブスクリプションを作成します。
    • サブスクリプション ID: 任意の ID
    • 配信タイプ: Push を選択
    • エンドポイント URL: ステップ1でコピーした New Relic の Ingest URL を貼り付けます。
    • その他の設定(確認応答期限など)は必要に応じて調整してください。
    • 設定後、「作成」をクリックします。

ステップ3: Google Cloud でログルーターシンクを作成する

最後に、Cloud SQL のエラーログを指定した Pub/Sub トピックに転送するためのログルーターシンクを作成します。

  1. Google Cloud コンソールで [Logging] > [ログルーター] に移動し、「シンクを作成」をクリックします。
  2. シンクの詳細を設定します。
    • シンク名: 任意の名前
    • シンクサービス: Cloud Pub/Sub トピック を選択
    • シンクの宛先: ステップ2で作成した Pub/Sub トピッ を選択します。
    • 「次へ」をクリックします。
  3. シンクに含めるログ(転送するログ)のフィルタを設定します。以下のようなクエリを入力し、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

  4. 設定が完了したら、「シンクを作成」をクリックします。
  5. シンクが作成されると、ログを 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 上で一元的に監視・分析できるようになり、インシデント発生時の状況把握や原因究明を迅速化できます。

ぜひ、この設定を活用して、システムのオブザーバビリティ向上にお役立てください。

参考情報