このドキュメントでは、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 の統合
Logging では、Splunk などのサードパーティとロギングを統合できます。統合の最新リストについては、Google Cloud Observability 統合のパートナーをご覧ください。
Pub/Sub トピックからログをルーティングすると、サードパーティは同じトピックにサブスクライブすることでログを受信できます。
統合を行うには、次の方法と同様のことをする必要があります。
Google Cloud プロジェクトから作成した Google Cloud サービス アカウント名をサードパーティから取得します。例:
12345-xyz@developer.gserviceaccount.com
この名前を使用して、ログを受け取る権限をサードパーティに付与します。ログを含むプロジェクトで、Pub/Sub API を有効にします。
-
Pub/Sub API を有効にします。
Pub/Sub トピックを作成します。トピックは、ログシンクを構成するときに、次の手順で作成できます。
-
Google Cloud コンソールの トピック ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Pub/Sub] である結果を選択します。
[トピックの作成] を選択し、トピック名を入力します。例:
projects/my-project-id/topics/my-pubsub-topic
。このトピックにログをルーティングします。トピックに送信される各メッセージは、Pub/Sub メッセージ
attributes
でルーティングされたログエントリのタイムスタンプを含みます。例:"attributes": { "logging.googleapis.com/timestamp": "2018-10-01T00:00:00Z" }
[トピックを作成] をクリックします。
Logging からそのトピックにログをルーティングすることを承認します。手順については、エクスポート先の権限を設定するをご覧ください。
-
サードパーティがトピックをサブスクライブすることを承認します。
-
Google Cloud コンソールの トピック ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Pub/Sub] である結果を選択します。
- トピックを選択
- [権限] を選択します。
- [権限を追加] を選択し、サードパーティのサービス アカウント名を入力します。
- [ロールを選択] メニューの [Pub/Sub サブスクライバー] を選択します。
- [保存] をクリックします。
-
サードパーティに Pub/Sub トピック名を知らせます。たとえば、
projects/my-project-number/topics/my-pubsub-topic
。ルーティングを開始する前に、サードパーティでそのトピックをサブスクライブする必要があります。サードパーティがトピックをサブスクライブしたら、ログのルーティングを開始します。
-
Google Cloud コンソールで、[ログルーター] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] である結果を選択します。
- 転送するログを含むプロジェクトで、[シンクを作成] をクリックします。
- シンクの名前と説明を入力し、[次へ] をクリックします。
- [シンクサービス] メニューで、[Cloud Pub/Sub] を選択します。
- [Cloud Pub/Sub トピック] メニューで、サードパーティがサブスクライブしている Pub/Sub トピックを選択し、[次へ] をクリックします。
- シンクに含めるログを選択し、[次へ] をクリックします。
- (省略可)除外するログを選択します。
[シンクを作成] をクリックします。
シンクが作成されましたというメッセージを含むダイアログが表示されます。このメッセージは、シンクが、選択された宛先に今後一致するログを書き込む権限付きで正常に作成されたことを意味します。
-
直ちにサードパーティでのログエントリの受信が開始されます。
Pub/Sub を使用した一般的なログ ルーティング シナリオの詳細については、Cloud Logging データのエクスポート シナリオ: Splunk をご覧ください。
トラブルシューティング
シンクの宛先にログがないように見える場合や、シンクがログを正しくルーティングしていないと思われる場合は、ログのルーティングのトラブルシューティングをご覧ください。
料金
Cloud Logging では、サポートされている宛先へのログの転送で料金を請求されることはありませんが、宛先での料金が発生する場合があります。_Required
ログバケットを除き、Cloud Logging では、ログバケットへのログのストリーミングと、ログバケットのデフォルト保持期間よりも長いストレージの料金が請求されます。
Cloud Logging では、ログのコピー、[ログ エクスプローラ] ページまたは [ログ分析] ページを介して発行されたクエリには課金されません。
詳細については、次のドキュメントをご覧ください。
- Cloud Logging の料金概要
宛先の費用:
- VPC フローログの生成料金は、Cloud Logging から Virtual Private Cloud フローログを送信して除外した後に適用されます。