UNPKG

@lbrlabs/pulumi-grafana

Version:

A Pulumi package for creating and managing grafana.

464 lines 17.5 kB
"use strict"; // *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** Object.defineProperty(exports, "__esModule", { value: true }); exports.SyntheticMonitoringCheck = void 0; const pulumi = require("@pulumi/pulumi"); const utilities = require("./utilities"); /** * Synthetic Monitoring checks are tests that run on selected probes at defined * intervals and report metrics and logs back to your Grafana Cloud account. The * target for checks can be a domain name, a server, or a website, depending on * what information you would like to gather about your endpoint. You can define * multiple checks for a single endpoint to check different capabilities. * * * [Official documentation](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/checks/) * * ## Example Usage * ### DNS Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@lbrlabs/pulumi-grafana"; * import * as grafana from "@pulumi/grafana"; * * const main = grafana.getSyntheticMonitoringProbes({}); * const dns = new grafana.SyntheticMonitoringCheck("dns", { * job: "DNS Defaults", * target: "grafana.com", * enabled: false, * probes: [main.then(main => main.probes?.Atlanta)], * labels: { * foo: "bar", * }, * settings: { * dns: {}, * }, * }); * ``` * ### DNS Complex * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@lbrlabs/pulumi-grafana"; * import * as grafana from "@pulumi/grafana"; * * const main = grafana.getSyntheticMonitoringProbes({}); * const dns = new grafana.SyntheticMonitoringCheck("dns", { * job: "DNS Updated", * target: "grafana.net", * enabled: false, * probes: [ * main.then(main => main.probes?.Frankfurt), * main.then(main => main.probes?.London), * ], * labels: { * foo: "baz", * }, * settings: { * dns: { * ipVersion: "Any", * server: "8.8.4.4", * port: 8600, * recordType: "CNAME", * protocol: "TCP", * validRCodes: [ * "NOERROR", * "NOTAUTH", * ], * validateAnswerRrs: { * failIfMatchesRegexps: [".+-bad-stuff*"], * failIfNotMatchesRegexps: [".+-good-stuff*"], * }, * validateAuthorityRrs: { * failIfMatchesRegexps: [".+-bad-stuff*"], * failIfNotMatchesRegexps: [".+-good-stuff*"], * }, * validateAdditionalRrs: [{ * failIfMatchesRegexps: [".+-bad-stuff*"], * failIfNotMatchesRegexps: [".+-good-stuff*"], * }], * }, * }, * }); * ``` * ### HTTP Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@lbrlabs/pulumi-grafana"; * import * as grafana from "@pulumi/grafana"; * * const main = grafana.getSyntheticMonitoringProbes({}); * const http = new grafana.SyntheticMonitoringCheck("http", { * job: "HTTP Defaults", * target: "https://grafana.com", * enabled: false, * probes: [main.then(main => main.probes?.Atlanta)], * labels: { * foo: "bar", * }, * settings: { * http: {}, * }, * }); * ``` * ### HTTP Complex * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@lbrlabs/pulumi-grafana"; * import * as grafana from "@pulumi/grafana"; * * const main = grafana.getSyntheticMonitoringProbes({}); * const http = new grafana.SyntheticMonitoringCheck("http", { * job: "HTTP Defaults", * target: "https://grafana.org", * enabled: false, * probes: [ * main.then(main => main.probes?.Bangalore), * main.then(main => main.probes?.Mumbai), * ], * labels: { * foo: "bar", * }, * settings: { * http: { * ipVersion: "V6", * method: "TRACE", * body: "and spirit", * noFollowRedirects: true, * bearerToken: "asdfjkl;", * proxyUrl: "https://almost-there", * failIfSsl: true, * failIfNotSsl: true, * cacheBustingQueryParamName: "pineapple", * tlsConfig: { * serverName: "grafana.org", * clientCert: `-----BEGIN CERTIFICATE----- * MIIEljCCAn4CCQCKJPUQQxeO0zANBgkqhkiG9w0BAQsFADANMQswCQYDVQQGEwJT * RTAeFw0yMTA1MjkxOTIyNTdaFw0yNDAzMTgxOTIyNTdaMA0xCzAJBgNVBAYTAlNF * MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnmbazDNUT0rSI4BpGZK+ * 0AJ+9FDkIYWJUtRLJoxw8CF+AobMFploYA2L2Myt80cTA1w8FrewjC8qlqdnrPWr * h1ely2zsUljgi1/niH0ndjFzliL7UkinXQiAsTtYOrOQmzyd/o5PNdu7dz0m7stD * BN/Sz5TlXZnA1/eJbqV/kqMau6b1MaBx8SbRfUG9+cSmUobFJwuktDrPuwJhcEkl * iDmhEqu1GuZzmKvzPacLTVia1vSlmCTCu89NiHI8iGiiLtqNrapup7f8j5m3a3SL * a+vXhplFj2piNl7Nc0dfuVgtEliTI+qUL2/+4A7gzRWZpHy21/LxMMXmBhdJW9En * FWkev97VZLgb5TR3+qpSWmXcodjPy4dibvwsOMpdd+Q4AYulwvlDw5idRPVgGvk7 * qq03+w9ppZ5Fugws9k2CD9F/75JX2mCbRpkuPe8XXZ7bqrMaQgQMLOrs68HuiiCk * FTklglq4DMKxnf/Y/T/MgIa9Q1o28YSevh6A7FnfPGARj2H2T4rToi+bC1Vf7qNB * Z18bDpz99tRUTbyiRUSBMWLCGhU6c4HAqUrfrkpperOKFBQ3i38a79838oFdXHBW * 6rx1t5cC3XwtEoUyeBKAygez8G1LDXbN3607MxVhAjhHKtPkYvuBfysSNU6JrR0z * UV1IURJANt2UMuKgSEkG/IMCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAcipMhp/w * yzfPy61faVAw9SPaMNRlnW9FCDC3N9CGOjo2knjXpObPzyzsJiUURTjrA9eFMpRA * e2Rgn2j+nvm2XdLAlC4Kh8jqv/wCL0X6BTQMdN5aOhXdSiXtpXOMvXYY/dQ4ebRZ * XeRCVWQD79JbV6/uyx0nCV3FVcU7L1P4UjxroefVr0soLPMirgxHmOxLnkoVgdcB * tqufP5kJx9CIeJXPx3QQsk1XfEtxtUvuw4ZaZkQnNUqvGl7V+AZpur5Eqfv3zBi8 * QxxL7qGkARNssNWH2Ju+tqpM/UZRnjlFrDR4SXUgT0coTduBalUY6qHkciHmRpiP * tf3SgpDeiCSOV2iVFGdaR1mz3muWoAYWFstcWN3a3HjjVugIi23yLN8Gv8CNeoH4 * prulinFCLrFgAh8SLAF8mOAZanT06LH8jOIFYrdUxH+ZeRBR0rLoFjUF+JB7UKD9 * 5TA+B4EBzQ1tMbGFU1DX79MjAejq0IV0Nzq+GMfBvLHxEf4+Oz8nqhDXQcJ6TdtY * l3Lyw5zBvOL80SBK+Mr0UP7d9U3VXgbGHCYVJU6Ot1TwiGwahtWALRALA3TWeGkq * 7kyD1H+nm+9lfKhuyBRQnRGBVyze2lAp7oxwshJuhBwEXosXFxq1Cy6QhPN77r6N * vuhxvtppolNnyOgGxwG4zquqq2V5/+vKjKY= * -----END CERTIFICATE----- * `, * }, * headers: ["Content-Type: multipart/form-data; boundary=something"], * basicAuth: { * username: "open", * password: "sesame", * }, * validStatusCodes: [ * 200, * 201, * ], * validHttpVersions: [ * "HTTP/1.0", * "HTTP/1.1", * "HTTP/2.0", * ], * failIfBodyMatchesRegexps: ["*bad stuff*"], * failIfBodyNotMatchesRegexps: ["*good stuff*"], * failIfHeaderMatchesRegexps: [{ * header: "Content-Type", * regexp: "application/soap*", * allowMissing: true, * }], * }, * }, * }); * ``` * ### Ping Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@lbrlabs/pulumi-grafana"; * import * as grafana from "@pulumi/grafana"; * * const main = grafana.getSyntheticMonitoringProbes({}); * const ping = new grafana.SyntheticMonitoringCheck("ping", { * job: "Ping Defaults", * target: "grafana.com", * enabled: false, * probes: [main.then(main => main.probes?.Atlanta)], * labels: { * foo: "bar", * }, * settings: { * ping: {}, * }, * }); * ``` * ### Ping Complex * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@lbrlabs/pulumi-grafana"; * import * as grafana from "@pulumi/grafana"; * * const main = grafana.getSyntheticMonitoringProbes({}); * const ping = new grafana.SyntheticMonitoringCheck("ping", { * job: "Ping Updated", * target: "grafana.net", * enabled: false, * probes: [ * main.then(main => main.probes?.Frankfurt), * main.then(main => main.probes?.London), * ], * labels: { * foo: "baz", * }, * settings: { * ping: { * ipVersion: "Any", * payloadSize: 20, * dontFragment: true, * }, * }, * }); * ``` * ### TCP Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@lbrlabs/pulumi-grafana"; * import * as grafana from "@pulumi/grafana"; * * const main = grafana.getSyntheticMonitoringProbes({}); * const tcp = new grafana.SyntheticMonitoringCheck("tcp", { * job: "TCP Defaults", * target: "grafana.com:80", * enabled: false, * probes: [main.then(main => main.probes?.Atlanta)], * labels: { * foo: "bar", * }, * settings: { * tcp: {}, * }, * }); * ``` * ### TCP Complex * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@lbrlabs/pulumi-grafana"; * import * as grafana from "@pulumi/grafana"; * * const main = grafana.getSyntheticMonitoringProbes({}); * const tcp = new grafana.SyntheticMonitoringCheck("tcp", { * job: "TCP Defaults", * target: "grafana.com:443", * enabled: false, * probes: [ * main.then(main => main.probes?.Frankfurt), * main.then(main => main.probes?.London), * ], * labels: { * foo: "baz", * }, * settings: { * tcp: { * ipVersion: "V6", * tls: true, * queryResponses: [ * { * send: "howdy", * expect: "hi", * }, * { * send: "like this", * expect: "like that", * startTls: true, * }, * ], * tlsConfig: { * serverName: "grafana.com", * caCert: `-----BEGIN CERTIFICATE----- * MIIEljCCAn4CCQCKJPUQQxeO0zANBgkqhkiG9w0BAQsFADANMQswCQYDVQQGEwJT * RTAeFw0yMTA1MjkxOTIyNTdaFw0yNDAzMTgxOTIyNTdaMA0xCzAJBgNVBAYTAlNF * MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnmbazDNUT0rSI4BpGZK+ * 0AJ+9FDkIYWJUtRLJoxw8CF+AobMFploYA2L2Myt80cTA1w8FrewjC8qlqdnrPWr * h1ely2zsUljgi1/niH0ndjFzliL7UkinXQiAsTtYOrOQmzyd/o5PNdu7dz0m7stD * BN/Sz5TlXZnA1/eJbqV/kqMau6b1MaBx8SbRfUG9+cSmUobFJwuktDrPuwJhcEkl * iDmhEqu1GuZzmKvzPacLTVia1vSlmCTCu89NiHI8iGiiLtqNrapup7f8j5m3a3SL * a+vXhplFj2piNl7Nc0dfuVgtEliTI+qUL2/+4A7gzRWZpHy21/LxMMXmBhdJW9En * FWkev97VZLgb5TR3+qpSWmXcodjPy4dibvwsOMpdd+Q4AYulwvlDw5idRPVgGvk7 * qq03+w9ppZ5Fugws9k2CD9F/75JX2mCbRpkuPe8XXZ7bqrMaQgQMLOrs68HuiiCk * FTklglq4DMKxnf/Y/T/MgIa9Q1o28YSevh6A7FnfPGARj2H2T4rToi+bC1Vf7qNB * Z18bDpz99tRUTbyiRUSBMWLCGhU6c4HAqUrfrkpperOKFBQ3i38a79838oFdXHBW * 6rx1t5cC3XwtEoUyeBKAygez8G1LDXbN3607MxVhAjhHKtPkYvuBfysSNU6JrR0z * UV1IURJANt2UMuKgSEkG/IMCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAcipMhp/w * yzfPy61faVAw9SPaMNRlnW9FCDC3N9CGOjo2knjXpObPzyzsJiUURTjrA9eFMpRA * e2Rgn2j+nvm2XdLAlC4Kh8jqv/wCL0X6BTQMdN5aOhXdSiXtpXOMvXYY/dQ4ebRZ * XeRCVWQD79JbV6/uyx0nCV3FVcU7L1P4UjxroefVr0soLPMirgxHmOxLnkoVgdcB * tqufP5kJx9CIeJXPx3QQsk1XfEtxtUvuw4ZaZkQnNUqvGl7V+AZpur5Eqfv3zBi8 * QxxL7qGkARNssNWH2Ju+tqpM/UZRnjlFrDR4SXUgT0coTduBalUY6qHkciHmRpiP * tf3SgpDeiCSOV2iVFGdaR1mz3muWoAYWFstcWN3a3HjjVugIi23yLN8Gv8CNeoH4 * prulinFCLrFgAh8SLAF8mOAZanT06LH8jOIFYrdUxH+ZeRBR0rLoFjUF+JB7UKD9 * 5TA+B4EBzQ1tMbGFU1DX79MjAejq0IV0Nzq+GMfBvLHxEf4+Oz8nqhDXQcJ6TdtY * l3Lyw5zBvOL80SBK+Mr0UP7d9U3VXgbGHCYVJU6Ot1TwiGwahtWALRALA3TWeGkq * 7kyD1H+nm+9lfKhuyBRQnRGBVyze2lAp7oxwshJuhBwEXosXFxq1Cy6QhPN77r6N * vuhxvtppolNnyOgGxwG4zquqq2V5/+vKjKY= * -----END CERTIFICATE----- * `, * }, * }, * }, * }); * ``` * ### Traceroute Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@lbrlabs/pulumi-grafana"; * import * as grafana from "@pulumi/grafana"; * * const main = grafana.getSyntheticMonitoringProbes({}); * const traceroute = new grafana.SyntheticMonitoringCheck("traceroute", { * job: "Traceroute defaults", * target: "grafana.com", * enabled: false, * frequency: 120000, * timeout: 30000, * probes: [main.then(main => main.probes?.Atlanta)], * labels: { * foo: "bar", * }, * settings: { * traceroute: {}, * }, * }); * ``` * ### Traceroute Complex * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@lbrlabs/pulumi-grafana"; * import * as grafana from "@pulumi/grafana"; * * const main = grafana.getSyntheticMonitoringProbes({}); * const traceroute = new grafana.SyntheticMonitoringCheck("traceroute", { * job: "Traceroute complex", * target: "grafana.net", * enabled: false, * frequency: 120000, * timeout: 30000, * probes: [ * main.then(main => main.probes?.Frankfurt), * main.then(main => main.probes?.London), * ], * labels: { * foo: "baz", * }, * settings: { * traceroute: { * maxHops: 25, * maxUnknownHops: 10, * ptrLookup: false, * }, * }, * }); * ``` * * ## Import * * ```sh * $ pulumi import grafana:index/syntheticMonitoringCheck:SyntheticMonitoringCheck check {{check-id}} * ``` */ class SyntheticMonitoringCheck extends pulumi.CustomResource { /** * Get an existing SyntheticMonitoringCheck resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name, id, state, opts) { return new SyntheticMonitoringCheck(name, state, Object.assign(Object.assign({}, opts), { id: id })); } /** * Returns true if the given object is an instance of SyntheticMonitoringCheck. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj) { if (obj === undefined || obj === null) { return false; } return obj['__pulumiType'] === SyntheticMonitoringCheck.__pulumiType; } constructor(name, argsOrState, opts) { let resourceInputs = {}; opts = opts || {}; if (opts.id) { const state = argsOrState; resourceInputs["alertSensitivity"] = state ? state.alertSensitivity : undefined; resourceInputs["basicMetricsOnly"] = state ? state.basicMetricsOnly : undefined; resourceInputs["enabled"] = state ? state.enabled : undefined; resourceInputs["frequency"] = state ? state.frequency : undefined; resourceInputs["job"] = state ? state.job : undefined; resourceInputs["labels"] = state ? state.labels : undefined; resourceInputs["probes"] = state ? state.probes : undefined; resourceInputs["settings"] = state ? state.settings : undefined; resourceInputs["target"] = state ? state.target : undefined; resourceInputs["tenantId"] = state ? state.tenantId : undefined; resourceInputs["timeout"] = state ? state.timeout : undefined; } else { const args = argsOrState; if ((!args || args.job === undefined) && !opts.urn) { throw new Error("Missing required property 'job'"); } if ((!args || args.probes === undefined) && !opts.urn) { throw new Error("Missing required property 'probes'"); } if ((!args || args.settings === undefined) && !opts.urn) { throw new Error("Missing required property 'settings'"); } if ((!args || args.target === undefined) && !opts.urn) { throw new Error("Missing required property 'target'"); } resourceInputs["alertSensitivity"] = args ? args.alertSensitivity : undefined; resourceInputs["basicMetricsOnly"] = args ? args.basicMetricsOnly : undefined; resourceInputs["enabled"] = args ? args.enabled : undefined; resourceInputs["frequency"] = args ? args.frequency : undefined; resourceInputs["job"] = args ? args.job : undefined; resourceInputs["labels"] = args ? args.labels : undefined; resourceInputs["probes"] = args ? args.probes : undefined; resourceInputs["settings"] = args ? args.settings : undefined; resourceInputs["target"] = args ? args.target : undefined; resourceInputs["timeout"] = args ? args.timeout : undefined; resourceInputs["tenantId"] = undefined /*out*/; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); super(SyntheticMonitoringCheck.__pulumiType, name, resourceInputs, opts); } } exports.SyntheticMonitoringCheck = SyntheticMonitoringCheck; /** @internal */ SyntheticMonitoringCheck.__pulumiType = 'grafana:index/syntheticMonitoringCheck:SyntheticMonitoringCheck'; //# sourceMappingURL=syntheticMonitoringCheck.js.map