Skip to content
This repository was archived by the owner on Dec 31, 2023. It is now read-only.

Commit 201d7b3

Browse files
Update monitoring samples to use version 0.29.0 of the client library. [(#1495)](GoogleCloudPlatform/python-docs-samples#1495)
* Update monitoring samples to use version 0.29.0 of the client library. * Fix typo.
1 parent 6180e19 commit 201d7b3

File tree

5 files changed

+241
-116
lines changed

5 files changed

+241
-116
lines changed

samples/snippets/v3/cloud-client/quickstart.py

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,26 @@
1515

1616
def run_quickstart():
1717
# [START monitoring_quickstart]
18-
from google.cloud import monitoring
19-
20-
client = monitoring.Client()
21-
22-
resource = client.resource(
23-
type_='gce_instance',
24-
labels={
25-
'instance_id': '1234567890123456789',
26-
'zone': 'us-central1-f',
27-
}
28-
)
29-
30-
metric = client.metric(
31-
type_='custom.googleapis.com/my_metric',
32-
labels={}
33-
)
34-
35-
# Default arguments use endtime datetime.utcnow()
36-
client.write_point(metric, resource, 3.14)
18+
from google.cloud import monitoring_v3
19+
20+
import time
21+
22+
client = monitoring_v3.MetricServiceClient()
23+
project = 'my-project' # TODO: Update to your project ID.
24+
project_name = client.project_path(project)
25+
26+
series = monitoring_v3.types.TimeSeries()
27+
series.metric.type = 'custom.googleapis.com/my_metric'
28+
series.resource.type = 'gce_instance'
29+
series.resource.labels['instance_id'] = '1234567890123456789'
30+
series.resource.labels['zone'] = 'us-central1-f'
31+
point = series.points.add()
32+
point.value.double_value = 3.14
33+
now = time.time()
34+
point.interval.end_time.seconds = int(now)
35+
point.interval.end_time.nanos = int(
36+
(now - point.interval.end_time.seconds) * 10**9)
37+
client.create_time_series(project_name, [series])
3738
print('Successfully wrote time series.')
3839
# [END monitoring_quickstart]
3940

samples/snippets/v3/cloud-client/quickstart_test.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,30 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
import os
16+
17+
import mock
18+
import pytest
19+
1520
import quickstart
1621

1722

18-
def test_quickstart(capsys):
23+
PROJECT = os.environ['GCLOUD_PROJECT']
24+
25+
26+
@pytest.fixture
27+
def mock_project_path():
28+
"""Mock out project and replace with project from environment."""
29+
project_patch = mock.patch(
30+
'google.cloud.monitoring_v3.MetricServiceClient.'
31+
'project_path')
32+
33+
with project_patch as project_mock:
34+
project_mock.return_value = 'projects/{}'.format(PROJECT)
35+
yield project_mock
36+
37+
38+
def test_quickstart(capsys, mock_project_path):
1939
quickstart.run_quickstart()
2040
out, _ = capsys.readouterr()
2141
assert 'wrote' in out
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
google-cloud-monitoring==0.28.1
1+
google-cloud-monitoring==0.29.0

samples/snippets/v3/cloud-client/snippets.py

Lines changed: 165 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -13,126 +13,216 @@
1313
# limitations under the License.
1414

1515
import argparse
16+
import os
17+
import pprint
18+
import time
1619

17-
from google.cloud import monitoring
20+
from google.cloud import monitoring_v3
1821

1922

20-
def create_metric_descriptor():
23+
def create_metric_descriptor(project_id):
2124
# [START monitoring_create_metric]
22-
client = monitoring.Client()
23-
descriptor = client.metric_descriptor(
24-
'custom.googleapis.com/my_metric',
25-
metric_kind=monitoring.MetricKind.GAUGE,
26-
value_type=monitoring.ValueType.DOUBLE,
27-
description='This is a simple example of a custom metric.')
28-
descriptor.create()
25+
client = monitoring_v3.MetricServiceClient()
26+
project_name = client.project_path(project_id)
27+
descriptor = monitoring_v3.types.MetricDescriptor()
28+
descriptor.type = 'custom.googleapis.com/my_metric'
29+
descriptor.metric_kind = (
30+
monitoring_v3.enums.MetricDescriptor.MetricKind.GAUGE)
31+
descriptor.value_type = (
32+
monitoring_v3.enums.MetricDescriptor.ValueType.DOUBLE)
33+
descriptor.description = 'This is a simple example of a custom metric.'
34+
descriptor = client.create_metric_descriptor(project_name, descriptor)
35+
print('Created {}.'.format(descriptor.name))
2936
# [END monitoring_create_metric]
3037

3138

3239
def delete_metric_descriptor(descriptor_name):
3340
# [START monitoring_delete_metric]
34-
client = monitoring.Client()
35-
36-
descriptor = client.metric_descriptor(descriptor_name)
37-
descriptor.delete()
38-
41+
client = monitoring_v3.MetricServiceClient()
42+
client.delete_metric_descriptor(descriptor_name)
3943
print('Deleted metric descriptor {}.'.format(descriptor_name))
4044
# [END monitoring_delete_metric]
4145

4246

43-
def write_time_series():
47+
def write_time_series(project_id):
4448
# [START monitoring_write_timeseries]
45-
client = monitoring.Client()
46-
resource = client.resource(
47-
'gce_instance',
48-
labels={
49-
'instance_id': '1234567890123456789',
50-
'zone': 'us-central1-f',
51-
}
52-
)
53-
54-
metric = client.metric(
55-
type_='custom.googleapis.com/my_metric',
56-
labels={
57-
}
58-
)
59-
client.write_point(metric, resource, 3.14)
49+
client = monitoring_v3.MetricServiceClient()
50+
project_name = client.project_path(project_id)
51+
52+
series = monitoring_v3.types.TimeSeries()
53+
series.metric.type = 'custom.googleapis.com/my_metric'
54+
series.resource.type = 'gce_instance'
55+
series.resource.labels['instance_id'] = '1234567890123456789'
56+
series.resource.labels['zone'] = 'us-central1-f'
57+
point = series.points.add()
58+
point.value.double_value = 3.14
59+
now = time.time()
60+
point.interval.end_time.seconds = int(now)
61+
point.interval.end_time.nanos = int(
62+
(now - point.interval.end_time.seconds) * 10**9)
63+
client.create_time_series(project_name, [series])
6064
# [END monitoring_write_timeseries]
6165

6266

63-
def list_time_series():
67+
def list_time_series(project_id):
6468
# [START monitoring_read_timeseries_simple]
65-
client = monitoring.Client()
66-
metric = 'compute.googleapis.com/instance/cpu/utilization'
67-
query_results = client.query(metric, minutes=5)
68-
for result in query_results:
69+
client = monitoring_v3.MetricServiceClient()
70+
project_name = client.project_path(project_id)
71+
interval = monitoring_v3.types.TimeInterval()
72+
now = time.time()
73+
interval.end_time.seconds = int(now)
74+
interval.end_time.nanos = int(
75+
(now - interval.end_time.seconds) * 10**9)
76+
interval.start_time.seconds = int(now - 300)
77+
interval.start_time.nanos = interval.end_time.nanos
78+
results = client.list_time_series(
79+
project_name,
80+
'metric.type = "compute.googleapis.com/instance/cpu/utilization"',
81+
interval,
82+
monitoring_v3.enums.ListTimeSeriesRequest.TimeSeriesView.FULL)
83+
for result in results:
6984
print(result)
7085
# [END monitoring_read_timeseries_simple]
7186

7287

73-
def list_time_series_header():
88+
def list_time_series_header(project_id):
7489
# [START monitoring_read_timeseries_fields]
75-
client = monitoring.Client()
76-
metric = 'compute.googleapis.com/instance/cpu/utilization'
77-
query_results = client.query(metric, minutes=5).iter(headers_only=True)
78-
for result in query_results:
90+
client = monitoring_v3.MetricServiceClient()
91+
project_name = client.project_path(project_id)
92+
interval = monitoring_v3.types.TimeInterval()
93+
now = time.time()
94+
interval.end_time.seconds = int(now)
95+
interval.end_time.nanos = int(
96+
(now - interval.end_time.seconds) * 10**9)
97+
interval.start_time.seconds = int(now - 300)
98+
interval.start_time.nanos = interval.end_time.nanos
99+
results = client.list_time_series(
100+
project_name,
101+
'metric.type = "compute.googleapis.com/instance/cpu/utilization"',
102+
interval,
103+
monitoring_v3.enums.ListTimeSeriesRequest.TimeSeriesView.HEADERS)
104+
for result in results:
79105
print(result)
80106
# [END monitoring_read_timeseries_fields]
81107

82108

83-
def list_time_series_aggregate():
109+
def list_time_series_aggregate(project_id):
84110
# [START monitoring_read_timeseries_align]
85-
client = monitoring.Client()
86-
metric = 'compute.googleapis.com/instance/cpu/utilization'
87-
query_results = client.query(metric, hours=1).align(
88-
monitoring.Aligner.ALIGN_MEAN, minutes=5)
89-
for result in query_results:
111+
client = monitoring_v3.MetricServiceClient()
112+
project_name = client.project_path(project_id)
113+
interval = monitoring_v3.types.TimeInterval()
114+
now = time.time()
115+
interval.end_time.seconds = int(now)
116+
interval.end_time.nanos = int(
117+
(now - interval.end_time.seconds) * 10**9)
118+
interval.start_time.seconds = int(now - 3600)
119+
interval.start_time.nanos = interval.end_time.nanos
120+
aggregation = monitoring_v3.types.Aggregation()
121+
aggregation.alignment_period.seconds = 300 # 5 minutes
122+
aggregation.per_series_aligner = (
123+
monitoring_v3.enums.Aggregation.Aligner.ALIGN_MEAN)
124+
125+
results = client.list_time_series(
126+
project_name,
127+
'metric.type = "compute.googleapis.com/instance/cpu/utilization"',
128+
interval,
129+
monitoring_v3.enums.ListTimeSeriesRequest.TimeSeriesView.FULL,
130+
aggregation)
131+
for result in results:
90132
print(result)
91133
# [END monitoring_read_timeseries_align]
92134

93135

94-
def list_time_series_reduce():
136+
def list_time_series_reduce(project_id):
95137
# [START monitoring_read_timeseries_reduce]
96-
client = monitoring.Client()
97-
metric = 'compute.googleapis.com/instance/cpu/utilization'
98-
query_results = client.query(metric, hours=1).align(
99-
monitoring.Aligner.ALIGN_MEAN, minutes=5).reduce(
100-
monitoring.Reducer.REDUCE_MEAN, 'resource.zone')
101-
for result in query_results:
138+
client = monitoring_v3.MetricServiceClient()
139+
project_name = client.project_path(project_id)
140+
interval = monitoring_v3.types.TimeInterval()
141+
now = time.time()
142+
interval.end_time.seconds = int(now)
143+
interval.end_time.nanos = int(
144+
(now - interval.end_time.seconds) * 10**9)
145+
interval.start_time.seconds = int(now - 3600)
146+
interval.start_time.nanos = interval.end_time.nanos
147+
aggregation = monitoring_v3.types.Aggregation()
148+
aggregation.alignment_period.seconds = 300 # 5 minutes
149+
aggregation.per_series_aligner = (
150+
monitoring_v3.enums.Aggregation.Aligner.ALIGN_MEAN)
151+
aggregation.cross_series_reducer = (
152+
monitoring_v3.enums.Aggregation.Reducer.REDUCE_MEAN)
153+
aggregation.group_by_fields.append('resource.zone')
154+
155+
results = client.list_time_series(
156+
project_name,
157+
'metric.type = "compute.googleapis.com/instance/cpu/utilization"',
158+
interval,
159+
monitoring_v3.enums.ListTimeSeriesRequest.TimeSeriesView.FULL,
160+
aggregation)
161+
for result in results:
102162
print(result)
103163
# [END monitoring_read_timeseries_reduce]
104164

105165

106-
def list_metric_descriptors():
166+
def list_metric_descriptors(project_id):
107167
# [START monitoring_list_descriptors]
108-
client = monitoring.Client()
109-
for descriptor in client.list_metric_descriptors():
168+
client = monitoring_v3.MetricServiceClient()
169+
project_name = client.project_path(project_id)
170+
for descriptor in client.list_metric_descriptors(project_name):
110171
print(descriptor.type)
111172
# [END monitoring_list_descriptors]
112173

113174

114-
def list_monitored_resources():
175+
def list_monitored_resources(project_id):
115176
# [START monitoring_list_resources]
116-
client = monitoring.Client()
117-
for descriptor in client.list_resource_descriptors():
177+
client = monitoring_v3.MetricServiceClient()
178+
project_name = client.project_path(project_id)
179+
resource_descriptors = (
180+
client.list_monitored_resource_descriptors(project_name))
181+
for descriptor in resource_descriptors:
118182
print(descriptor.type)
119183
# [END monitoring_list_resources]
120184

121185

122-
def get_monitored_resource_descriptor(resource_type_name):
186+
def get_monitored_resource_descriptor(project_id, resource_type_name):
123187
# [START monitoring_get_resource]
124-
client = monitoring.Client()
125-
print(client.fetch_resource_descriptor(resource_type_name))
188+
client = monitoring_v3.MetricServiceClient()
189+
resource_path = client.monitored_resource_descriptor_path(
190+
project_id, resource_type_name)
191+
pprint.pprint(client.get_monitored_resource_descriptor(resource_path))
126192
# [END monitoring_get_resource]
127193

128194

129-
def get_metric_descriptor(metric_type_name):
195+
def get_metric_descriptor(metric_name):
130196
# [START monitoring_get_descriptor]
131-
client = monitoring.Client()
132-
print(client.fetch_metric_descriptor(metric_type_name))
197+
client = monitoring_v3.MetricServiceClient()
198+
descriptor = client.get_metric_descriptor(metric_name)
199+
pprint.pprint(descriptor)
133200
# [END monitoring_get_descriptor]
134201

135202

203+
class MissingProjectIdError(Exception):
204+
pass
205+
206+
207+
def project_id():
208+
"""Retreives the project id from the environment variable.
209+
210+
Raises:
211+
MissingProjectIdError -- When not set.
212+
213+
Returns:
214+
str -- the project name
215+
"""
216+
project_id = (os.environ['GOOGLE_CLOUD_PROJECT'] or
217+
os.environ['GCLOUD_PROJECT'])
218+
219+
if not project_id:
220+
raise MissingProjectIdError(
221+
'Set the environment variable ' +
222+
'GCLOUD_PROJECT to your Google Cloud Project Id.')
223+
return project_id
224+
225+
136226
if __name__ == '__main__':
137227
parser = argparse.ArgumentParser(
138228
description='Demonstrates Monitoring API operations.')
@@ -215,24 +305,25 @@ def get_metric_descriptor(metric_type_name):
215305
args = parser.parse_args()
216306

217307
if args.command == 'create-metric-descriptor':
218-
create_metric_descriptor()
308+
create_metric_descriptor(project_id())
219309
if args.command == 'list-metric-descriptors':
220-
list_metric_descriptors()
310+
list_metric_descriptors(project_id())
221311
if args.command == 'get-metric-descriptor':
222312
get_metric_descriptor(args.metric_type_name)
223313
if args.command == 'delete-metric-descriptor':
224314
delete_metric_descriptor(args.metric_descriptor_name)
225315
if args.command == 'list-resources':
226-
list_monitored_resources()
316+
list_monitored_resources(project_id())
227317
if args.command == 'get-resource':
228-
get_monitored_resource_descriptor(args.resource_type_name)
318+
get_monitored_resource_descriptor(
319+
project_id(), args.resource_type_name)
229320
if args.command == 'write-time-series':
230-
write_time_series()
321+
write_time_series(project_id())
231322
if args.command == 'list-time-series':
232-
list_time_series()
323+
list_time_series(project_id())
233324
if args.command == 'list-time-series-header':
234-
list_time_series_header()
325+
list_time_series_header(project_id())
235326
if args.command == 'list-time-series-reduce':
236-
list_time_series_reduce()
327+
list_time_series_reduce(project_id())
237328
if args.command == 'list-time-series-aggregate':
238-
list_time_series_aggregate()
329+
list_time_series_aggregate(project_id())

0 commit comments

Comments
 (0)