Creating Custom Metrics in Google Cloud with Python
1 min readSep 19, 2020
In this post we’ll see how we can create and write data to custom metrics in Google Cloud.
Pre-requisite: Install required Python package using pip3 install google-cloud-monitoring
Script to create a custom metric: Provide your project id as project_id variable
#pip3 install google-cloud-monitoring
from google.cloud import monitoring_v3
project_id=""
client = monitoring_v3.MetricServiceClient()
project_name = client.project_path(project_id)
descriptor = monitoring_v3.types.MetricDescriptor()
descriptor.type = 'custom.googleapis.com/failed_data_proc_jobs' + '20'
descriptor.metric_kind = (
monitoring_v3.enums.MetricDescriptor.MetricKind.GAUGE)
descriptor.value_type = (
monitoring_v3.enums.MetricDescriptor.ValueType.DOUBLE)
descriptor.description = 'Custom metric for failed dataproc jobs'
descriptor = client.create_metric_descriptor(project_name, descriptor)
print('Created {}.'.format(descriptor.name))
This will create a custom metric named failed_data_proc_jobs20.
Script to write data to the custom metric we just created: Provide your project id as project_id variable
#pip3 install google-cloud-monitoring
import time
from google.cloud import monitoring_v3
project_id=""
RANDOM_SUFFIX='20'
client = monitoring_v3.MetricServiceClient()
project_name = client.project_path(project_id)
series = monitoring_v3.types.TimeSeries()
series.metric.type='custom.googleapis.com/failed_data_proc_jobs' + RANDOM_SUFFIX
series.resource.type = 'global'
point = series.points.add()
point.value.double_value = 6
now = time.time()
point.interval.end_time.seconds = int(now)
point.interval.end_time.nanos = int((now - point.interval.end_time.seconds) * 10**9)
client.create_time_series(project_name, [series])
This will write some data to our failed_data_proc_jobs20 metric.Let’s check that in Stackdriver monitoring console.