Pub/Sub に転送されたログの表示

このドキュメントでは、Cloud Logging から Pub/Sub トピックにルーティングされたログエントリを見つける方法について説明します。ルーティングは、ほぼリアルタイムで発生します。 Pub/Sub を使用して Cloud Logging ログをサードパーティ ソフトウェアに統合することをおすすめします。

Pub/Sub トピックにログエントリのルーティングを行うと、Logging は各ログエントリを受け取るとすぐに、そのログエントリを Pub/Sub メッセージとして公開します。通常、ルーティングされたログエントリは、Logging に到着してから数秒以内に使用可能になり、99% のログエントリが 60 秒未満で使用可能になります。

始める前に

シンクのコンセプトについては、ルーティングとストレージ モデルの概要: シンクをご覧ください。

ログエントリを転送する方法については、サポートされている宛先にログを転送するをご覧ください。

ログを表示

Pub/Sub でストリーミングされるときにログを表示する方法は次のとおりです。

  1. Google Cloud コンソールの トピック ページに移動します。

    [トピック] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Pub/Sub] である結果を選択します。

  2. ログシンクで使用されているトピックのサブスクリプションを検索または作成して、そこからログエントリを pull します。新しいログエントリの公開には時間がかかる場合があります。

ログの構成

各メッセージの data フィールドは、Base64 エンコードの LogEntry オブジェクトです。たとえば、Pub/Sub サブスクライバーが、ログエントリを受け取るトピックから次のようなオブジェクトを pull したとします。ここで示すオブジェクトに含まれているリストにはメッセージが 1 つしかありませんが、複数のログエントリがある場合は、Pub/Sub が複数のメッセージを返すことがあります。この例では、見やすくするために data 値(約 600 字)と ackId 値(約 200 字)を短縮しています。

{
 "receivedMessages": [
  {
   "ackId": "dR1JHlAbEGEIBERNK0EPKVgUWQYyODM...QlVWBwY9HFELH3cOAjYYFlcGICIjIg",
   "message": {
    "data": "eyJtZXRhZGF0YSI6eyJzZXZ0eSI6Il...Dk0OTU2G9nIjoiaGVsbG93b3JsZC5sb2cifQ==",
    "attributes": {
     "compute.googleapis.com/resource_type": "instance",
     "compute.googleapis.com/resource_id": "123456"
    },
    "messageId": "43913662360"
   }
  }
 ]
}

data フィールドをデコードしてフォーマットすると、次のような LogEntry オブジェクトを取得できます。

{
  "log": "helloworld.log",
  "insertId": "2015-04-15|11:41:00.577447-07|10.52.166.198|-1694494956",
  "textPayload": "Wed Apr 15 20:40:51 CEST 2015 Hello, world!",
  "timestamp": "2015-04-15T18:40:56Z",
  "labels": {
    "compute.googleapis.com\/resource_type": "instance",
    "compute.googleapis.com\/resource_id": "123456"
  },
  "severity": "WARNING"
  }
}

サードパーティと Pub/Sub の統合

ログエントリを Pub/Sub トピックにルーティングします。サードパーティは、同じトピックにサブスクライブすることでログエントリを受信します。Logging では、Splunk や Datadog などのサードパーティとロギングを統合できます。統合の最新リストについては、Google Cloud Observability 統合のパートナーをご覧ください。

統合を行うには、次の方法と同様のことをする必要があります。

  1. ログエントリの発生元のプロジェクトで、デフォルトのサブスクリプションを使用して以下のように Pub/Sub トピックを作成します。

    1. Pub/Sub API を有効にします。

      Enable the API

    2. Google Cloud コンソールの トピック ページに移動します。

      [トピック] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [Pub/Sub] である結果を選択します。

    3. [トピックを作成] をクリックします。

    4. [トピック ID] フィールドに、トピックの ID を入力します。例: projects/my-project-id/topics/my-pubsub-topic

      トピックに送信される各メッセージは、Pub/Sub メッセージ attributes でルーティングされたログエントリのタイムスタンプを含みます。例:

      "attributes": {
        "logging.googleapis.com/timestamp": "2024-07-01T00:00:00Z"
      }
      
    5. [デフォルトのサブスクリプションを追加] オプションは、そのまま保持します。他のオプションは選択しないでください。

    6. [トピックを作成] をクリックします。

  2. ログエントリの発生元のプロジェクトで、ログエントリをトピックにルーティングするように Logging を構成します。

    1. Google Cloud コンソールで、[ログルーター] ページに移動します。

      [ログルーター] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [Logging] である結果を選択します。

    2. [シンクを作成] をクリックし、シンクの名前と説明を入力して [次へ] をクリックします。
    3. [シンクサービス] メニューで、[Cloud Pub/Sub トピック] を選択し、Pub/Sub トピックを選択して、[次へ] をクリックします。
    4. シンクに含めるログエントリを選択し、[次へ] をクリックします。
    5. 省略可: 除外するログエントリを選択します。
    6. [シンクを作成] をクリックします。

      シンクが作成されましたというメッセージを含むダイアログが表示されます。このメッセージは、シンクが、今後一致するログエントリを選択した宛先に転送する権限付きで正常に作成されたことを意味します。

    7. Pub/Sub パブリッシャー(roles/pubsub.publisherのロールをシンクの書き込み ID に付与します。書き込み ID の取得とロールの付与について詳しくは、宛先の権限を設定するをご覧ください。

    Cloud Logging がログエントリを Pub/Sub トピックに送信できるようになりました。

  3. サブスクリプションを作成します。

    たとえば、Dataflow を使用して Pub/Sub トピックからデータを pull し、Datadog に送信する場合は、次の 2 つのステップを行う必要があります。

    1. サービス アカウントを作成または取得し、トピックへのサブスクライブに必要な IAM ロールを付与します。サービス アカウントには、少なくとも次のロールが必要です。

      詳細については、次のドキュメントをご覧ください。

    2. テンプレートからジョブを作成し、そのジョブを実行します。この例では、Pub/Sub to Datadog テンプレートを使用します。

直ちにサードパーティでのログエントリの受信が開始されます。

Pub/Sub を使用した一般的なログ ルーティング シナリオの詳細については、Cloud Logging データのエクスポート シナリオ: Splunk をご覧ください。

トラブルシューティング

シンクの宛先にログエントリがないように見える場合や、シンクがログエントリを正しくルーティングしていないと思われる場合は、ログのルーティングのトラブルシューティングをご覧ください。

料金

Cloud Logging では、サポートされている宛先へのログの転送で料金を請求されることはありませんが、宛先での料金が発生する場合があります。_Required ログバケットを除き、Cloud Logging では、ログバケットへのログのストリーミングと、ログバケットのデフォルト保持期間よりも長いストレージの料金が請求されます。

Cloud Logging では、ログのコピー、ログスコープの定義、またはログ エクスプローラまたは [ログ分析] ページを介して発行されたクエリには課金されません。

詳細については、次のドキュメントをご覧ください。