ログの報告

このページでは、Service Infrastructure を使用してマネージド サービスサービス プロデューサー プロジェクトとサービス ユーザー プロジェクトの両方にログを送信できるようにする方法について説明します。

Service Control API は構造化ログデータと非構造化ログデータのどちらも受け入れ、それをバッチ処理して Cloud Logging に転送します。開発者とマネージド サービスのユーザーはいずれも、Google Cloud コンソールと Google API Console を使用してログデータを表示し、Cloud Logging API を使用してプログラムでデータにアクセスできます。

Logging のみを使用する場合、マネージド サービスはマネージド サービスの開発者を対象としたログを生成します。一方、Service Control API ではユーザーを対象としたログも生成できます。これにより、ユーザーがマネージド サービスの使用状況を理解し、診断できるようになります。

ログの構成

ログを Service Control API に送信する前に、サービス構成で 3 種類の情報を指定する必要があります。

  • ログ名: 1 つ以上の異なるログを保持できます。各ログは一意の名前で識別します。ログを別個にすることで異なるタイプのデータを分離すると、データの可視化や使用が容易になる場合があります。

  • モニタリング対象リソース: モニタリング対象リソースは、ロギングデータを生成するクラウド エンティティを表します。サービス構成でモニタリング対象リソースを定義するには、技術仕様用の monitored_resource.proto をご覧ください。モニタリングとロギングの両方に同じモニタリング対象リソースを使用することを強くおすすめします。

  • ログ構成: ログストリームに関連付けられているモニタリング対象リソースと各ログの送信先(サービス プロデューサー プロジェクトまたはサービス ユーザー プロジェクト)を指定できます。 ログの関連付けを構成するには、技術仕様用の logging.proto をご覧ください。

次のサービス構成の例では、ログ activity_log がサービス ユーザーに送信されるように構成されています。

# The definition of the monitored resource to be used.
monitored_resources:
- type: library.appspot.com/Branch
  description: A library branch
  display_name: Library Branch
  launch_stage: ALPHA
  labels:
  - key: resource_container
    description: The Google Cloud resource container (ie. project id) for
    the branch.
  - key: location
    description: The Google Cloud region the branch is located.
  - key: branch_id
    description: The ID of the branch.

# The log name to be used.
logs:
- name: activity_log

# The logging configuration.
logging:
  consumer_destinations:
  - monitored_resource: library.appspot.com/Branch
    logs:
    - activity_log

このような構成を作成したら、サービス構成の管理サービス ロールアウトの管理に従って、サービス構成を、Cloud Logging でモニタリング対象リソースを構成する Service Management API に push します。

ログの報告

サービス構成の push が終了した後、Service Control API を呼び出してログエントリを報告できます。次の例は、gcurl コマンドを使用した呼び出しを示しています。この設定方法については、Service Control API スタートガイドをご覧ください。

gcurl -d "{
  'operations': [ {
    'operationId': 'e8bf36ef-f9b5-4274-b4f9-079a3731e6e5',
    'operationName': 'New book arrived',
    'consumerId': 'projects/library-consumer',
    'startTime': '`date +%FT%T%:z`',
    'endTime': '`date +%FT%T%:z`',
    'labels': {
      'location': 'us-east1',
      'branch_id': 'my-test-library-branch'
    },
    'logEntries': [ {
      'severity': 'INFO',
      'textPayload': 'new book arrived',
      'name': 'activity_log'
    } ]
  } ]
}" https://servicecontrol.googleapis.com/v1/services/endpointsapis.appspot.com:report