このドキュメントでは、Cloud Logging から Pub/Sub トピックにルーティングされたログエントリを見つける方法について説明します。ルーティングは、ほぼリアルタイムで発生します。 Pub/Sub を使用して Cloud Logging ログをサードパーティ ソフトウェアに統合することをおすすめします。
Pub/Sub トピックにログエントリのルーティングを行うと、Logging は各ログエントリを受け取るとすぐに、そのログエントリを Pub/Sub メッセージとして公開します。通常、ルーティングされたログエントリは、Logging に到着してから数秒以内に使用可能になり、99% のログエントリが 60 秒未満で使用可能になります。
始める前に
シンクのコンセプトについては、ルーティングとストレージ モデルの概要: シンクをご覧ください。
ログエントリを転送する方法については、サポートされている宛先にログを転送するをご覧ください。
ログを表示
Pub/Sub でストリーミングされるときにログを表示する方法は次のとおりです。
-
Google Cloud コンソールの トピック ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Pub/Sub] である結果を選択します。
ログシンクで使用されているトピックのサブスクリプションを検索または作成して、そこからログエントリを 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 統合のパートナーをご覧ください。
統合を行うには、次の方法と同様のことをする必要があります。
ログエントリの発生元のプロジェクトで、デフォルトのサブスクリプションを使用して以下のように Pub/Sub トピックを作成します。
Pub/Sub API を有効にします。
-
Google Cloud コンソールの トピック ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Pub/Sub] である結果を選択します。
[トピックを作成] をクリックします。
[トピック ID] フィールドに、トピックの ID を入力します。例:
projects/my-project-id/topics/my-pubsub-topic
トピックに送信される各メッセージは、Pub/Sub メッセージ
attributes
でルーティングされたログエントリのタイムスタンプを含みます。例:"attributes": { "logging.googleapis.com/timestamp": "2024-07-01T00:00:00Z" }
[デフォルトのサブスクリプションを追加] オプションは、そのまま保持します。他のオプションは選択しないでください。
[トピックを作成] をクリックします。
ログエントリの発生元のプロジェクトで、ログエントリをトピックにルーティングするように Logging を構成します。
-
Google Cloud コンソールで、[ログルーター] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] である結果を選択します。
- [シンクを作成] をクリックし、シンクの名前と説明を入力して [次へ] をクリックします。
- [シンクサービス] メニューで、[Cloud Pub/Sub トピック] を選択し、Pub/Sub トピックを選択して、[次へ] をクリックします。
- シンクに含めるログエントリを選択し、[次へ] をクリックします。
- 省略可: 除外するログエントリを選択します。
[シンクを作成] をクリックします。
シンクが作成されましたというメッセージを含むダイアログが表示されます。このメッセージは、シンクが、今後一致するログエントリを選択した宛先に転送する権限付きで正常に作成されたことを意味します。
Pub/Sub パブリッシャー(
roles/pubsub.publisher
)のロールをシンクの書き込み ID に付与します。書き込み ID の取得とロールの付与について詳しくは、宛先の権限を設定するをご覧ください。
Cloud Logging がログエントリを Pub/Sub トピックに送信できるようになりました。
-
サブスクリプションを作成します。
たとえば、Dataflow を使用して Pub/Sub トピックからデータを pull し、Datadog に送信する場合は、次の 2 つのステップを行う必要があります。
サービス アカウントを作成または取得し、トピックへのサブスクライブに必要な IAM ロールを付与します。サービス アカウントには、少なくとも次のロールが必要です。
- Pub/Sub サブスクライバー(
roles/pubsub.subscriber
) - Dataflow 管理者 (
roles/dataflow.admin
) - Dataflow ワーカー(
roles/dataflow.worker
)
詳細については、次のドキュメントをご覧ください。
- Pub/Sub サブスクライバー(
テンプレートからジョブを作成し、そのジョブを実行します。この例では、Pub/Sub to Datadog テンプレートを使用します。
直ちにサードパーティでのログエントリの受信が開始されます。
Pub/Sub を使用した一般的なログ ルーティング シナリオの詳細については、Cloud Logging データのエクスポート シナリオ: Splunk をご覧ください。
トラブルシューティング
シンクの宛先にログエントリがないように見える場合や、シンクがログエントリを正しくルーティングしていないと思われる場合は、ログのルーティングのトラブルシューティングをご覧ください。
料金
Cloud Logging では、サポートされている宛先へのログの転送で料金を請求されることはありませんが、宛先での料金が発生する場合があります。_Required
ログバケットを除き、Cloud Logging では、ログバケットへのログのストリーミングと、ログバケットのデフォルト保持期間よりも長いストレージの料金が請求されます。
Cloud Logging では、ログのコピー、[ログ エクスプローラ] ページまたは [ログ分析] ページを介して発行されたクエリには課金されません。
詳細については、次のドキュメントをご覧ください。
- Cloud Logging の料金概要
宛先の費用:
- VPC フローログの生成料金は、Cloud Logging から Virtual Private Cloud フローログを送信して除外した後に適用されます。