or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

alert-policies.mdgroups.mdindex.mdmetrics.mdnotifications.mdservices.mdsnooze.mduptime-checks.md

index.mddocs/

0

# Google Cloud Monitoring

1

2

Google Cloud Monitoring is a comprehensive Python client library for Google Cloud Monitoring (formerly Stackdriver Monitoring) that enables developers to interact with Google's cloud monitoring and observability platform. It offers complete API coverage for collecting, analyzing, and alerting on metrics, events, and metadata from various cloud and on-premise sources including Google Cloud Platform, AWS, hybrid systems, and over 150 application components through BindPlane integration.

3

4

## Package Information

5

6

- **Package Name**: google-cloud-monitoring

7

- **Language**: Python

8

- **Installation**: `pip install google-cloud-monitoring`

9

- **Python Version**: >= 3.7

10

11

## Core Imports

12

13

```python

14

from google.cloud import monitoring

15

```

16

17

Import specific service clients:

18

19

```python

20

from google.cloud.monitoring import AlertPolicyServiceClient

21

from google.cloud.monitoring import MetricServiceClient

22

from google.cloud.monitoring import NotificationChannelServiceClient

23

```

24

25

Import types and data structures:

26

27

```python

28

from google.cloud.monitoring import AlertPolicy

29

from google.cloud.monitoring import TimeSeries

30

from google.cloud.monitoring import TimeInterval

31

from google.cloud.monitoring import QueryServiceClient

32

```

33

34

## Basic Usage

35

36

```python

37

from google.cloud.monitoring import MetricServiceClient

38

from google.cloud.monitoring import TimeSeries, Point, TimeInterval

39

from google.api_core.datetime_helpers import DatetimeWithNanoseconds

40

import time

41

42

# Initialize the client (uses default credentials)

43

client = MetricServiceClient()

44

45

# Define project and time series data

46

project_name = f"projects/{project_id}"

47

now = time.time()

48

seconds = int(now)

49

nanos = int((now - seconds) * 10**9)

50

51

# Create a time series data point

52

series = TimeSeries()

53

series.metric.type = "custom.googleapis.com/my_metric"

54

series.resource.type = "gce_instance"

55

series.resource.labels["instance_id"] = "my-instance"

56

series.resource.labels["zone"] = "us-central1-a"

57

58

# Add a data point

59

point = Point()

60

point.value.double_value = 3.14

61

point.interval.end_time.seconds = seconds

62

point.interval.end_time.nanos = nanos

63

series.points = [point]

64

65

# Write the time series data

66

client.create_time_series(name=project_name, time_series=[series])

67

```

68

69

## Architecture

70

71

The Google Cloud Monitoring library follows a service-oriented architecture with specialized clients for different monitoring capabilities:

72

73

- **Service Clients**: Eight specialized clients handle different aspects of monitoring (alerts, metrics, notifications, etc.)

74

- **Request/Response Types**: Structured data types for all API interactions

75

- **Resource Management**: Built-in path helpers and resource name formatting

76

- **Async Support**: Full async/await support for all operations

77

- **Authentication**: Integrated Google Cloud authentication with multiple credential sources

78

79

## Capabilities

80

81

### Alert Policy Management

82

83

Manages alert policies that define conditions for generating alerts based on metrics and logs. Supports creating, updating, deleting, and listing alert policies with complex condition logic.

84

85

```python { .api }

86

class AlertPolicyServiceClient:

87

def list_alert_policies(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> pagers.ListAlertPoliciesPager: ...

88

def get_alert_policy(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> alert.AlertPolicy: ...

89

def create_alert_policy(self, request=None, *, name=None, alert_policy=None, retry=None, timeout=None, metadata=()) -> alert.AlertPolicy: ...

90

def update_alert_policy(self, request=None, *, update_mask=None, alert_policy=None, retry=None, timeout=None, metadata=()) -> alert.AlertPolicy: ...

91

def delete_alert_policy(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> None: ...

92

93

class AlertPolicyServiceAsyncClient:

94

async def list_alert_policies(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> pagers.ListAlertPoliciesAsyncPager: ...

95

async def get_alert_policy(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> alert.AlertPolicy: ...

96

async def create_alert_policy(self, request=None, *, name=None, alert_policy=None, retry=None, timeout=None, metadata=()) -> alert.AlertPolicy: ...

97

async def update_alert_policy(self, request=None, *, update_mask=None, alert_policy=None, retry=None, timeout=None, metadata=()) -> alert.AlertPolicy: ...

98

async def delete_alert_policy(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> None: ...

99

```

100

101

[Alert Policy Management](./alert-policies.md)

102

103

### Resource Group Management

104

105

Manages groups for organizing and categorizing monitored resources. Groups enable bulk operations and simplified resource management across your monitoring infrastructure.

106

107

```python { .api }

108

class GroupServiceClient:

109

def list_groups(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> pagers.ListGroupsPager: ...

110

def get_group(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> group.Group: ...

111

def create_group(self, request=None, *, name=None, group=None, retry=None, timeout=None, metadata=()) -> group.Group: ...

112

def update_group(self, request=None, *, group=None, retry=None, timeout=None, metadata=()) -> group.Group: ...

113

def delete_group(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> None: ...

114

def list_group_members(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> pagers.ListGroupMembersPager: ...

115

```

