Example#

{{< chooser language "typescript,python,go,csharp" >}} {{% choosable language typescript %}}

import * as pulumi from "@pulumi/pulumi";
import * as chronosphere from "@pulumi-chronosphere/pulumi-chronosphere";
 
let testTeam = new chronosphere.Team("testTeam", {
  name: "Pulumi Test Team",
  slug: "pulumi-test-team",
});
 
let testNotifier = new chronosphere.EmailAlertNotifier("testNotifier", {
  name: "Pulumi Test Notifier",
  slug: "pulumi-test-notifier",
  to: "blackhole@example.com",
});
 
let testNotificationPolicy = new chronosphere.NotificationPolicy(
  "testNotificationPolicy",
  {
    name: "Pulumi Test Notification Policy",
    slug: "pulumi-test-notification-policy",
    teamId: testTeam.id,
    routes: [
      {
        severity: "warn",
        notifiers: [testNotifier.slug],
      },
    ],
  }
);
 
let testCollection = new chronosphere.Collection("testCollection", {
  name: "Pulumi Test Collection",
  slug: "pulumi-test-collection",
  teamId: testTeam.id,
  notificationPolicyId: testNotificationPolicy.id,
});
 
let testMonitor = new chronosphere.Monitor("testMonitor", {
  name: "Pulumi Test Monitor",
  slug: "pulumi-test-monitor",
  collectionId: testCollection.id,
  query: {
    prometheusExpr: 'chrono_test_metric{job="chrono_test_job"}',
  },
  seriesConditions: {
    conditions: [
      {
        op: "GT",
        value: 1000,
        severity: "critical",
        sustain: "10h",
      },
    ],
  },
});
 
export const teamSlug = testTeam.slug;
export const monitorSlug = testMonitor.slug;

{{% /choosable %}} {{% choosable language python %}}

team = chronosphere.Team("testTeam",
    name="Pulumi Test Team",
    slug="pulumi-test-team",
)
 
notifier = chronosphere.EmailAlertNotifier("testNotifier",
    name="Pulumi Test Notifier",
    slug="pulumi-test-notifier",
    to="blackhole@example.com",
)
 
notification_policy = chronosphere.NotificationPolicy("testNotificationPolicy",
    name="Pulumi Test Notification Policy",
    slug="pulumi-test-notification-policy",
    team_id=team.id,
    routes=[{
        "severity": "warn",
        "notifiers": [notifier.slug],
    }],
)
 
collection = chronosphere.Collection("testCollection",
    name="Pulumi Test Collection",
    slug="pulumi-test-collection",
    team_id=team.id,
    notification_policy_id=notification_policy.id,
)
 
monitor = chronosphere.Monitor("testMonitor",
    name="Pulumi Test Monitor",
    slug="pulumi-test-monitor",
    collection_id=collection.id,
    query={
        "prometheus_expr": 'chrono_test_metric{job="chrono_test_job"}',
    },
    series_conditions={
        "conditions": [{
            "op": "GT",
            "value": 1000,
            "severity": "critical",
            "sustain": "10h",
        }],
    },
)

{{% /choosable %}} {{% choosable language go %}}

package main
 
