UNPKG

@pulumi/signalfx

Version:

A Pulumi package for creating and managing SignalFx resources.

144 lines 5.63 kB
"use strict"; // *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** Object.defineProperty(exports, "__esModule", { value: true }); exports.Slo = void 0; const pulumi = require("@pulumi/pulumi"); const utilities = require("./utilities"); /** * Provides a Splunk Observability Cloud slo resource. This can be used to create and manage SLOs. * * To learn more about this feature take a look on [documentation for SLO](https://docs.splunk.com/observability/en/alerts-detectors-notifications/slo/slo-intro.html). * * ## Example * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as signalfx from "@pulumi/signalfx"; * * const fooServiceSlo = new signalfx.Slo("foo_service_slo", { * name: "foo service SLO", * type: "RequestBased", * description: "SLO monitoring for foo service", * input: { * programText: `G = data('spans.count', filter=filter('sf_error', 'false') and filter('sf_service', 'foo-service')) * T = data('spans.count', filter=filter('sf_service', 'foo-service'))`, * goodEventsLabel: "G", * totalEventsLabel: "T", * }, * target: { * type: "RollingWindow", * slo: 95, * compliancePeriod: "30d", * alertRules: [{ * type: "BREACH", * rules: [{ * severity: "Warning", * notifications: ["Email,foo-alerts@bar.com"], * }], * }], * }, * }); * ``` * * ## Notification format * * As Splunk Observability Cloud supports different notification mechanisms, use a comma-delimited string to provide inputs. If you want to specify multiple notifications, each must be a member in the list, like so: * * See [Splunk Observability Cloud Docs](https://dev.splunk.com/observability/reference/api/detectors/latest) for more information. * * Here are some example of how to configure each notification type: * * ### Email * * ### Jira * * Note that the `credentialId` is the Splunk-provided ID shown after setting up your Jira integration. See also `signalfx.jira.Integration`. * * ### OpsGenie * * Note that the `credentialId` is the Splunk-provided ID shown after setting up your Opsgenie integration. `Team` here is hardcoded as the `responderType` as that is the only acceptable type as per the API docs. * * ### PagerDuty * * ### Slack * * Exclude the `#` on the channel name: * * ### Team * * Sends [notifications to a team](https://docs.signalfx.com/en/latest/managing/teams/team-notifications.html). * * ### TeamEmail * * Sends an email to every member of a team. * * ### Splunk On-Call (formerly VictorOps) * * ### Webhooks * * You need to include all the commas even if you only use a credential id. * * You can either configure a Webhook to use an existing integration's credential id: * * Or configure one inline: */ class Slo extends pulumi.CustomResource { /** * Get an existing Slo 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 Slo(name, state, Object.assign(Object.assign({}, opts), { id: id })); } /** * Returns true if the given object is an instance of Slo. 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'] === Slo.__pulumiType; } constructor(name, argsOrState, opts) { let resourceInputs = {}; opts = opts || {}; if (opts.id) { const state = argsOrState; resourceInputs["description"] = state ? state.description : undefined; resourceInputs["input"] = state ? state.input : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["target"] = state ? state.target : undefined; resourceInputs["type"] = state ? state.type : undefined; } else { const args = argsOrState; if ((!args || args.input === undefined) && !opts.urn) { throw new Error("Missing required property 'input'"); } if ((!args || args.target === undefined) && !opts.urn) { throw new Error("Missing required property 'target'"); } if ((!args || args.type === undefined) && !opts.urn) { throw new Error("Missing required property 'type'"); } resourceInputs["description"] = args ? args.description : undefined; resourceInputs["input"] = args ? args.input : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["target"] = args ? args.target : undefined; resourceInputs["type"] = args ? args.type : undefined; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); super(Slo.__pulumiType, name, resourceInputs, opts); } } exports.Slo = Slo; /** @internal */ Slo.__pulumiType = 'signalfx:index/slo:Slo'; //# sourceMappingURL=slo.js.map