116

117

[Resource Group Management](./groups.md)

118

119

### Metrics and Time Series

120

121

Core functionality for working with metrics, time series data, and monitored resources. Handles metric creation, data ingestion, querying, and resource descriptor management.

122

123

```python { .api }

124

class MetricServiceClient:

125

def list_metric_descriptors(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> pagers.ListMetricDescriptorsPager: ...

126

def get_metric_descriptor(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> metric_pb2.MetricDescriptor: ...

127

def create_metric_descriptor(self, request=None, *, name=None, metric_descriptor=None, retry=None, timeout=None, metadata=()) -> metric_pb2.MetricDescriptor: ...

128

def delete_metric_descriptor(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> None: ...

129

def list_time_series(self, request=None, *, name=None, filter=None, interval=None, view=None, retry=None, timeout=None, metadata=()) -> pagers.ListTimeSeriesPager: ...

130

def create_time_series(self, request=None, *, name=None, time_series=None, retry=None, timeout=None, metadata=()) -> None: ...

131

```

132

133

[Metrics and Time Series](./metrics.md)

134

135

### Notification Channel Management

136

137

Manages notification channels for delivering alert notifications via email, SMS, Slack, PagerDuty, and other supported channels with verification and configuration management.

138

139

```python { .api }

140

class NotificationChannelServiceClient:

141

def list_notification_channels(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> pagers.ListNotificationChannelsPager: ...

142

def get_notification_channel(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> notification_pb2.NotificationChannel: ...

143

def create_notification_channel(self, request=None, *, name=None, notification_channel=None, retry=None, timeout=None, metadata=()) -> notification_pb2.NotificationChannel: ...

144

def update_notification_channel(self, request=None, *, update_mask=None, notification_channel=None, retry=None, timeout=None, metadata=()) -> notification_pb2.NotificationChannel: ...

145

def delete_notification_channel(self, request=None, *, name=None, force=None, retry=None, timeout=None, metadata=()) -> None: ...

146

def verify_notification_channel(self, request=None, *, name=None, code=None, retry=None, timeout=None, metadata=()) -> notification_pb2.NotificationChannel: ...

147

```

148

149

[Notification Channel Management](./notifications.md)

150

151

### Time Series Query Service (MQL - Deprecated)

152

153

Provides time series querying capabilities using Monitoring Query Language (MQL). This service is deprecated in favor of PromQL-based querying.

154

155

```python { .api }

156

class QueryServiceClient:

157

def query_time_series(self, request=None, *, retry=None, timeout=None, metadata=()) -> pagers.QueryTimeSeriesPager: ...

158

159

class QueryServiceAsyncClient:

160

async def query_time_series(self, request=None, *, retry=None, timeout=None, metadata=()) -> pagers.QueryTimeSeriesAsyncPager: ...

161

```

162

163

**Note**: This service is deprecated. Use PromQL queries with the Monitoring API instead.

164

165

### Service Level Monitoring

166

167

Manages services and Service Level Objectives (SLOs) for service-oriented monitoring, including SLI definitions, error budgets, and service health tracking.

168

169

```python { .api }

170

class ServiceMonitoringServiceClient:

171

def create_service(self, request=None, *, parent=None, service=None, retry=None, timeout=None, metadata=()) -> service.Service: ...

172

def get_service(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> service.Service: ...

173

def list_services(self, request=None, *, parent=None, retry=None, timeout=None, metadata=()) -> pagers.ListServicesPager: ...

174

def update_service(self, request=None, *, service=None, retry=None, timeout=None, metadata=()) -> service.Service: ...

175

def delete_service(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> None: ...

176

def create_service_level_objective(self, request=None, *, parent=None, service_level_objective=None, retry=None, timeout=None, metadata=()) -> service.ServiceLevelObjective: ...

177

def get_service_level_objective(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> service.ServiceLevelObjective: ...

178

def list_service_level_objectives(self, request=None, *, parent=None, retry=None, timeout=None, metadata=()) -> pagers.ListServiceLevelObjectivesPager: ...

179

def update_service_level_objective(self, request=None, *, service_level_objective=None, retry=None, timeout=None, metadata=()) -> service.ServiceLevelObjective: ...

180

def delete_service_level_objective(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> None: ...

181

```

182

183

[Service Level Monitoring](./services.md)

184

185

### Uptime Check Management

186

187

Manages uptime check configurations for monitoring the availability and response time of HTTP/HTTPS endpoints, TCP services, and other network resources.

188

189

