Skip to content

Commit 2988bb3

Browse files
Fix Synthetic Monitoring bootstrapping docs (#1098)
Closes #1069 The docs are outdated and should use cloud access policies
1 parent 021b3ae commit 2988bb3

File tree

2 files changed

+68
-32
lines changed

2 files changed

+68
-32
lines changed

docs/index.md

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -95,36 +95,56 @@ resource "grafana_folder" "my_folder" {
9595
### Installing Synthetic Monitoring on a new Grafana Cloud Stack
9696

9797
```terraform
98+
variable "cloud_api_key" {
99+
description = "Cloud Access Policy token for Grafana Cloud with the following scopes: accesspolicies:read|write|delete, stacks:read|write|delete"
100+
}
101+
variable "stack_slug" {}
102+
variable "cloud_region" {
103+
default = "us"
104+
}
105+
98106
// Step 1: Create a stack
99107
provider "grafana" {
100108
alias = "cloud"
101-
cloud_api_key = "<my-api-key>"
102-
sm_url = "<synthetic-monitoring-api-url>"
109+
cloud_api_key = var.cloud_api_key
103110
}
104111
105112
resource "grafana_cloud_stack" "sm_stack" {
106113
provider = grafana.cloud
107114
108-
name = "<stack-name>"
109-
slug = "<stack-slug>"
110-
region_slug = "us"
115+
name = var.stack_slug
116+
slug = var.stack_slug
117+
region_slug = var.cloud_region
111118
}
112119
113120
// Step 2: Install Synthetic Monitoring on the stack
114-
resource "grafana_cloud_api_key" "metrics_publish" {
121+
resource "grafana_cloud_access_policy" "sm_metrics_publish" {
115122
provider = grafana.cloud
123+
region = var.cloud_region
124+
name = "metric-publisher-for-sm"
116125
117-
name = "MetricsPublisherForSM"
118-
role = "MetricsPublisher"
119-
cloud_org_slug = "<org-slug>"
126+
scopes = ["metrics:write", "stacks:read"]
127+
128+
realm {
129+
type = "stack"
130+
identifier = grafana_cloud_stack.sm_stack.id
131+
}
120132
}
121133
122-
resource "grafana_synthetic_monitoring_installation" "sm_stack" {
123-
provider = grafana.cloud
134+
resource "grafana_cloud_access_policy_token" "sm_metrics_publish" {
135+
provider = grafana.cloud
136+
region = var.cloud_region
137+
access_policy_id = grafana_cloud_access_policy.sm_metrics_publish.policy_id
138+
name = "metric-publisher-for-sm"
139+
}
124140
125-
stack_id = grafana_cloud_stack.sm_stack.id
141+
resource "grafana_synthetic_monitoring_installation" "sm_stack" {
142+
provider = grafana.cloud
143+
stack_id = grafana_cloud_stack.sm_stack.id
144+
metrics_publisher_key = grafana_cloud_access_policy_token.sm_metrics_publish.token
126145
}
127146
147+
128148
// Step 3: Interact with Synthetic Monitoring
129149
provider "grafana" {
130150
alias = "sm"
@@ -133,10 +153,8 @@ provider "grafana" {
133153
}
134154
135155
data "grafana_synthetic_monitoring_probes" "main" {
136-
provider = grafana.sm
137-
depends_on = [
138-
grafana_synthetic_monitoring_installation.sm_stack
139-
]
156+
provider = grafana.sm
157+
depends_on = [grafana_synthetic_monitoring_installation.sm_stack]
140158
}
141159
142160
resource "grafana_synthetic_monitoring_check" "ping" {

examples/provider/provider-sm.tf

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,53 @@
1+
variable "cloud_api_key" {
2+
description = "Cloud Access Policy token for Grafana Cloud with the following scopes: accesspolicies:read|write|delete, stacks:read|write|delete"
3+
}
4+
variable "stack_slug" {}
5+
variable "cloud_region" {
6+
default = "us"
7+
}
8+
19
// Step 1: Create a stack
210
provider "grafana" {
311
alias = "cloud"
4-
cloud_api_key = "<my-api-key>"
5-
sm_url = "<synthetic-monitoring-api-url>"
12+
cloud_api_key = var.cloud_api_key
613
}
714

815
resource "grafana_cloud_stack" "sm_stack" {
916
provider = grafana.cloud
1017

11-
name = "<stack-name>"
12-
slug = "<stack-slug>"
13-
region_slug = "us"
18+
name = var.stack_slug
19+
slug = var.stack_slug
20+
region_slug = var.cloud_region
1421
}
1522

1623
// Step 2: Install Synthetic Monitoring on the stack
17-
resource "grafana_cloud_api_key" "metrics_publish" {
24+
resource "grafana_cloud_access_policy" "sm_metrics_publish" {
1825
provider = grafana.cloud
26+
region = var.cloud_region
27+
name = "metric-publisher-for-sm"
1928

20-
name = "MetricsPublisherForSM"
21-
role = "MetricsPublisher"
22-
cloud_org_slug = "<org-slug>"
29+
scopes = ["metrics:write", "stacks:read"]
30+
31+
realm {
32+
type = "stack"
33+
identifier = grafana_cloud_stack.sm_stack.id
34+
}
2335
}
2436

25-
resource "grafana_synthetic_monitoring_installation" "sm_stack" {
26-
provider = grafana.cloud
37+
resource "grafana_cloud_access_policy_token" "sm_metrics_publish" {
38+
provider = grafana.cloud
39+
region = var.cloud_region
40+
access_policy_id = grafana_cloud_access_policy.sm_metrics_publish.policy_id
41+
name = "metric-publisher-for-sm"
42+
}
2743

28-
stack_id = grafana_cloud_stack.sm_stack.id
44+
resource "grafana_synthetic_monitoring_installation" "sm_stack" {
45+
provider = grafana.cloud
46+
stack_id = grafana_cloud_stack.sm_stack.id
47+
metrics_publisher_key = grafana_cloud_access_policy_token.sm_metrics_publish.token
2948
}
3049

50+
3151
// Step 3: Interact with Synthetic Monitoring
3252
provider "grafana" {
3353
alias = "sm"
@@ -36,10 +56,8 @@ provider "grafana" {
3656
}
3757

3858
data "grafana_synthetic_monitoring_probes" "main" {
39-
provider = grafana.sm
40-
depends_on = [
41-
grafana_synthetic_monitoring_installation.sm_stack
42-
]
59+
provider = grafana.sm
60+
depends_on = [grafana_synthetic_monitoring_installation.sm_stack]
4361
}
4462

4563
resource "grafana_synthetic_monitoring_check" "ping" {

0 commit comments

Comments
 (0)