import (
	"log"
 
	"github.com/chronosphereio/pulumi-chronosphere/sdk/go/chronosphere"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
 
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		team, err := chronosphere.NewTeam(ctx, "example-team", &chronosphere.TeamArgs{
			Name: pulumi.String("Pulumi Test Team"),
			Slug: pulumi.String("pulumi-test-team"),
		})
		if err != nil {
			log.Fatal(err)
		}
 
		testNotifier, err := chronosphere.NewEmailAlertNotifier(ctx, "testNotifier", &chronosphere.EmailAlertNotifierArgs{
			Name: pulumi.String("Pulumi Test Notifier"),
			Slug: pulumi.String("pulumi-test-notifier"),
			To:   pulumi.String("blackhole@example.com"),
		})
		if err != nil {
			log.Fatal(err)
		}
 
		testNotificationPolicy, err := chronosphere.NewNotificationPolicy(ctx, "testNotificationPolicy", &chronosphere.NotificationPolicyArgs{
			Name:   pulumi.String("Pulumi Test Notification Policy"),
			Slug:   pulumi.String("pulumi-test-notification-policy"),
			TeamId: team.ID(),
			Routes: chronosphere.NotificationPolicyRouteArray{
				&chronosphere.NotificationPolicyRouteArgs{
					Severity:  pulumi.String("warn"),
					Notifiers: pulumi.StringArray{testNotifier.Slug},
				},
			},
		})
		if err != nil {
			log.Fatal(err)
		}
 
		testCollection, err := chronosphere.NewCollection(ctx, "testCollection", &chronosphere.CollectionArgs{
			Name:                 pulumi.String("Pulumi Test Collection"),
			Slug:                 pulumi.String("pulumi-test-collection"),
			TeamId:               team.ID(),
			NotificationPolicyId: testNotificationPolicy.ID(),
		})
		if err != nil {
			log.Fatal(err)
		}
 
		testMonitor, err := chronosphere.NewMonitor(ctx, "testMonitor", &chronosphere.MonitorArgs{
			Name:         pulumi.String("Pulumi Test Monitor"),
			Slug:         pulumi.String("pulumi-test-monitor"),
			CollectionId: testCollection.ID(),
			Query: &chronosphere.MonitorQueryArgs{
				PrometheusExpr: pulumi.String(`chrono_test_metric{job="chrono_test_job"}`),
			},
			SeriesConditions: &chronosphere.MonitorSeriesConditionsArgs{
				Conditions: chronosphere.MonitorSeriesConditionsConditionArray{
					&chronosphere.MonitorSeriesConditionsConditionArgs{
						Op:       pulumi.String("GT"),
						Value:    pulumi.Float64(1000),
						Severity: pulumi.String("critical"),
						Sustain:  pulumi.String("10h"),
					},
				},
			},
		})
		if err != nil {
			log.Fatal(err)
		}
 
		ctx.Export("teamSlug", team.Slug)
		ctx.Export("monitorSlug", testMonitor.Slug)
 
		return nil
	})
}

{{% /choosable %}} {{% choosable language csharp %}}

using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
using Chronosphere.Pulumi.Chronosphere;
using Chronosphere.Pulumi.Chronosphere.Inputs;
using Pulumi;
 
return await Deployment.RunAsync(() =>
{
    var team = new Team("testTeam", new TeamArgs
    {
        Name = "Pulumi Test Team",
        Slug = "pulumi-test-team",
    });
 
    var notifier = new EmailAlertNotifier("testNotifier", new EmailAlertNotifierArgs
    {
        Name = "Pulumi Test Notifier",
        Slug = "pulumi-test-notifier",
        To = "blackhole@example.com",
    });
 
    var notificationPolicy = new NotificationPolicy("testNotificationPolicy", new NotificationPolicyArgs
    {
        Name = "Pulumi Test Notification Policy",
        Slug = "pulumi-test-notification-policy",
        TeamId = team.Id,
        Routes = new[]
        {
            new NotificationPolicyRouteArgs
            {
                Severity = "warn",
                Notifiers = new[] { notifier.Slug },
            },
        },
    });
 
    var collection = new Collection("testCollection", new CollectionArgs
    {
        Name = "Pulumi Test Collection",
        Slug = "pulumi-test-collection",
        TeamId = team.Id,
        NotificationPolicyId = notificationPolicy.Id,
    });
 
    var monitor = new Chronosphere.Pulumi.Chronosphere.Monitor("testMonitor", new MonitorArgs
    {
        Name = "Pulumi Test Monitor",
        Slug = "pulumi-test-monitor",
        CollectionId = collection.Id,
        Query = new MonitorQueryArgs
        {
            PrometheusExpr = "chrono_test_metric{job=\"chrono_test_job\"}",
        },
        SeriesConditions = new MonitorSeriesConditionsArgs
        {
            Conditions = new[]
            {
                new MonitorSeriesConditionsConditionArgs
                {
                    Op = "GT",
                    Value = 1000,
                    Severity = "critical",
                    Sustain = "10h",
                },
            },
        },
    });
 
    return new Dictionary<string, object?>
    {
        ["monitorSlug"] = monitor.Slug,
    };
});

{{% /choosable %}}

{{< /chooser >}}

Was this page helpful?