18
18
import time
19
19
import uuid
20
20
21
+ from google .api import metric_pb2 # type: ignore
22
+ from google .api import monitored_resource_pb2 # type: ignore
23
+ from google .cloud .monitoring_v3 .services .metric_service import pagers
24
+
25
+
21
26
PROJECT_ID = os .environ ["GOOGLE_CLOUD_PROJECT" ]
22
27
23
28
24
- def create_metric_descriptor (project_id ):
29
+ def create_metric_descriptor (project_id : str ) -> metric_pb2 .MetricDescriptor :
30
+ """Creates a new metric description
31
+
32
+ Args:
33
+ project_id: Google Cloud project id
34
+
35
+ Returns:
36
+ A new instance of metric description.
37
+ """
25
38
# [START monitoring_create_metric]
26
39
from google .api import label_pb2 as ga_label
27
40
from google .api import metric_pb2 as ga_metric
@@ -46,9 +59,15 @@ def create_metric_descriptor(project_id):
46
59
)
47
60
print ("Created {}." .format (descriptor .name ))
48
61
# [END monitoring_create_metric]
62
+ return descriptor
63
+
49
64
65
+ def delete_metric_descriptor (descriptor_name : str ) -> None :
66
+ """Deletes metric description
50
67
51
- def delete_metric_descriptor (descriptor_name ):
68
+ Args:
69
+ descriptor_name: Fully qualified descriptor name
70
+ """
52
71
# [START monitoring_delete_metric]
53
72
from google .cloud import monitoring_v3
54
73
@@ -58,7 +77,12 @@ def delete_metric_descriptor(descriptor_name):
58
77
# [END monitoring_delete_metric]
59
78
60
79
61
- def write_time_series (project_id ):
80
+ def write_time_series (project_id : str ) -> None :
81
+ """Writes a custom metric time series
82
+
83
+ Args:
84
+ project_id: Google Cloud project id
85
+ """
62
86
# [START monitoring_write_timeseries]
63
87
from google .cloud import monitoring_v3
64
88
@@ -69,11 +93,11 @@ def write_time_series(project_id):
69
93
series .metric .type = "custom.googleapis.com/my_metric" + str (uuid .uuid4 ())
70
94
series .resource .type = "gce_instance"
71
95
series .resource .labels ["instance_id" ] = "1234567890123456789"
72
- series .resource .labels ["zone" ] = "us-central1-f "
96
+ series .resource .labels ["zone" ] = "us-central1-c "
73
97
series .metric .labels ["TestLabel" ] = "My Label Data"
74
98
now = time .time ()
75
99
seconds = int (now )
76
- nanos = int ((now - seconds ) * 10 ** 9 )
100
+ nanos = int ((now - seconds ) * 10 ** 9 )
77
101
interval = monitoring_v3 .TimeInterval (
78
102
{"end_time" : {"seconds" : seconds , "nanos" : nanos }}
79
103
)
@@ -83,7 +107,16 @@ def write_time_series(project_id):
83
107
# [END monitoring_write_timeseries]
84
108
85
109
86
- def list_time_series (project_id ):
110
+ def list_time_series (project_id : str ) -> pagers .ListTimeSeriesPager :
111
+ """Prints CPU utilization metric collected during last 20 minutes
112
+
113
+ Args:
114
+ project_id: Google Cloud project id
115
+
116
+ Returns:
117
+ Collection of time series.
118
+ Iterating over this object will yield results and resolve additional pages automatically.
119
+ """
87
120
# [START monitoring_read_timeseries_simple]
88
121
from google .cloud import monitoring_v3
89
122
@@ -92,7 +125,7 @@ def list_time_series(project_id):
92
125
93
126
now = time .time ()
94
127
seconds = int (now )
95
- nanos = int ((now - seconds ) * 10 ** 9 )
128
+ nanos = int ((now - seconds ) * 10 ** 9 )
96
129
interval = monitoring_v3 .TimeInterval (
97
130
{
98
131
"end_time" : {"seconds" : seconds , "nanos" : nanos },
@@ -111,17 +144,27 @@ def list_time_series(project_id):
111
144
for result in results :
112
145
print (result )
113
146
# [END monitoring_read_timeseries_simple]
147
+ return results
148
+
114
149
150
+ def list_time_series_header (project_id : str ) -> pagers .ListTimeSeriesPager :
151
+ """Prints CPU utilization metric's headers collected during last 20 minutes
115
152
116
- def list_time_series_header (project_id ):
153
+ Args:
154
+ project_id: Google Cloud project id
155
+
156
+ Returns:
157
+ Collection of time series.
158
+ Iterating over this object will yield results and resolve additional pages automatically.
159
+ """
117
160
# [START monitoring_read_timeseries_fields]
118
161
from google .cloud import monitoring_v3
119
162
120
163
client = monitoring_v3 .MetricServiceClient ()
121
164
project_name = f"projects/{ project_id } "
122
165
now = time .time ()
123
166
seconds = int (now )
124
- nanos = int ((now - seconds ) * 10 ** 9 )
167
+ nanos = int ((now - seconds ) * 10 ** 9 )
125
168
interval = monitoring_v3 .TimeInterval (
126
169
{
127
170
"end_time" : {"seconds" : seconds , "nanos" : nanos },
@@ -139,9 +182,19 @@ def list_time_series_header(project_id):
139
182
for result in results :
140
183
print (result )
141
184
# [END monitoring_read_timeseries_fields]
185
+ return results
186
+
187
+
188
+ def list_time_series_aggregate (project_id : str ) -> pagers .ListTimeSeriesPager :
189
+ """Prints aggregated CPU utilization metric for last hour
142
190
191
+ Args:
192
+ project_id: Google Cloud project id
143
193
144
- def list_time_series_aggregate (project_id ):
194
+ Returns:
195
+ Collection of time series.
196
+ Iterating over this object will yield results and resolve additional pages automatically.
197
+ """
145
198
# [START monitoring_read_timeseries_align]
146
199
from google .cloud import monitoring_v3
147
200
@@ -150,7 +203,7 @@ def list_time_series_aggregate(project_id):
150
203
151
204
now = time .time ()
152
205
seconds = int (now )
153
- nanos = int ((now - seconds ) * 10 ** 9 )
206
+ nanos = int ((now - seconds ) * 10 ** 9 )
154
207
interval = monitoring_v3 .TimeInterval (
155
208
{
156
209
"end_time" : {"seconds" : seconds , "nanos" : nanos },
@@ -176,9 +229,19 @@ def list_time_series_aggregate(project_id):
176
229
for result in results :
177
230
print (result )
178
231
# [END monitoring_read_timeseries_align]
232
+ return results
179
233
180
234
181
- def list_time_series_reduce (project_id ):
235
+ def list_time_series_reduce (project_id : str ) -> pagers .ListTimeSeriesPager :
236
+ """Prints CPU utilization for last hour using reducer
237
+
238
+ Args:
239
+ project_id: Google Cloud project id
240
+
241
+ Returns:
242
+ Collection of time series.
243
+ Iterating over this object will yield results and resolve additional pages automatically.
244
+ """
182
245
# [START monitoring_read_timeseries_reduce]
183
246
from google .cloud import monitoring_v3
184
247
@@ -187,7 +250,7 @@ def list_time_series_reduce(project_id):
187
250
188
251
now = time .time ()
189
252
seconds = int (now )
190
- nanos = int ((now - seconds ) * 10 ** 9 )
253
+ nanos = int ((now - seconds ) * 10 ** 9 )
191
254
interval = monitoring_v3 .TimeInterval (
192
255
{
193
256
"end_time" : {"seconds" : seconds , "nanos" : nanos },
@@ -215,20 +278,43 @@ def list_time_series_reduce(project_id):
215
278
for result in results :
216
279
print (result )
217
280
# [END monitoring_read_timeseries_reduce]
281
+ return results
282
+
218
283
284
+ def list_metric_descriptors (project_id : str ) -> pagers .ListMetricDescriptorsPager :
285
+ """Gets a list of metric descriptions
219
286
220
- def list_metric_descriptors (project_id ):
287
+ Args:
288
+ project_id: Google Cloud project id
289
+
290
+ Returns:
291
+ Collection of metric descriptors in the project.
292
+ Iterating over this object will yield results and resolve additional pages automatically.
293
+ """
221
294
# [START monitoring_list_descriptors]
222
295
from google .cloud import monitoring_v3
223
296
224
297
client = monitoring_v3 .MetricServiceClient ()
225
298
project_name = f"projects/{ project_id } "
226
- for descriptor in client .list_metric_descriptors (name = project_name ):
299
+ descriptors = client .list_metric_descriptors (name = project_name )
300
+ for descriptor in descriptors :
227
301
print (descriptor .type )
228
302
# [END monitoring_list_descriptors]
303
+ return descriptors
304
+
305
+
306
+ def list_monitored_resources (
307
+ project_id : str ,
308
+ ) -> pagers .ListMonitoredResourceDescriptorsPager :
309
+ """Gets a list of monitored resource descriptors
229
310
311
+ Args:
312
+ project_id: Google Cloud project id
230
313
231
- def list_monitored_resources (project_id ):
314
+ Returns:
315
+ Collection of monitored resource descriptors.
316
+ Iterating over this object will yield results and resolve additional pages automatically.
317
+ """
232
318
# [START monitoring_list_resources]
233
319
from google .cloud import monitoring_v3
234
320
@@ -238,28 +324,51 @@ def list_monitored_resources(project_id):
238
324
for descriptor in resource_descriptors :
239
325
print (descriptor .type )
240
326
# [END monitoring_list_resources]
327
+ return resource_descriptors
241
328
242
329
243
- def get_monitored_resource_descriptor (project_id , resource_type_name ):
330
+ def get_monitored_resource_descriptor (
331
+ project_id : str , resource_type_name : str
332
+ ) -> monitored_resource_pb2 .MonitoredResourceDescriptor :
333
+ """Prints monitored resource description by type
334
+
335
+ Args:
336
+ project_id: Google Cloud project id
337
+ resource_type_name: a monitored resource type
338
+
339
+ Returns:
340
+ An object that describes the monitored resource
341
+ """
244
342
# [START monitoring_get_resource]
245
343
from google .cloud import monitoring_v3
246
344
247
345
client = monitoring_v3 .MetricServiceClient ()
248
346
resource_path = (
249
347
f"projects/{ project_id } /monitoredResourceDescriptors/{ resource_type_name } "
250
348
)
251
- pprint .pprint (client .get_monitored_resource_descriptor (name = resource_path ))
349
+ descriptor = client .get_monitored_resource_descriptor (name = resource_path )
350
+ pprint .pprint (descriptor )
252
351
# [END monitoring_get_resource]
352
+ return descriptor
353
+
354
+
355
+ def get_metric_descriptor (metric_name : str ) -> metric_pb2 .MetricDescriptor :
356
+ """Gets metric descriptor by type
253
357
358
+ Args:
359
+ metric_name: fully qualified descriptor name
254
360
255
- def get_metric_descriptor (metric_name ):
361
+ Returns:
362
+ An object that describes the monitored metric
363
+ """
256
364
# [START monitoring_get_descriptor]
257
365
from google .cloud import monitoring_v3
258
366
259
367
client = monitoring_v3 .MetricServiceClient ()
260
368
descriptor = client .get_metric_descriptor (name = metric_name )
261
369
pprint .pprint (descriptor )
262
370
# [END monitoring_get_descriptor]
371
+ return descriptor
263
372
264
373
265
374
if __name__ == "__main__" :
0 commit comments