```python { .api }

190

class UptimeCheckServiceClient:

191

def list_uptime_check_configs(self, request=None, *, parent=None, retry=None, timeout=None, metadata=()) -> pagers.ListUptimeCheckConfigsPager: ...

192

def get_uptime_check_config(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> uptime.UptimeCheckConfig: ...

193

def create_uptime_check_config(self, request=None, *, parent=None, uptime_check_config=None, retry=None, timeout=None, metadata=()) -> uptime.UptimeCheckConfig: ...

194

def update_uptime_check_config(self, request=None, *, uptime_check_config=None, retry=None, timeout=None, metadata=()) -> uptime.UptimeCheckConfig: ...

195

def delete_uptime_check_config(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> None: ...

196

def list_uptime_check_ips(self, request=None, *, retry=None, timeout=None, metadata=()) -> pagers.ListUptimeCheckIpsPager: ...

197

```

198

199

[Uptime Check Management](./uptime-checks.md)

200

201

### Alert Suppression (Snooze)

202

203

Temporarily suppresses alert notifications using snooze functionality, allowing planned maintenance windows and temporary alert silencing with configurable duration and criteria.

204

205

```python { .api }

206

class SnoozeServiceClient:

207

def create_snooze(self, request=None, *, parent=None, snooze=None, retry=None, timeout=None, metadata=()) -> snooze.Snooze: ...

208

def list_snoozes(self, request=None, *, parent=None, retry=None, timeout=None, metadata=()) -> pagers.ListSnoozesPager: ...

209

def get_snooze(self, request=None, *, name=None, retry=None, timeout=None, metadata=()) -> snooze.Snooze: ...

210

def update_snooze(self, request=None, *, snooze=None, update_mask=None, retry=None, timeout=None, metadata=()) -> snooze.Snooze: ...

211

```

212

213

[Alert Suppression](./snooze.md)

214

215

## Common Types

216

217

Core data types used across all monitoring services:

218

219

```python { .api }

220

class TimeInterval:

221

end_time: Timestamp

222

start_time: Timestamp

223

224

class TypedValue:

225

bool_value: bool

226

int64_value: int

227

double_value: float

228

string_value: str

229

distribution_value: Distribution

230

231

class Aggregation:

232

alignment_period: Duration

233

per_series_aligner: Aligner

234

cross_series_reducer: Reducer

235

group_by_fields: List[str]

236

237

class ComparisonType(enum.Enum):

238

COMPARISON_GREATER = 1

239

COMPARISON_GREATER_EQUAL = 2

240

COMPARISON_LESS = 3

241

COMPARISON_LESS_EQUAL = 4

242

COMPARISON_EQUAL = 5

243

COMPARISON_NOT_EQUAL = 6

244

245

class ServiceTier(enum.Enum):

246

SERVICE_TIER_BASIC = 1

247

SERVICE_TIER_PREMIUM = 2

248

249

class DroppedLabels:

250

label: Dict[str, str] # Labels that were dropped

251

252

class SpanContext:

253

span_name: str # Span name for tracing integration

254

255

class TextLocator:

256

source: str # Source text

257

start_position: int # Start position

258

end_position: int # End position

259

260

class LabelValue:

261

bool_value: bool # Boolean label value

262

int64_value: int # Integer label value

263

string_value: str # String label value

264

265

class QueryError:

266

locator: TextLocator # Error location

267

message: str # Error message

268

269

class QueryErrorList:

270

errors: List[QueryError] # List of query errors

271

272

class TimeSeriesData:

273

label_values: List[LabelValue] # Label values

274

point_data: List[Point.PointData] # Point data

275

276

class TimeSeriesDescriptor:

277

label_descriptors: List[LabelDescriptor] # Label descriptors

278

point_descriptor: Point.PointDescriptor # Point descriptor

279

280

class QueryTimeSeriesRequest:

281

name: str # Required. Project name

282

query: str # Required. MQL query string

283

page_size: int # Maximum results per page

284

page_token: str # Page token for pagination

285

286

class QueryTimeSeriesResponse:

287

time_series_descriptor: TimeSeriesDescriptor # Time series metadata

288

time_series_data: List[TimeSeriesData] # Time series data

289

next_page_token: str # Next page token

290

partial_errors: List[Status] # Partial errors

291

```

292

293

## Authentication

294

295

The library supports multiple authentication methods:

296

297

```python

298

# Default credentials (recommended)

299

from google.cloud.monitoring import MetricServiceClient

300

client = MetricServiceClient()

301

302

# Service account file

303

client = MetricServiceClient.from_service_account_file("path/to/credentials.json")

304

305

# Service account info (dict)

306

client = MetricServiceClient.from_service_account_info(credentials_dict)

307

308

# Explicit credentials

309

from google.oauth2 import service_account

310

credentials = service_account.Credentials.from_service_account_file("path/to/file.json")

311

client = MetricServiceClient(credentials=credentials)

312

```

313

314

## Error Handling

315

316

All service methods can raise Google Cloud exceptions:

317

318

```python

319

from google.api_core import exceptions

320

from google.cloud.monitoring import MetricServiceClient

321

322

client = MetricServiceClient()

323

324

try:

325

metric = client.get_metric_descriptor(name="projects/my-project/metricDescriptors/invalid")

326

except exceptions.NotFound:

327

print("Metric descriptor not found")

328

except exceptions.PermissionDenied:

329

print("Insufficient permissions")

330

except exceptions.GoogleAPIError as e:

331

print(f"API error: {e}")

332

```