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 の統合

Logging では、Splunk などのサードパーティとロギングを統合できます。統合の最新リストについては、Google Cloud Observability 統合のパートナーをご覧ください。

Pub/Sub トピックからログをルーティングすると、サードパーティは同じトピックにサブスクライブすることでログを受信できます。

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

  1. Google Cloud プロジェクトから作成した Google Cloud サービス アカウント名をサードパーティから取得します。例: 12345-xyz@developer.gserviceaccount.comこの名前を使用して、ログを受け取る権限をサードパーティに付与します。

  2. ログを含むプロジェクトで、Pub/Sub API を有効にします。

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

    API を有効にする

  4. Pub/Sub トピックを作成します。トピックは、ログシンクを構成するときに、次の手順で作成できます。

    1. Google Cloud コンソールのナビゲーション パネルで次の操作を行います。Pub/Sub を選択し、次にトピックを選択します。

      [トピック] に移動

    2. [トピックの作成] を選択し、トピック名を入力します。例: projects/my-project-id/topics/my-pubsub-topic。このトピックにログをルーティングします。

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

      "attributes": {
        "logging.googleapis.com/timestamp": "2018-10-01T00:00:00Z"
      }
      
    3. [トピックを作成] をクリックします。

    4. Logging からそのトピックにログをルーティングすることを承認します。手順については、エクスポート先の権限を設定するをご覧ください。

  5. サードパーティがトピックをサブスクライブすることを承認します。

    1. Google Cloud コンソールのナビゲーション パネルで次の操作を行います。Pub/Sub を選択し、次にトピックを選択します。

      [トピック] に移動

    2. トピックを選択
    3. [権限] を選択します。
    4. [権限を追加] を選択し、サードパーティのサービス アカウント名を入力します。
    5. [ロールを選択] メニューの [Pub/Sub サブスクライバー] を選択します。
    6. [保存] をクリックします。
  6. サードパーティに Pub/Sub トピック名を知らせます。たとえば、projects/my-project-number/topics/my-pubsub-topic。ルーティングを開始する前に、サードパーティでそのトピックをサブスクライブする必要があります。

  7. サードパーティがトピックをサブスクライブしたら、ログのルーティングを開始します。

    1. Google Cloud コンソールのナビゲーション パネルで [ロギング] を選択してから、[ログルーター] を選択します。

      ログルーターに移動

    2. 転送するログを含むプロジェクトで、[シンクを作成] をクリックします。
    3. シンクの名前と説明を入力し、[次へ] をクリックします。
    4. [シンクサービス] メニューで、[Cloud Pub/Sub] を選択します。
    5. [Cloud Pub/Sub トピック] メニューで、サードパーティがサブスクライブしている Pub/Sub トピックを選択し、[次へ] をクリックします。
    6. シンクに含めるログを選択し、[次へ] をクリックします。
    7. (省略可)除外するログを選択します。
    8. [シンクを作成] をクリックします。

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

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

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

トラブルシューティング

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

料金

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

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

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