This page describes how to use Service Infrastructure to enable managed services to generate monitoring data to send to service producer and service consumer projects. Monitoring provides visibility into the performance, uptime, and overall health of individual managed services.
The Service Control API accepts metrics, which it batches and forwards to Cloud Monitoring. Monitoring ingests these metrics and generates insights via dashboards, charts, and alerts.
Whereas Monitoring alone allows a managed service to generate monitoring data for use by you as a developer of the managed service, the Service Control API also lets you generate monitoring data which is intended for your users. This makes it possible for your users to understand and diagnose use of your managed service.
Note, this guide is for monitoring metrics defined by managed services. Monitoring Custom Metrics cannot be reported via Service Control API. To report Custom Metrics, you need to follow the Monitoring guide.
Configuring monitoring
Before you send monitoring data to the Service Control API, you need to specify three different bits of information in your service configuration:
Monitored resources: A monitored resource represents a cloud entity that produces some monitoring data. To define a monitored resource in the service configuration, see monitored_resource.proto for the technical specification. We strongly recommend you to use the same monitored resource for both monitoring and logging.
Metrics: You can report one or more metrics. Each metric represents a single piece of state whose value is tracked over time. See metric.proto for the technical specification to define a metric.
Monitoring configuration: Lets you specify the metrics associated with individual monitored resources and the service producer or service consumer project where each metric should be sent. See monitoring.proto for details.
The following example of service configuration defines a monitored resource and a metric.
# 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 definition of the metrics to be used. metrics: - name: library.appspot.com/book/num_overdue display_name: Books Overdue description: The current number of overdue books. launch_stage: ALPHA metric_kind: GAUGE value_type: INT64 unit: 1 - name: library.googleapis.com/book/returned_count display_name: Books Returned description: The count of books that have been returned. launch_stage: ALPHA metric_kind: DELTA value_type: INT64 unit: 1 # The monitoring configuration. monitoring: producer_destinations: - monitored_resource: library.appspot.com/Branch metrics: - library.googleapis.com/book/returned_count consumer_destinations: - monitored_resource: library.appspot.com/Branch metrics: - library.appspot.com/book/num_overdue
After you have authored such configuration, you will need to follow Managing Service Configurations and Managing Service Rollouts to push the service configuration to Service Management API, which will configure the monitored resource and metric definitions in Cloud Monitoring.
Reporting metrics
After the service configuration push finishes, you can call the Service Control API to report metrics. The following example uses the gcurl
command to demonstrate the call. For information on how to set this up, see Getting Started with the Service Control API.
gcurl -d "{ 'operations': [ { 'operationId': '8356d3c5-f9b5-4274-b4f9-079a3731e6e5', 'operationName': 'Return books', 'consumerId': 'projects/library-consumer', 'startTime': '`date +%FT%T%:z`', 'endTime': '`date +%FT%T%:z --date="5 seconds"`', 'labels': { 'location': 'us-east1', 'branch_id': 'my-test-library-branch' }, 'metricValueSets': [ { 'metricName': 'library.googleapis.com/book/returned_count', 'metricValues': [ { 'int64Value': '23' } ] } ] } ] }" https://servicecontrol.googleapis.com/v1/services/endpointsapis.appspot.com:report