@pulumiverse/grafana 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/annotation.d.ts +28 -3
- package/annotation.js +25 -0
- package/annotation.js.map +1 -1
- package/apiKey.d.ts +18 -0
- package/apiKey.js +18 -0
- package/apiKey.js.map +1 -1
- package/cloudAccessPolicy.d.ts +57 -15
- package/cloudAccessPolicy.js +51 -0
- package/cloudAccessPolicy.js.map +1 -1
- package/cloudAccessPolicyToken.d.ts +54 -9
- package/cloudAccessPolicyToken.js +51 -0
- package/cloudAccessPolicyToken.js.map +1 -1
- package/cloudApiKey.d.ts +35 -6
- package/cloudApiKey.js +32 -0
- package/cloudApiKey.js.map +1 -1
- package/cloudOrgMember.d.ts +9 -0
- package/cloudOrgMember.js +9 -0
- package/cloudOrgMember.js.map +1 -1
- package/cloudPluginInstallation.d.ts +32 -0
- package/cloudPluginInstallation.js +32 -0
- package/cloudPluginInstallation.js.map +1 -1
- package/cloudStack.d.ts +49 -38
- package/cloudStack.js +30 -0
- package/cloudStack.js.map +1 -1
- package/cloudStackServiceAccount.d.ts +36 -3
- package/cloudStackServiceAccount.js +33 -0
- package/cloudStackServiceAccount.js.map +1 -1
- package/cloudStackServiceAccountToken.d.ts +28 -0
- package/cloudStackServiceAccountToken.js +28 -0
- package/cloudStackServiceAccountToken.js.map +1 -1
- package/contactPoint.d.ts +44 -9
- package/contactPoint.js +38 -0
- package/contactPoint.js.map +1 -1
- package/dashboard.d.ts +44 -16
- package/dashboard.js +37 -0
- package/dashboard.js.map +1 -1
- package/dashboardPermission.d.ts +55 -3
- package/dashboardPermission.js +52 -0
- package/dashboardPermission.js.map +1 -1
- package/dashboardPermissionItem.d.ts +48 -0
- package/dashboardPermissionItem.js +48 -0
- package/dashboardPermissionItem.js.map +1 -1
- package/dashboardPublic.d.ts +73 -12
- package/dashboardPublic.js +67 -0
- package/dashboardPublic.js.map +1 -1
- package/dataSource.d.ts +102 -36
- package/dataSource.js +78 -0
- package/dataSource.js.map +1 -1
- package/dataSourceConfig.d.ts +69 -18
- package/dataSourceConfig.js +63 -0
- package/dataSourceConfig.js.map +1 -1
- package/dataSourcePermission.d.ts +66 -3
- package/dataSourcePermission.js +63 -0
- package/dataSourcePermission.js.map +1 -1
- package/dataSourcePermissionItem.d.ts +61 -0
- package/dataSourcePermissionItem.js +61 -0
- package/dataSourcePermissionItem.js.map +1 -1
- package/folder.d.ts +43 -9
- package/folder.js +37 -0
- package/folder.js.map +1 -1
- package/folderPermission.d.ts +49 -0
- package/folderPermission.js +49 -0
- package/folderPermission.js.map +1 -1
- package/folderPermissionItem.d.ts +47 -0
- package/folderPermissionItem.js +47 -0
- package/folderPermissionItem.js.map +1 -1
- package/getCloudIps.d.ts +43 -0
- package/getCloudIps.js +28 -0
- package/getCloudIps.js.map +1 -1
- package/getCloudOrganization.d.ts +37 -0
- package/getCloudOrganization.js +28 -0
- package/getCloudOrganization.js.map +1 -1
- package/getCloudStack.d.ts +84 -0
- package/getCloudStack.js +6 -0
- package/getCloudStack.js.map +1 -1
- package/getDashboard.d.ts +114 -0
- package/getDashboard.js +64 -0
- package/getDashboard.js.map +1 -1
- package/getDashboards.d.ts +56 -0
- package/getDashboards.js +14 -0
- package/getDashboards.js.map +1 -1
- package/getDataSource.d.ts +118 -0
- package/getDataSource.js +76 -0
- package/getDataSource.js.map +1 -1
- package/getFolder.d.ts +71 -0
- package/getFolder.js +44 -0
- package/getFolder.js.map +1 -1
- package/getFolders.d.ts +60 -0
- package/getFolders.js +48 -0
- package/getFolders.js.map +1 -1
- package/getLibraryPanel.d.ts +65 -0
- package/getLibraryPanel.js +6 -0
- package/getLibraryPanel.js.map +1 -1
- package/getOnCallSlackChannel.d.ts +44 -0
- package/getOnCallSlackChannel.js +32 -0
- package/getOnCallSlackChannel.js.map +1 -1
- package/getOncallAction.d.ts +21 -0
- package/getOncallAction.js +12 -0
- package/getOncallAction.js.map +1 -1
- package/getOncallEscalationChain.d.ts +41 -0
- package/getOncallEscalationChain.js +32 -0
- package/getOncallEscalationChain.js.map +1 -1
- package/getOncallIntegration.d.ts +44 -0
- package/getOncallIntegration.js +32 -0
- package/getOncallIntegration.js.map +1 -1
- package/getOncallOutgoingWebhook.d.ts +41 -0
- package/getOncallOutgoingWebhook.js +32 -0
- package/getOncallOutgoingWebhook.js.map +1 -1
- package/getOncallSchedule.d.ts +46 -0
- package/getOncallSchedule.js +34 -0
- package/getOncallSchedule.js.map +1 -1
- package/getOncallTeam.d.ts +37 -0
- package/getOncallTeam.js +28 -0
- package/getOncallTeam.js.map +1 -1
- package/getOncallUser.d.ts +47 -0
- package/getOncallUser.js +32 -0
- package/getOncallUser.js.map +1 -1
- package/getOncallUserGroup.d.ts +32 -0
- package/getOncallUserGroup.js +32 -0
- package/getOncallUserGroup.js.map +1 -1
- package/getOrganization.d.ts +70 -0
- package/getOrganization.js +52 -0
- package/getOrganization.js.map +1 -1
- package/getOrganizationPreferences.d.ts +53 -0
- package/getOrganizationPreferences.js +30 -0
- package/getOrganizationPreferences.js.map +1 -1
- package/getRole.d.ts +118 -0
- package/getRole.js +82 -0
- package/getRole.js.map +1 -1
- package/getServiceAccount.d.ts +32 -0
- package/getServiceAccount.js +8 -0
- package/getServiceAccount.js.map +1 -1
- package/getSlos.d.ts +17 -0
- package/getSlos.js +14 -0
- package/getSlos.js.map +1 -1
- package/getSyntheticMonitoringProbe.d.ts +62 -0
- package/getSyntheticMonitoringProbe.js +32 -0
- package/getSyntheticMonitoringProbe.js.map +1 -1
- package/getSyntheticMonitoringProbes.d.ts +40 -0
- package/getSyntheticMonitoringProbes.js +28 -0
- package/getSyntheticMonitoringProbes.js.map +1 -1
- package/getTeam.d.ts +50 -0
- package/getTeam.js +50 -0
- package/getTeam.js.map +1 -1
- package/getUser.d.ts +99 -0
- package/getUser.js +66 -0
- package/getUser.js.map +1 -1
- package/getUsers.d.ts +51 -0
- package/getUsers.js +48 -0
- package/getUsers.js.map +1 -1
- package/libraryPanel.d.ts +43 -12
- package/libraryPanel.js +37 -0
- package/libraryPanel.js.map +1 -1
- package/machineLearningHoliday.d.ts +14 -3
- package/machineLearningHoliday.js +11 -0
- package/machineLearningHoliday.js.map +1 -1
- package/machineLearningJob.d.ts +18 -12
- package/machineLearningJob.js +9 -0
- package/machineLearningJob.js.map +1 -1
- package/machineLearningOutlierDetector.d.ts +22 -12
- package/machineLearningOutlierDetector.js +13 -0
- package/machineLearningOutlierDetector.js.map +1 -1
- package/messageTemplate.d.ts +32 -0
- package/messageTemplate.js +32 -0
- package/messageTemplate.js.map +1 -1
- package/muteTiming.d.ts +51 -0
- package/muteTiming.js +51 -0
- package/muteTiming.js.map +1 -1
- package/notificationPolicy.d.ts +98 -9
- package/notificationPolicy.js +92 -0
- package/notificationPolicy.js.map +1 -1
- package/oncallEscalation.d.ts +81 -41
- package/oncallEscalation.js +52 -0
- package/oncallEscalation.js.map +1 -1
- package/oncallEscalationChain.d.ts +25 -6
- package/oncallEscalationChain.js +22 -0
- package/oncallEscalationChain.js.map +1 -1
- package/oncallIntegration.d.ts +16 -15
- package/oncallIntegration.js +10 -0
- package/oncallIntegration.js.map +1 -1
- package/oncallOnCallShift.d.ts +30 -27
- package/oncallOnCallShift.js +9 -0
- package/oncallOnCallShift.js.map +1 -1
- package/oncallOutgoingWebhook.d.ts +34 -21
- package/oncallOutgoingWebhook.js +22 -0
- package/oncallOutgoingWebhook.js.map +1 -1
- package/oncallRoute.d.ts +49 -3
- package/oncallRoute.js +46 -0
- package/oncallRoute.js.map +1 -1
- package/oncallSchedule.d.ts +49 -9
- package/oncallSchedule.js +43 -0
- package/oncallSchedule.js.map +1 -1
- package/organization.d.ts +94 -39
- package/organization.js +37 -0
- package/organization.js.map +1 -1
- package/organizationPreference.d.ts +31 -9
- package/organizationPreference.js +25 -0
- package/organizationPreference.js.map +1 -1
- package/package.json +2 -2
- package/package.json.dev +1 -1
- package/playlist.d.ts +41 -0
- package/playlist.js +41 -0
- package/playlist.js.map +1 -1
- package/report.d.ts +56 -15
- package/report.js +41 -0
- package/report.js.map +1 -1
- package/role.d.ts +58 -15
- package/role.js +46 -0
- package/role.js.map +1 -1
- package/roleAssignment.d.ts +48 -0
- package/roleAssignment.js +48 -0
- package/roleAssignment.js.map +1 -1
- package/roleAssignmentItem.d.ts +51 -0
- package/roleAssignmentItem.js +51 -0
- package/roleAssignmentItem.js.map +1 -1
- package/ruleGroup.d.ts +117 -9
- package/ruleGroup.js +111 -0
- package/ruleGroup.js.map +1 -1
- package/serviceAccount.d.ts +33 -3
- package/serviceAccount.js +30 -0
- package/serviceAccount.js.map +1 -1
- package/serviceAccountPermission.d.ts +50 -0
- package/serviceAccountPermission.js +50 -0
- package/serviceAccountPermission.js.map +1 -1
- package/serviceAccountPermissionItem.d.ts +44 -0
- package/serviceAccountPermissionItem.js +44 -0
- package/serviceAccountPermissionItem.js.map +1 -1
- package/serviceAccountToken.d.ts +27 -9
- package/serviceAccountToken.js +24 -0
- package/serviceAccountToken.js.map +1 -1
- package/slo.d.ts +39 -27
- package/slo.js +15 -0
- package/slo.js.map +1 -1
- package/ssoSettings.d.ts +75 -3
- package/ssoSettings.js +72 -0
- package/ssoSettings.js.map +1 -1
- package/syntheticMonitoringCheck.d.ts +431 -36
- package/syntheticMonitoringCheck.js +413 -0
- package/syntheticMonitoringCheck.js.map +1 -1
- package/syntheticMonitoringInstallation.d.ts +75 -24
- package/syntheticMonitoringInstallation.js +69 -0
- package/syntheticMonitoringInstallation.js.map +1 -1
- package/syntheticMonitoringProbe.d.ts +39 -6
- package/syntheticMonitoringProbe.js +36 -0
- package/syntheticMonitoringProbe.js.map +1 -1
- package/team.d.ts +33 -0
- package/team.js +33 -0
- package/team.js.map +1 -1
- package/teamExternalGroup.d.ts +31 -0
- package/teamExternalGroup.js +31 -0
- package/teamExternalGroup.js.map +1 -1
- package/types/input.d.ts +123 -123
- package/types/output.d.ts +123 -123
- package/user.d.ts +33 -3
- package/user.js +30 -0
- package/user.js.map +1 -1
|
@@ -5,6 +5,419 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.SyntheticMonitoringCheck = void 0;
|
|
6
6
|
const pulumi = require("@pulumi/pulumi");
|
|
7
7
|
const utilities = require("./utilities");
|
|
8
|
+
/**
|
|
9
|
+
* Synthetic Monitoring checks are tests that run on selected probes at defined
|
|
10
|
+
* intervals and report metrics and logs back to your Grafana Cloud account. The
|
|
11
|
+
* target for checks can be a domain name, a server, or a website, depending on
|
|
12
|
+
* what information you would like to gather about your endpoint. You can define
|
|
13
|
+
* multiple checks for a single endpoint to check different capabilities.
|
|
14
|
+
*
|
|
15
|
+
* * [Official documentation](https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/create-checks/checks/)
|
|
16
|
+
*
|
|
17
|
+
* ## Example Usage
|
|
18
|
+
*
|
|
19
|
+
* ### DNS Basic
|
|
20
|
+
*
|
|
21
|
+
* <!--Start PulumiCodeChooser -->
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
24
|
+
* import * as grafana from "@pulumi/grafana";
|
|
25
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
26
|
+
*
|
|
27
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
28
|
+
* const dns = new grafana.SyntheticMonitoringCheck("dns", {
|
|
29
|
+
* job: "DNS Defaults",
|
|
30
|
+
* target: "grafana.com",
|
|
31
|
+
* enabled: false,
|
|
32
|
+
* probes: [main.then(main => main.probes?.Atlanta)],
|
|
33
|
+
* labels: {
|
|
34
|
+
* foo: "bar",
|
|
35
|
+
* },
|
|
36
|
+
* settings: {
|
|
37
|
+
* dns: {},
|
|
38
|
+
* },
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
* <!--End PulumiCodeChooser -->
|
|
42
|
+
*
|
|
43
|
+
* ### DNS Complex
|
|
44
|
+
*
|
|
45
|
+
* <!--Start PulumiCodeChooser -->
|
|
46
|
+
* ```typescript
|
|
47
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
48
|
+
* import * as grafana from "@pulumi/grafana";
|
|
49
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
50
|
+
*
|
|
51
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
52
|
+
* const dns = new grafana.SyntheticMonitoringCheck("dns", {
|
|
53
|
+
* job: "DNS Updated",
|
|
54
|
+
* target: "grafana.net",
|
|
55
|
+
* enabled: false,
|
|
56
|
+
* probes: [
|
|
57
|
+
* main.then(main => main.probes?.Frankfurt),
|
|
58
|
+
* main.then(main => main.probes?.London),
|
|
59
|
+
* ],
|
|
60
|
+
* labels: {
|
|
61
|
+
* foo: "baz",
|
|
62
|
+
* },
|
|
63
|
+
* settings: {
|
|
64
|
+
* dns: {
|
|
65
|
+
* ipVersion: "Any",
|
|
66
|
+
* server: "8.8.4.4",
|
|
67
|
+
* port: 8600,
|
|
68
|
+
* recordType: "CNAME",
|
|
69
|
+
* protocol: "TCP",
|
|
70
|
+
* validRCodes: [
|
|
71
|
+
* "NOERROR",
|
|
72
|
+
* "NOTAUTH",
|
|
73
|
+
* ],
|
|
74
|
+
* validateAnswerRrs: {
|
|
75
|
+
* failIfMatchesRegexps: [".+-bad-stuff*"],
|
|
76
|
+
* failIfNotMatchesRegexps: [".+-good-stuff*"],
|
|
77
|
+
* },
|
|
78
|
+
* validateAuthorityRrs: {
|
|
79
|
+
* failIfMatchesRegexps: [".+-bad-stuff*"],
|
|
80
|
+
* failIfNotMatchesRegexps: [".+-good-stuff*"],
|
|
81
|
+
* },
|
|
82
|
+
* validateAdditionalRrs: [{
|
|
83
|
+
* failIfMatchesRegexps: [".+-bad-stuff*"],
|
|
84
|
+
* failIfNotMatchesRegexps: [".+-good-stuff*"],
|
|
85
|
+
* }],
|
|
86
|
+
* },
|
|
87
|
+
* },
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
* <!--End PulumiCodeChooser -->
|
|
91
|
+
*
|
|
92
|
+
* ### HTTP Basic
|
|
93
|
+
*
|
|
94
|
+
* <!--Start PulumiCodeChooser -->
|
|
95
|
+
* ```typescript
|
|
96
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
97
|
+
* import * as grafana from "@pulumi/grafana";
|
|
98
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
99
|
+
*
|
|
100
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
101
|
+
* const http = new grafana.SyntheticMonitoringCheck("http", {
|
|
102
|
+
* job: "HTTP Defaults",
|
|
103
|
+
* target: "https://grafana.com",
|
|
104
|
+
* enabled: false,
|
|
105
|
+
* probes: [main.then(main => main.probes?.Atlanta)],
|
|
106
|
+
* labels: {
|
|
107
|
+
* foo: "bar",
|
|
108
|
+
* },
|
|
109
|
+
* settings: {
|
|
110
|
+
* http: {},
|
|
111
|
+
* },
|
|
112
|
+
* });
|
|
113
|
+
* ```
|
|
114
|
+
* <!--End PulumiCodeChooser -->
|
|
115
|
+
*
|
|
116
|
+
* ### HTTP Complex
|
|
117
|
+
*
|
|
118
|
+
* <!--Start PulumiCodeChooser -->
|
|
119
|
+
* ```typescript
|
|
120
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
121
|
+
* import * as grafana from "@pulumi/grafana";
|
|
122
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
123
|
+
*
|
|
124
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
125
|
+
* const http = new grafana.SyntheticMonitoringCheck("http", {
|
|
126
|
+
* job: "HTTP Defaults",
|
|
127
|
+
* target: "https://grafana.org",
|
|
128
|
+
* enabled: false,
|
|
129
|
+
* probes: [
|
|
130
|
+
* main.then(main => main.probes?.Bangalore),
|
|
131
|
+
* main.then(main => main.probes?.Mumbai),
|
|
132
|
+
* ],
|
|
133
|
+
* labels: {
|
|
134
|
+
* foo: "bar",
|
|
135
|
+
* },
|
|
136
|
+
* settings: {
|
|
137
|
+
* http: {
|
|
138
|
+
* ipVersion: "V6",
|
|
139
|
+
* method: "TRACE",
|
|
140
|
+
* body: "and spirit",
|
|
141
|
+
* noFollowRedirects: true,
|
|
142
|
+
* bearerToken: "asdfjkl;",
|
|
143
|
+
* proxyUrl: "https://almost-there",
|
|
144
|
+
* failIfSsl: true,
|
|
145
|
+
* failIfNotSsl: true,
|
|
146
|
+
* cacheBustingQueryParamName: "pineapple",
|
|
147
|
+
* tlsConfig: {
|
|
148
|
+
* serverName: "grafana.org",
|
|
149
|
+
* clientCert: `-----BEGIN CERTIFICATE-----
|
|
150
|
+
* MIIEljCCAn4CCQCKJPUQQxeO0zANBgkqhkiG9w0BAQsFADANMQswCQYDVQQGEwJT
|
|
151
|
+
* RTAeFw0yMTA1MjkxOTIyNTdaFw0yNDAzMTgxOTIyNTdaMA0xCzAJBgNVBAYTAlNF
|
|
152
|
+
* MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnmbazDNUT0rSI4BpGZK+
|
|
153
|
+
* 0AJ+9FDkIYWJUtRLJoxw8CF+AobMFploYA2L2Myt80cTA1w8FrewjC8qlqdnrPWr
|
|
154
|
+
* h1ely2zsUljgi1/niH0ndjFzliL7UkinXQiAsTtYOrOQmzyd/o5PNdu7dz0m7stD
|
|
155
|
+
* BN/Sz5TlXZnA1/eJbqV/kqMau6b1MaBx8SbRfUG9+cSmUobFJwuktDrPuwJhcEkl
|
|
156
|
+
* iDmhEqu1GuZzmKvzPacLTVia1vSlmCTCu89NiHI8iGiiLtqNrapup7f8j5m3a3SL
|
|
157
|
+
* a+vXhplFj2piNl7Nc0dfuVgtEliTI+qUL2/+4A7gzRWZpHy21/LxMMXmBhdJW9En
|
|
158
|
+
* FWkev97VZLgb5TR3+qpSWmXcodjPy4dibvwsOMpdd+Q4AYulwvlDw5idRPVgGvk7
|
|
159
|
+
* qq03+w9ppZ5Fugws9k2CD9F/75JX2mCbRpkuPe8XXZ7bqrMaQgQMLOrs68HuiiCk
|
|
160
|
+
* FTklglq4DMKxnf/Y/T/MgIa9Q1o28YSevh6A7FnfPGARj2H2T4rToi+bC1Vf7qNB
|
|
161
|
+
* Z18bDpz99tRUTbyiRUSBMWLCGhU6c4HAqUrfrkpperOKFBQ3i38a79838oFdXHBW
|
|
162
|
+
* 6rx1t5cC3XwtEoUyeBKAygez8G1LDXbN3607MxVhAjhHKtPkYvuBfysSNU6JrR0z
|
|
163
|
+
* UV1IURJANt2UMuKgSEkG/IMCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAcipMhp/w
|
|
164
|
+
* yzfPy61faVAw9SPaMNRlnW9FCDC3N9CGOjo2knjXpObPzyzsJiUURTjrA9eFMpRA
|
|
165
|
+
* e2Rgn2j+nvm2XdLAlC4Kh8jqv/wCL0X6BTQMdN5aOhXdSiXtpXOMvXYY/dQ4ebRZ
|
|
166
|
+
* XeRCVWQD79JbV6/uyx0nCV3FVcU7L1P4UjxroefVr0soLPMirgxHmOxLnkoVgdcB
|
|
167
|
+
* tqufP5kJx9CIeJXPx3QQsk1XfEtxtUvuw4ZaZkQnNUqvGl7V+AZpur5Eqfv3zBi8
|
|
168
|
+
* QxxL7qGkARNssNWH2Ju+tqpM/UZRnjlFrDR4SXUgT0coTduBalUY6qHkciHmRpiP
|
|
169
|
+
* tf3SgpDeiCSOV2iVFGdaR1mz3muWoAYWFstcWN3a3HjjVugIi23yLN8Gv8CNeoH4
|
|
170
|
+
* prulinFCLrFgAh8SLAF8mOAZanT06LH8jOIFYrdUxH+ZeRBR0rLoFjUF+JB7UKD9
|
|
171
|
+
* 5TA+B4EBzQ1tMbGFU1DX79MjAejq0IV0Nzq+GMfBvLHxEf4+Oz8nqhDXQcJ6TdtY
|
|
172
|
+
* l3Lyw5zBvOL80SBK+Mr0UP7d9U3VXgbGHCYVJU6Ot1TwiGwahtWALRALA3TWeGkq
|
|
173
|
+
* 7kyD1H+nm+9lfKhuyBRQnRGBVyze2lAp7oxwshJuhBwEXosXFxq1Cy6QhPN77r6N
|
|
174
|
+
* vuhxvtppolNnyOgGxwG4zquqq2V5/+vKjKY=
|
|
175
|
+
* -----END CERTIFICATE-----
|
|
176
|
+
* `,
|
|
177
|
+
* },
|
|
178
|
+
* headers: ["Content-Type: multipart/form-data; boundary=something"],
|
|
179
|
+
* basicAuth: {
|
|
180
|
+
* username: "open",
|
|
181
|
+
* password: "sesame",
|
|
182
|
+
* },
|
|
183
|
+
* validStatusCodes: [
|
|
184
|
+
* 200,
|
|
185
|
+
* 201,
|
|
186
|
+
* ],
|
|
187
|
+
* validHttpVersions: [
|
|
188
|
+
* "HTTP/1.0",
|
|
189
|
+
* "HTTP/1.1",
|
|
190
|
+
* "HTTP/2.0",
|
|
191
|
+
* ],
|
|
192
|
+
* failIfBodyMatchesRegexps: [".*bad stuff.*"],
|
|
193
|
+
* failIfBodyNotMatchesRegexps: [".*good stuff.*"],
|
|
194
|
+
* failIfHeaderMatchesRegexps: [{
|
|
195
|
+
* header: "Content-Type",
|
|
196
|
+
* regexp: "application/soap*",
|
|
197
|
+
* allowMissing: true,
|
|
198
|
+
* }],
|
|
199
|
+
* },
|
|
200
|
+
* },
|
|
201
|
+
* });
|
|
202
|
+
* ```
|
|
203
|
+
* <!--End PulumiCodeChooser -->
|
|
204
|
+
*
|
|
205
|
+
* ### Ping Basic
|
|
206
|
+
*
|
|
207
|
+
* <!--Start PulumiCodeChooser -->
|
|
208
|
+
* ```typescript
|
|
209
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
210
|
+
* import * as grafana from "@pulumi/grafana";
|
|
211
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
212
|
+
*
|
|
213
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
214
|
+
* const ping = new grafana.SyntheticMonitoringCheck("ping", {
|
|
215
|
+
* job: "Ping Defaults",
|
|
216
|
+
* target: "grafana.com",
|
|
217
|
+
* enabled: false,
|
|
218
|
+
* probes: [main.then(main => main.probes?.Atlanta)],
|
|
219
|
+
* labels: {
|
|
220
|
+
* foo: "bar",
|
|
221
|
+
* },
|
|
222
|
+
* settings: {
|
|
223
|
+
* ping: {},
|
|
224
|
+
* },
|
|
225
|
+
* });
|
|
226
|
+
* ```
|
|
227
|
+
* <!--End PulumiCodeChooser -->
|
|
228
|
+
*
|
|
229
|
+
* ### Ping Complex
|
|
230
|
+
*
|
|
231
|
+
* <!--Start PulumiCodeChooser -->
|
|
232
|
+
* ```typescript
|
|
233
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
234
|
+
* import * as grafana from "@pulumi/grafana";
|
|
235
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
236
|
+
*
|
|
237
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
238
|
+
* const ping = new grafana.SyntheticMonitoringCheck("ping", {
|
|
239
|
+
* job: "Ping Updated",
|
|
240
|
+
* target: "grafana.net",
|
|
241
|
+
* enabled: false,
|
|
242
|
+
* probes: [
|
|
243
|
+
* main.then(main => main.probes?.Frankfurt),
|
|
244
|
+
* main.then(main => main.probes?.London),
|
|
245
|
+
* ],
|
|
246
|
+
* labels: {
|
|
247
|
+
* foo: "baz",
|
|
248
|
+
* },
|
|
249
|
+
* settings: {
|
|
250
|
+
* ping: {
|
|
251
|
+
* ipVersion: "Any",
|
|
252
|
+
* payloadSize: 20,
|
|
253
|
+
* dontFragment: true,
|
|
254
|
+
* },
|
|
255
|
+
* },
|
|
256
|
+
* });
|
|
257
|
+
* ```
|
|
258
|
+
* <!--End PulumiCodeChooser -->
|
|
259
|
+
*
|
|
260
|
+
* ### TCP Basic
|
|
261
|
+
*
|
|
262
|
+
* <!--Start PulumiCodeChooser -->
|
|
263
|
+
* ```typescript
|
|
264
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
265
|
+
* import * as grafana from "@pulumi/grafana";
|
|
266
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
267
|
+
*
|
|
268
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
269
|
+
* const tcp = new grafana.SyntheticMonitoringCheck("tcp", {
|
|
270
|
+
* job: "TCP Defaults",
|
|
271
|
+
* target: "grafana.com:80",
|
|
272
|
+
* enabled: false,
|
|
273
|
+
* probes: [main.then(main => main.probes?.Atlanta)],
|
|
274
|
+
* labels: {
|
|
275
|
+
* foo: "bar",
|
|
276
|
+
* },
|
|
277
|
+
* settings: {
|
|
278
|
+
* tcp: {},
|
|
279
|
+
* },
|
|
280
|
+
* });
|
|
281
|
+
* ```
|
|
282
|
+
* <!--End PulumiCodeChooser -->
|
|
283
|
+
*
|
|
284
|
+
* ### TCP Complex
|
|
285
|
+
*
|
|
286
|
+
* <!--Start PulumiCodeChooser -->
|
|
287
|
+
* ```typescript
|
|
288
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
289
|
+
* import * as grafana from "@pulumi/grafana";
|
|
290
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
291
|
+
*
|
|
292
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
293
|
+
* const tcp = new grafana.SyntheticMonitoringCheck("tcp", {
|
|
294
|
+
* job: "TCP Defaults",
|
|
295
|
+
* target: "grafana.com:443",
|
|
296
|
+
* enabled: false,
|
|
297
|
+
* probes: [
|
|
298
|
+
* main.then(main => main.probes?.Frankfurt),
|
|
299
|
+
* main.then(main => main.probes?.London),
|
|
300
|
+
* ],
|
|
301
|
+
* labels: {
|
|
302
|
+
* foo: "baz",
|
|
303
|
+
* },
|
|
304
|
+
* settings: {
|
|
305
|
+
* tcp: {
|
|
306
|
+
* ipVersion: "V6",
|
|
307
|
+
* tls: true,
|
|
308
|
+
* queryResponses: [
|
|
309
|
+
* {
|
|
310
|
+
* send: "howdy",
|
|
311
|
+
* expect: "hi",
|
|
312
|
+
* },
|
|
313
|
+
* {
|
|
314
|
+
* send: "like this",
|
|
315
|
+
* expect: "like that",
|
|
316
|
+
* startTls: true,
|
|
317
|
+
* },
|
|
318
|
+
* ],
|
|
319
|
+
* tlsConfig: {
|
|
320
|
+
* serverName: "grafana.com",
|
|
321
|
+
* caCert: `-----BEGIN CERTIFICATE-----
|
|
322
|
+
* MIIEljCCAn4CCQCKJPUQQxeO0zANBgkqhkiG9w0BAQsFADANMQswCQYDVQQGEwJT
|
|
323
|
+
* RTAeFw0yMTA1MjkxOTIyNTdaFw0yNDAzMTgxOTIyNTdaMA0xCzAJBgNVBAYTAlNF
|
|
324
|
+
* MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnmbazDNUT0rSI4BpGZK+
|
|
325
|
+
* 0AJ+9FDkIYWJUtRLJoxw8CF+AobMFploYA2L2Myt80cTA1w8FrewjC8qlqdnrPWr
|
|
326
|
+
* h1ely2zsUljgi1/niH0ndjFzliL7UkinXQiAsTtYOrOQmzyd/o5PNdu7dz0m7stD
|
|
327
|
+
* BN/Sz5TlXZnA1/eJbqV/kqMau6b1MaBx8SbRfUG9+cSmUobFJwuktDrPuwJhcEkl
|
|
328
|
+
* iDmhEqu1GuZzmKvzPacLTVia1vSlmCTCu89NiHI8iGiiLtqNrapup7f8j5m3a3SL
|
|
329
|
+
* a+vXhplFj2piNl7Nc0dfuVgtEliTI+qUL2/+4A7gzRWZpHy21/LxMMXmBhdJW9En
|
|
330
|
+
* FWkev97VZLgb5TR3+qpSWmXcodjPy4dibvwsOMpdd+Q4AYulwvlDw5idRPVgGvk7
|
|
331
|
+
* qq03+w9ppZ5Fugws9k2CD9F/75JX2mCbRpkuPe8XXZ7bqrMaQgQMLOrs68HuiiCk
|
|
332
|
+
* FTklglq4DMKxnf/Y/T/MgIa9Q1o28YSevh6A7FnfPGARj2H2T4rToi+bC1Vf7qNB
|
|
333
|
+
* Z18bDpz99tRUTbyiRUSBMWLCGhU6c4HAqUrfrkpperOKFBQ3i38a79838oFdXHBW
|
|
334
|
+
* 6rx1t5cC3XwtEoUyeBKAygez8G1LDXbN3607MxVhAjhHKtPkYvuBfysSNU6JrR0z
|
|
335
|
+
* UV1IURJANt2UMuKgSEkG/IMCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAcipMhp/w
|
|
336
|
+
* yzfPy61faVAw9SPaMNRlnW9FCDC3N9CGOjo2knjXpObPzyzsJiUURTjrA9eFMpRA
|
|
337
|
+
* e2Rgn2j+nvm2XdLAlC4Kh8jqv/wCL0X6BTQMdN5aOhXdSiXtpXOMvXYY/dQ4ebRZ
|
|
338
|
+
* XeRCVWQD79JbV6/uyx0nCV3FVcU7L1P4UjxroefVr0soLPMirgxHmOxLnkoVgdcB
|
|
339
|
+
* tqufP5kJx9CIeJXPx3QQsk1XfEtxtUvuw4ZaZkQnNUqvGl7V+AZpur5Eqfv3zBi8
|
|
340
|
+
* QxxL7qGkARNssNWH2Ju+tqpM/UZRnjlFrDR4SXUgT0coTduBalUY6qHkciHmRpiP
|
|
341
|
+
* tf3SgpDeiCSOV2iVFGdaR1mz3muWoAYWFstcWN3a3HjjVugIi23yLN8Gv8CNeoH4
|
|
342
|
+
* prulinFCLrFgAh8SLAF8mOAZanT06LH8jOIFYrdUxH+ZeRBR0rLoFjUF+JB7UKD9
|
|
343
|
+
* 5TA+B4EBzQ1tMbGFU1DX79MjAejq0IV0Nzq+GMfBvLHxEf4+Oz8nqhDXQcJ6TdtY
|
|
344
|
+
* l3Lyw5zBvOL80SBK+Mr0UP7d9U3VXgbGHCYVJU6Ot1TwiGwahtWALRALA3TWeGkq
|
|
345
|
+
* 7kyD1H+nm+9lfKhuyBRQnRGBVyze2lAp7oxwshJuhBwEXosXFxq1Cy6QhPN77r6N
|
|
346
|
+
* vuhxvtppolNnyOgGxwG4zquqq2V5/+vKjKY=
|
|
347
|
+
* -----END CERTIFICATE-----
|
|
348
|
+
* `,
|
|
349
|
+
* },
|
|
350
|
+
* },
|
|
351
|
+
* },
|
|
352
|
+
* });
|
|
353
|
+
* ```
|
|
354
|
+
* <!--End PulumiCodeChooser -->
|
|
355
|
+
*
|
|
356
|
+
* ### Traceroute Basic
|
|
357
|
+
*
|
|
358
|
+
* <!--Start PulumiCodeChooser -->
|
|
359
|
+
* ```typescript
|
|
360
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
361
|
+
* import * as grafana from "@pulumi/grafana";
|
|
362
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
363
|
+
*
|
|
364
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
365
|
+
* const traceroute = new grafana.SyntheticMonitoringCheck("traceroute", {
|
|
366
|
+
* job: "Traceroute defaults",
|
|
367
|
+
* target: "grafana.com",
|
|
368
|
+
* enabled: false,
|
|
369
|
+
* frequency: 120000,
|
|
370
|
+
* timeout: 30000,
|
|
371
|
+
* probes: [main.then(main => main.probes?.Atlanta)],
|
|
372
|
+
* labels: {
|
|
373
|
+
* foo: "bar",
|
|
374
|
+
* },
|
|
375
|
+
* settings: {
|
|
376
|
+
* traceroute: {},
|
|
377
|
+
* },
|
|
378
|
+
* });
|
|
379
|
+
* ```
|
|
380
|
+
* <!--End PulumiCodeChooser -->
|
|
381
|
+
*
|
|
382
|
+
* ### Traceroute Complex
|
|
383
|
+
*
|
|
384
|
+
* <!--Start PulumiCodeChooser -->
|
|
385
|
+
* ```typescript
|
|
386
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
387
|
+
* import * as grafana from "@pulumi/grafana";
|
|
388
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
389
|
+
*
|
|
390
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
391
|
+
* const traceroute = new grafana.SyntheticMonitoringCheck("traceroute", {
|
|
392
|
+
* job: "Traceroute complex",
|
|
393
|
+
* target: "grafana.net",
|
|
394
|
+
* enabled: false,
|
|
395
|
+
* frequency: 120000,
|
|
396
|
+
* timeout: 30000,
|
|
397
|
+
* probes: [
|
|
398
|
+
* main.then(main => main.probes?.Frankfurt),
|
|
399
|
+
* main.then(main => main.probes?.London),
|
|
400
|
+
* ],
|
|
401
|
+
* labels: {
|
|
402
|
+
* foo: "baz",
|
|
403
|
+
* },
|
|
404
|
+
* settings: {
|
|
405
|
+
* traceroute: {
|
|
406
|
+
* maxHops: 25,
|
|
407
|
+
* maxUnknownHops: 10,
|
|
408
|
+
* ptrLookup: false,
|
|
409
|
+
* },
|
|
410
|
+
* },
|
|
411
|
+
* });
|
|
412
|
+
* ```
|
|
413
|
+
* <!--End PulumiCodeChooser -->
|
|
414
|
+
*
|
|
415
|
+
* ## Import
|
|
416
|
+
*
|
|
417
|
+
* ```sh
|
|
418
|
+
* $ pulumi import grafana:index/syntheticMonitoringCheck:SyntheticMonitoringCheck name "{{ id }}"
|
|
419
|
+
* ```
|
|
420
|
+
*/
|
|
8
421
|
class SyntheticMonitoringCheck extends pulumi.CustomResource {
|
|
9
422
|
/**
|
|
10
423
|
* Get an existing SyntheticMonitoringCheck resource's state with the given name, ID, and optional extra
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syntheticMonitoringCheck.js","sourceRoot":"","sources":["../syntheticMonitoringCheck.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC,MAAa,wBAAyB,SAAQ,MAAM,CAAC,cAAc;IAC/D;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAAqC,EAAE,IAAmC;QACnI,OAAO,IAAI,wBAAwB,CAAC,IAAI,EAAO,KAAK,kCAAO,IAAI,KAAE,EAAE,EAAE,EAAE,IAAG,CAAC;IAC/E,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,wBAAwB,CAAC,YAAY,CAAC;IACzE,CAAC;
|
|
1
|
+
{"version":3,"file":"syntheticMonitoringCheck.js","sourceRoot":"","sources":["../syntheticMonitoringCheck.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,73 @@
|
|
|
1
1
|
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
/**
|
|
3
|
+
* Sets up Synthetic Monitoring on a Grafana cloud stack and generates a token.
|
|
4
|
+
* Once a Grafana Cloud stack is created, a user can either use this resource or go into the UI to install synthetic monitoring.
|
|
5
|
+
* This resource cannot be imported but it can be used on an existing Synthetic Monitoring installation without issues.
|
|
6
|
+
*
|
|
7
|
+
* **Note that this resource must be used on a provider configured with Grafana Cloud credentials.**
|
|
8
|
+
*
|
|
9
|
+
* * [Official documentation](https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/)
|
|
10
|
+
* * [API documentation](https://github.com/grafana/synthetic-monitoring-api-go-client/blob/main/docs/API.md#apiv1registerinstall)
|
|
11
|
+
*
|
|
12
|
+
* Required access policy scopes:
|
|
13
|
+
*
|
|
14
|
+
* * stacks:read
|
|
15
|
+
*
|
|
16
|
+
* ## Example Usage
|
|
17
|
+
*
|
|
18
|
+
* <!--Start PulumiCodeChooser -->
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
21
|
+
* import * as grafana from "@pulumi/grafana";
|
|
22
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
23
|
+
*
|
|
24
|
+
* const config = new pulumi.Config();
|
|
25
|
+
* const cloudAccessPolicyToken = config.requireObject("cloudAccessPolicyToken");
|
|
26
|
+
* const stackSlug = config.requireObject("stackSlug");
|
|
27
|
+
* const cloudRegion = config.get("cloudRegion") || "us";
|
|
28
|
+
* // Step 1: Create a stack
|
|
29
|
+
* const cloud = new grafana.Provider("cloud", {cloudAccessPolicyToken: cloudAccessPolicyToken});
|
|
30
|
+
* const smStackCloudStack = new grafana.CloudStack("smStackCloudStack", {
|
|
31
|
+
* slug: stackSlug,
|
|
32
|
+
* regionSlug: cloudRegion,
|
|
33
|
+
* }, {
|
|
34
|
+
* provider: grafana.cloud,
|
|
35
|
+
* });
|
|
36
|
+
* // Step 2: Install Synthetic Monitoring on the stack
|
|
37
|
+
* const smMetricsPublishCloudAccessPolicy = new grafana.CloudAccessPolicy("smMetricsPublishCloudAccessPolicy", {
|
|
38
|
+
* region: cloudRegion,
|
|
39
|
+
* scopes: [
|
|
40
|
+
* "metrics:write",
|
|
41
|
+
* "stacks:read",
|
|
42
|
+
* ],
|
|
43
|
+
* realms: [{
|
|
44
|
+
* type: "stack",
|
|
45
|
+
* identifier: smStackCloudStack.id,
|
|
46
|
+
* }],
|
|
47
|
+
* }, {
|
|
48
|
+
* provider: grafana.cloud,
|
|
49
|
+
* });
|
|
50
|
+
* const smMetricsPublishCloudAccessPolicyToken = new grafana.CloudAccessPolicyToken("smMetricsPublishCloudAccessPolicyToken", {
|
|
51
|
+
* region: cloudRegion,
|
|
52
|
+
* accessPolicyId: smMetricsPublishCloudAccessPolicy.policyId,
|
|
53
|
+
* }, {
|
|
54
|
+
* provider: grafana.cloud,
|
|
55
|
+
* });
|
|
56
|
+
* const smStackSyntheticMonitoringInstallation = new grafana.SyntheticMonitoringInstallation("smStackSyntheticMonitoringInstallation", {
|
|
57
|
+
* stackId: smStackCloudStack.id,
|
|
58
|
+
* metricsPublisherKey: smMetricsPublishCloudAccessPolicyToken.token,
|
|
59
|
+
* }, {
|
|
60
|
+
* provider: grafana.cloud,
|
|
61
|
+
* });
|
|
62
|
+
* // Step 3: Interact with Synthetic Monitoring
|
|
63
|
+
* const sm = new grafana.Provider("sm", {
|
|
64
|
+
* smAccessToken: smStackSyntheticMonitoringInstallation.smAccessToken,
|
|
65
|
+
* smUrl: smStackSyntheticMonitoringInstallation.stackSmApiUrl,
|
|
66
|
+
* });
|
|
67
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
68
|
+
* ```
|
|
69
|
+
* <!--End PulumiCodeChooser -->
|
|
70
|
+
*/
|
|
2
71
|
export declare class SyntheticMonitoringInstallation extends pulumi.CustomResource {
|
|
3
72
|
/**
|
|
4
73
|
* Get an existing SyntheticMonitoringInstallation resource's state with the given name, ID, and optional extra
|
|
@@ -16,10 +85,7 @@ export declare class SyntheticMonitoringInstallation extends pulumi.CustomResour
|
|
|
16
85
|
*/
|
|
17
86
|
static isInstance(obj: any): obj is SyntheticMonitoringInstallation;
|
|
18
87
|
/**
|
|
19
|
-
* The [Grafana Cloud access
|
|
20
|
-
* policy](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/) with
|
|
21
|
-
* the following scopes: `stacks:read`, `metrics:write`, `logs:write`, `traces:write`. This is used to publish metrics and
|
|
22
|
-
* logs to Grafana Cloud stack.
|
|
88
|
+
* The [Grafana Cloud access policy](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/) with the following scopes: `stacks:read`, `metrics:write`, `logs:write`, `traces:write`. This is used to publish metrics and logs to Grafana Cloud stack.
|
|
23
89
|
*/
|
|
24
90
|
readonly metricsPublisherKey: pulumi.Output<string>;
|
|
25
91
|
/**
|
|
@@ -31,10 +97,7 @@ export declare class SyntheticMonitoringInstallation extends pulumi.CustomResour
|
|
|
31
97
|
*/
|
|
32
98
|
readonly stackId: pulumi.Output<string>;
|
|
33
99
|
/**
|
|
34
|
-
* The URL of the SM API to install SM on. This depends on the stack region, find the list of API URLs here:
|
|
35
|
-
* https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/set-up-private-probes/#probe-api-server-url.
|
|
36
|
-
* A static mapping exists in the provider but it may not contain all the regions. If it does contain the stack's region,
|
|
37
|
-
* this field is computed automatically and readable.
|
|
100
|
+
* The URL of the SM API to install SM on. This depends on the stack region, find the list of API URLs here: https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/set-up-private-probes/#probe-api-server-url. A static mapping exists in the provider but it may not contain all the regions. If it does contain the stack's region, this field is computed automatically and readable.
|
|
38
101
|
*/
|
|
39
102
|
readonly stackSmApiUrl: pulumi.Output<string>;
|
|
40
103
|
/**
|
|
@@ -51,10 +114,7 @@ export declare class SyntheticMonitoringInstallation extends pulumi.CustomResour
|
|
|
51
114
|
*/
|
|
52
115
|
export interface SyntheticMonitoringInstallationState {
|
|
53
116
|
/**
|
|
54
|
-
* The [Grafana Cloud access
|
|
55
|
-
* policy](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/) with
|
|
56
|
-
* the following scopes: `stacks:read`, `metrics:write`, `logs:write`, `traces:write`. This is used to publish metrics and
|
|
57
|
-
* logs to Grafana Cloud stack.
|
|
117
|
+
* The [Grafana Cloud access policy](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/) with the following scopes: `stacks:read`, `metrics:write`, `logs:write`, `traces:write`. This is used to publish metrics and logs to Grafana Cloud stack.
|
|
58
118
|
*/
|
|
59
119
|
metricsPublisherKey?: pulumi.Input<string>;
|
|
60
120
|
/**
|
|
@@ -66,10 +126,7 @@ export interface SyntheticMonitoringInstallationState {
|
|
|
66
126
|
*/
|
|
67
127
|
stackId?: pulumi.Input<string>;
|
|
68
128
|
/**
|
|
69
|
-
* The URL of the SM API to install SM on. This depends on the stack region, find the list of API URLs here:
|
|
70
|
-
* https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/set-up-private-probes/#probe-api-server-url.
|
|
71
|
-
* A static mapping exists in the provider but it may not contain all the regions. If it does contain the stack's region,
|
|
72
|
-
* this field is computed automatically and readable.
|
|
129
|
+
* The URL of the SM API to install SM on. This depends on the stack region, find the list of API URLs here: https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/set-up-private-probes/#probe-api-server-url. A static mapping exists in the provider but it may not contain all the regions. If it does contain the stack's region, this field is computed automatically and readable.
|
|
73
130
|
*/
|
|
74
131
|
stackSmApiUrl?: pulumi.Input<string>;
|
|
75
132
|
}
|
|
@@ -78,10 +135,7 @@ export interface SyntheticMonitoringInstallationState {
|
|
|
78
135
|
*/
|
|
79
136
|
export interface SyntheticMonitoringInstallationArgs {
|
|
80
137
|
/**
|
|
81
|
-
* The [Grafana Cloud access
|
|
82
|
-
* policy](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/) with
|
|
83
|
-
* the following scopes: `stacks:read`, `metrics:write`, `logs:write`, `traces:write`. This is used to publish metrics and
|
|
84
|
-
* logs to Grafana Cloud stack.
|
|
138
|
+
* The [Grafana Cloud access policy](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/) with the following scopes: `stacks:read`, `metrics:write`, `logs:write`, `traces:write`. This is used to publish metrics and logs to Grafana Cloud stack.
|
|
85
139
|
*/
|
|
86
140
|
metricsPublisherKey: pulumi.Input<string>;
|
|
87
141
|
/**
|
|
@@ -89,10 +143,7 @@ export interface SyntheticMonitoringInstallationArgs {
|
|
|
89
143
|
*/
|
|
90
144
|
stackId: pulumi.Input<string>;
|
|
91
145
|
/**
|
|
92
|
-
* The URL of the SM API to install SM on. This depends on the stack region, find the list of API URLs here:
|
|
93
|
-
* https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/set-up-private-probes/#probe-api-server-url.
|
|
94
|
-
* A static mapping exists in the provider but it may not contain all the regions. If it does contain the stack's region,
|
|
95
|
-
* this field is computed automatically and readable.
|
|
146
|
+
* The URL of the SM API to install SM on. This depends on the stack region, find the list of API URLs here: https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/set-up-private-probes/#probe-api-server-url. A static mapping exists in the provider but it may not contain all the regions. If it does contain the stack's region, this field is computed automatically and readable.
|
|
96
147
|
*/
|
|
97
148
|
stackSmApiUrl?: pulumi.Input<string>;
|
|
98
149
|
}
|
|
@@ -5,6 +5,75 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.SyntheticMonitoringInstallation = void 0;
|
|
6
6
|
const pulumi = require("@pulumi/pulumi");
|
|
7
7
|
const utilities = require("./utilities");
|
|
8
|
+
/**
|
|
9
|
+
* Sets up Synthetic Monitoring on a Grafana cloud stack and generates a token.
|
|
10
|
+
* Once a Grafana Cloud stack is created, a user can either use this resource or go into the UI to install synthetic monitoring.
|
|
11
|
+
* This resource cannot be imported but it can be used on an existing Synthetic Monitoring installation without issues.
|
|
12
|
+
*
|
|
13
|
+
* **Note that this resource must be used on a provider configured with Grafana Cloud credentials.**
|
|
14
|
+
*
|
|
15
|
+
* * [Official documentation](https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/)
|
|
16
|
+
* * [API documentation](https://github.com/grafana/synthetic-monitoring-api-go-client/blob/main/docs/API.md#apiv1registerinstall)
|
|
17
|
+
*
|
|
18
|
+
* Required access policy scopes:
|
|
19
|
+
*
|
|
20
|
+
* * stacks:read
|
|
21
|
+
*
|
|
22
|
+
* ## Example Usage
|
|
23
|
+
*
|
|
24
|
+
* <!--Start PulumiCodeChooser -->
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
27
|
+
* import * as grafana from "@pulumi/grafana";
|
|
28
|
+
* import * as grafana from "@pulumiverse/grafana";
|
|
29
|
+
*
|
|
30
|
+
* const config = new pulumi.Config();
|
|
31
|
+
* const cloudAccessPolicyToken = config.requireObject("cloudAccessPolicyToken");
|
|
32
|
+
* const stackSlug = config.requireObject("stackSlug");
|
|
33
|
+
* const cloudRegion = config.get("cloudRegion") || "us";
|
|
34
|
+
* // Step 1: Create a stack
|
|
35
|
+
* const cloud = new grafana.Provider("cloud", {cloudAccessPolicyToken: cloudAccessPolicyToken});
|
|
36
|
+
* const smStackCloudStack = new grafana.CloudStack("smStackCloudStack", {
|
|
37
|
+
* slug: stackSlug,
|
|
38
|
+
* regionSlug: cloudRegion,
|
|
39
|
+
* }, {
|
|
40
|
+
* provider: grafana.cloud,
|
|
41
|
+
* });
|
|
42
|
+
* // Step 2: Install Synthetic Monitoring on the stack
|
|
43
|
+
* const smMetricsPublishCloudAccessPolicy = new grafana.CloudAccessPolicy("smMetricsPublishCloudAccessPolicy", {
|
|
44
|
+
* region: cloudRegion,
|
|
45
|
+
* scopes: [
|
|
46
|
+
* "metrics:write",
|
|
47
|
+
* "stacks:read",
|
|
48
|
+
* ],
|
|
49
|
+
* realms: [{
|
|
50
|
+
* type: "stack",
|
|
51
|
+
* identifier: smStackCloudStack.id,
|
|
52
|
+
* }],
|
|
53
|
+
* }, {
|
|
54
|
+
* provider: grafana.cloud,
|
|
55
|
+
* });
|
|
56
|
+
* const smMetricsPublishCloudAccessPolicyToken = new grafana.CloudAccessPolicyToken("smMetricsPublishCloudAccessPolicyToken", {
|
|
57
|
+
* region: cloudRegion,
|
|
58
|
+
* accessPolicyId: smMetricsPublishCloudAccessPolicy.policyId,
|
|
59
|
+
* }, {
|
|
60
|
+
* provider: grafana.cloud,
|
|
61
|
+
* });
|
|
62
|
+
* const smStackSyntheticMonitoringInstallation = new grafana.SyntheticMonitoringInstallation("smStackSyntheticMonitoringInstallation", {
|
|
63
|
+
* stackId: smStackCloudStack.id,
|
|
64
|
+
* metricsPublisherKey: smMetricsPublishCloudAccessPolicyToken.token,
|
|
65
|
+
* }, {
|
|
66
|
+
* provider: grafana.cloud,
|
|
67
|
+
* });
|
|
68
|
+
* // Step 3: Interact with Synthetic Monitoring
|
|
69
|
+
* const sm = new grafana.Provider("sm", {
|
|
70
|
+
* smAccessToken: smStackSyntheticMonitoringInstallation.smAccessToken,
|
|
71
|
+
* smUrl: smStackSyntheticMonitoringInstallation.stackSmApiUrl,
|
|
72
|
+
* });
|
|
73
|
+
* const main = grafana.getSyntheticMonitoringProbes({});
|
|
74
|
+
* ```
|
|
75
|
+
* <!--End PulumiCodeChooser -->
|
|
76
|
+
*/
|
|
8
77
|
class SyntheticMonitoringInstallation extends pulumi.CustomResource {
|
|
9
78
|
/**
|
|
10
79
|
* Get an existing SyntheticMonitoringInstallation resource's state with the given name, ID, and optional extra
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syntheticMonitoringInstallation.js","sourceRoot":"","sources":["../syntheticMonitoringInstallation.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC,MAAa,+BAAgC,SAAQ,MAAM,CAAC,cAAc;IACtE;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAA4C,EAAE,IAAmC;QAC1I,OAAO,IAAI,+BAA+B,CAAC,IAAI,EAAO,KAAK,kCAAO,IAAI,KAAE,EAAE,EAAE,EAAE,IAAG,CAAC;IACtF,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,+BAA+B,CAAC,YAAY,CAAC;IAChF,CAAC;
|
|
1
|
+
{"version":3,"file":"syntheticMonitoringInstallation.js","sourceRoot":"","sources":["../syntheticMonitoringInstallation.ts"],"names":[],"mappings":"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"}
|