sentry.SentryDashboard
Explore with Pulumi AI
Sentry Dashboard resource.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as sentry from "@pulumiverse/sentry";
const main = new sentry.SentryDashboard("main", {
organization: mainSentryOrganization.id,
title: "Test dashboard",
widgets: [
{
title: "Number of Errors",
displayType: "big_number",
interval: "5m",
widgetType: "discover",
queries: [{
fields: ["count()"],
aggregates: ["count()"],
conditions: "!event.type:transaction",
orderBy: "count()",
}],
layout: {
x: 0,
y: 0,
w: 1,
h: 1,
minH: 1,
},
},
{
title: "Number of Issues",
displayType: "big_number",
interval: "5m",
widgetType: "discover",
queries: [{
fields: ["count_unique(issue)"],
aggregates: ["count_unique(issue)"],
conditions: "!event.type:transaction",
orderBy: "count_unique(issue)",
}],
layout: {
x: 1,
y: 0,
w: 1,
h: 1,
minH: 1,
},
},
{
title: "Events",
displayType: "line",
interval: "5m",
widgetType: "discover",
queries: [{
name: "Events",
fields: ["count()"],
aggregates: ["count()"],
conditions: "!event.type:transaction",
orderBy: "count()",
}],
layout: {
x: 2,
y: 0,
w: 4,
h: 2,
minH: 2,
},
},
{
title: "Affected Users",
displayType: "line",
interval: "5m",
widgetType: "discover",
queries: [
{
name: "Known Users",
fields: ["count_unique(user)"],
aggregates: ["count_unique(user)"],
conditions: "has:user.email !event.type:transaction",
orderBy: "count_unique(user)",
},
{
name: "Anonymous Users",
fields: ["count_unique(user)"],
aggregates: ["count_unique(user)"],
conditions: "!has:user.email !event.type:transaction",
orderBy: "count_unique(user)",
},
],
layout: {
x: 1,
y: 2,
w: 1,
h: 2,
minH: 2,
},
},
{
title: "Handled vs. Unhandled",
displayType: "line",
interval: "5m",
widgetType: "discover",
queries: [
{
name: "Handled",
fields: ["count()"],
aggregates: ["count()"],
conditions: "error.handled:true",
orderBy: "count()",
},
{
name: "Unhandled",
fields: ["count()"],
aggregates: ["count()"],
conditions: "error.handled:false",
orderBy: "count()",
},
],
layout: {
x: 0,
y: 2,
w: 1,
h: 2,
minH: 2,
},
},
{
title: "Errors by Country",
displayType: "world_map",
interval: "5m",
widgetType: "discover",
queries: [{
fields: ["count()"],
aggregates: ["count()"],
conditions: "!event.type:transaction has:geo.country_code",
orderBy: "count()",
}],
layout: {
x: 4,
y: 6,
w: 2,
h: 4,
minH: 2,
},
},
{
title: "High Throughput Transactions",
displayType: "table",
interval: "5m",
widgetType: "discover",
queries: [{
fields: [
"count()",
"transaction",
],
aggregates: ["count()"],
columns: ["transaction"],
conditions: "!event.type:error",
orderBy: "-count()",
}],
layout: {
x: 0,
y: 6,
w: 2,
h: 4,
minH: 2,
},
},
{
title: "Errors by Browser",
displayType: "table",
interval: "5m",
widgetType: "discover",
queries: [{
fields: [
"browser.name",
"count()",
],
aggregates: ["count()"],
columns: ["browser.name"],
conditions: "!event.type:transaction has:browser.name",
orderBy: "-count()",
}],
layout: {
x: 5,
y: 2,
w: 1,
h: 4,
minH: 2,
},
},
{
title: "Overall User Misery",
displayType: "big_number",
interval: "5m",
widgetType: "discover",
queries: [{
fields: ["user_misery(300)"],
aggregates: ["user_misery(300)"],
}],
layout: {
x: 0,
y: 1,
w: 1,
h: 1,
minH: 1,
},
},
{
title: "Overall Apdex",
displayType: "big_number",
interval: "5m",
widgetType: "discover",
queries: [{
fields: ["apdex(300)"],
aggregates: ["apdex(300)"],
}],
layout: {
x: 1,
y: 1,
w: 1,
h: 1,
minH: 1,
},
},
{
title: "High Throughput Transactions",
displayType: "top_n",
interval: "5m",
widgetType: "discover",
queries: [{
fields: [
"transaction",
"count()",
],
aggregates: ["count()"],
columns: ["transaction"],
conditions: "!event.type:error",
orderBy: "-count()",
}],
layout: {
x: 0,
y: 4,
w: 2,
h: 2,
minH: 2,
},
},
{
title: "Issues Assigned to Me or My Teams",
displayType: "table",
interval: "5m",
widgetType: "issue",
queries: [{
fields: [
"assignee",
"issue",
"title",
],
columns: [
"assignee",
"issue",
"title",
],
conditions: "assigned_or_suggested:me is:unresolved",
orderBy: "priority",
}],
layout: {
x: 2,
y: 2,
w: 2,
h: 4,
minH: 2,
},
},
{
title: "Transactions Ordered by Misery",
displayType: "table",
interval: "5m",
widgetType: "discover",
queries: [{
fields: [
"transaction",
"user_misery(300)",
],
aggregates: ["user_misery(300)"],
columns: ["transaction"],
orderBy: "-user_misery(300)",
}],
layout: {
x: 2,
y: 6,
w: 2,
h: 4,
minH: 2,
},
},
{
title: "Errors by Browser Over Time",
displayType: "top_n",
interval: "5m",
widgetType: "discover",
queries: [{
fields: [
"browser.name",
"count()",
],
aggregates: ["count()"],
columns: ["browser.name"],
conditions: "event.type:error has:browser.name",
orderBy: "-count()",
}],
layout: {
x: 4,
y: 2,
w: 1,
h: 4,
minH: 2,
},
},
],
});
import pulumi
import pulumiverse_sentry as sentry
main = sentry.SentryDashboard("main",
organization=main_sentry_organization["id"],
title="Test dashboard",
widgets=[
{
"title": "Number of Errors",
"display_type": "big_number",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"fields": ["count()"],
"aggregates": ["count()"],
"conditions": "!event.type:transaction",
"order_by": "count()",
}],
"layout": {
"x": 0,
"y": 0,
"w": 1,
"h": 1,
"min_h": 1,
},
},
{
"title": "Number of Issues",
"display_type": "big_number",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"fields": ["count_unique(issue)"],
"aggregates": ["count_unique(issue)"],
"conditions": "!event.type:transaction",
"order_by": "count_unique(issue)",
}],
"layout": {
"x": 1,
"y": 0,
"w": 1,
"h": 1,
"min_h": 1,
},
},
{
"title": "Events",
"display_type": "line",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"name": "Events",
"fields": ["count()"],
"aggregates": ["count()"],
"conditions": "!event.type:transaction",
"order_by": "count()",
}],
"layout": {
"x": 2,
"y": 0,
"w": 4,
"h": 2,
"min_h": 2,
},
},
{
"title": "Affected Users",
"display_type": "line",
"interval": "5m",
"widget_type": "discover",
"queries": [
{
"name": "Known Users",
"fields": ["count_unique(user)"],
"aggregates": ["count_unique(user)"],
"conditions": "has:user.email !event.type:transaction",
"order_by": "count_unique(user)",
},
{
"name": "Anonymous Users",
"fields": ["count_unique(user)"],
"aggregates": ["count_unique(user)"],
"conditions": "!has:user.email !event.type:transaction",
"order_by": "count_unique(user)",
},
],
"layout": {
"x": 1,
"y": 2,
"w": 1,
"h": 2,
"min_h": 2,
},
},
{
"title": "Handled vs. Unhandled",
"display_type": "line",
"interval": "5m",
"widget_type": "discover",
"queries": [
{
"name": "Handled",
"fields": ["count()"],
"aggregates": ["count()"],
"conditions": "error.handled:true",
"order_by": "count()",
},
{
"name": "Unhandled",
"fields": ["count()"],
"aggregates": ["count()"],
"conditions": "error.handled:false",
"order_by": "count()",
},
],
"layout": {
"x": 0,
"y": 2,
"w": 1,
"h": 2,
"min_h": 2,
},
},
{
"title": "Errors by Country",
"display_type": "world_map",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"fields": ["count()"],
"aggregates": ["count()"],
"conditions": "!event.type:transaction has:geo.country_code",
"order_by": "count()",
}],
"layout": {
"x": 4,
"y": 6,
"w": 2,
"h": 4,
"min_h": 2,
},
},
{
"title": "High Throughput Transactions",
"display_type": "table",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"fields": [
"count()",
"transaction",
],
"aggregates": ["count()"],
"columns": ["transaction"],
"conditions": "!event.type:error",
"order_by": "-count()",
}],
"layout": {
"x": 0,
"y": 6,
"w": 2,
"h": 4,
"min_h": 2,
},
},
{
"title": "Errors by Browser",
"display_type": "table",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"fields": [
"browser.name",
"count()",
],
"aggregates": ["count()"],
"columns": ["browser.name"],
"conditions": "!event.type:transaction has:browser.name",
"order_by": "-count()",
}],
"layout": {
"x": 5,
"y": 2,
"w": 1,
"h": 4,
"min_h": 2,
},
},
{
"title": "Overall User Misery",
"display_type": "big_number",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"fields": ["user_misery(300)"],
"aggregates": ["user_misery(300)"],
}],
"layout": {
"x": 0,
"y": 1,
"w": 1,
"h": 1,
"min_h": 1,
},
},
{
"title": "Overall Apdex",
"display_type": "big_number",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"fields": ["apdex(300)"],
"aggregates": ["apdex(300)"],
}],
"layout": {
"x": 1,
"y": 1,
"w": 1,
"h": 1,
"min_h": 1,
},
},
{
"title": "High Throughput Transactions",
"display_type": "top_n",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"fields": [
"transaction",
"count()",
],
"aggregates": ["count()"],
"columns": ["transaction"],
"conditions": "!event.type:error",
"order_by": "-count()",
}],
"layout": {
"x": 0,
"y": 4,
"w": 2,
"h": 2,
"min_h": 2,
},
},
{
"title": "Issues Assigned to Me or My Teams",
"display_type": "table",
"interval": "5m",
"widget_type": "issue",
"queries": [{
"fields": [
"assignee",
"issue",
"title",
],
"columns": [
"assignee",
"issue",
"title",
],
"conditions": "assigned_or_suggested:me is:unresolved",
"order_by": "priority",
}],
"layout": {
"x": 2,
"y": 2,
"w": 2,
"h": 4,
"min_h": 2,
},
},
{
"title": "Transactions Ordered by Misery",
"display_type": "table",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"fields": [
"transaction",
"user_misery(300)",
],
"aggregates": ["user_misery(300)"],
"columns": ["transaction"],
"order_by": "-user_misery(300)",
}],
"layout": {
"x": 2,
"y": 6,
"w": 2,
"h": 4,
"min_h": 2,
},
},
{
"title": "Errors by Browser Over Time",
"display_type": "top_n",
"interval": "5m",
"widget_type": "discover",
"queries": [{
"fields": [
"browser.name",
"count()",
],
"aggregates": ["count()"],
"columns": ["browser.name"],
"conditions": "event.type:error has:browser.name",
"order_by": "-count()",
}],
"layout": {
"x": 4,
"y": 2,
"w": 1,
"h": 4,
"min_h": 2,
},
},
])
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumiverse/pulumi-sentry/sdk/go/sentry"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := sentry.NewSentryDashboard(ctx, "main", &sentry.SentryDashboardArgs{
Organization: pulumi.Any(mainSentryOrganization.Id),
Title: pulumi.String("Test dashboard"),
Widgets: sentry.SentryDashboardWidgetArray{
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Number of Errors"),
DisplayType: pulumi.String("big_number"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("count()"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count()"),
},
Conditions: pulumi.String("!event.type:transaction"),
OrderBy: pulumi.String("count()"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(0),
Y: pulumi.Int(0),
W: pulumi.Int(1),
H: pulumi.Int(1),
MinH: pulumi.Int(1),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Number of Issues"),
DisplayType: pulumi.String("big_number"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("count_unique(issue)"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count_unique(issue)"),
},
Conditions: pulumi.String("!event.type:transaction"),
OrderBy: pulumi.String("count_unique(issue)"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(1),
Y: pulumi.Int(0),
W: pulumi.Int(1),
H: pulumi.Int(1),
MinH: pulumi.Int(1),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Events"),
DisplayType: pulumi.String("line"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Name: pulumi.String("Events"),
Fields: pulumi.StringArray{
pulumi.String("count()"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count()"),
},
Conditions: pulumi.String("!event.type:transaction"),
OrderBy: pulumi.String("count()"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(2),
Y: pulumi.Int(0),
W: pulumi.Int(4),
H: pulumi.Int(2),
MinH: pulumi.Int(2),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Affected Users"),
DisplayType: pulumi.String("line"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Name: pulumi.String("Known Users"),
Fields: pulumi.StringArray{
pulumi.String("count_unique(user)"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count_unique(user)"),
},
Conditions: pulumi.String("has:user.email !event.type:transaction"),
OrderBy: pulumi.String("count_unique(user)"),
},
&sentry.SentryDashboardWidgetQueryArgs{
Name: pulumi.String("Anonymous Users"),
Fields: pulumi.StringArray{
pulumi.String("count_unique(user)"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count_unique(user)"),
},
Conditions: pulumi.String("!has:user.email !event.type:transaction"),
OrderBy: pulumi.String("count_unique(user)"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(1),
Y: pulumi.Int(2),
W: pulumi.Int(1),
H: pulumi.Int(2),
MinH: pulumi.Int(2),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Handled vs. Unhandled"),
DisplayType: pulumi.String("line"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Name: pulumi.String("Handled"),
Fields: pulumi.StringArray{
pulumi.String("count()"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count()"),
},
Conditions: pulumi.String("error.handled:true"),
OrderBy: pulumi.String("count()"),
},
&sentry.SentryDashboardWidgetQueryArgs{
Name: pulumi.String("Unhandled"),
Fields: pulumi.StringArray{
pulumi.String("count()"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count()"),
},
Conditions: pulumi.String("error.handled:false"),
OrderBy: pulumi.String("count()"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(0),
Y: pulumi.Int(2),
W: pulumi.Int(1),
H: pulumi.Int(2),
MinH: pulumi.Int(2),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Errors by Country"),
DisplayType: pulumi.String("world_map"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("count()"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count()"),
},
Conditions: pulumi.String("!event.type:transaction has:geo.country_code"),
OrderBy: pulumi.String("count()"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(4),
Y: pulumi.Int(6),
W: pulumi.Int(2),
H: pulumi.Int(4),
MinH: pulumi.Int(2),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("High Throughput Transactions"),
DisplayType: pulumi.String("table"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("count()"),
pulumi.String("transaction"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count()"),
},
Columns: pulumi.StringArray{
pulumi.String("transaction"),
},
Conditions: pulumi.String("!event.type:error"),
OrderBy: pulumi.String("-count()"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(0),
Y: pulumi.Int(6),
W: pulumi.Int(2),
H: pulumi.Int(4),
MinH: pulumi.Int(2),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Errors by Browser"),
DisplayType: pulumi.String("table"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("browser.name"),
pulumi.String("count()"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count()"),
},
Columns: pulumi.StringArray{
pulumi.String("browser.name"),
},
Conditions: pulumi.String("!event.type:transaction has:browser.name"),
OrderBy: pulumi.String("-count()"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(5),
Y: pulumi.Int(2),
W: pulumi.Int(1),
H: pulumi.Int(4),
MinH: pulumi.Int(2),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Overall User Misery"),
DisplayType: pulumi.String("big_number"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("user_misery(300)"),
},
Aggregates: pulumi.StringArray{
pulumi.String("user_misery(300)"),
},
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(0),
Y: pulumi.Int(1),
W: pulumi.Int(1),
H: pulumi.Int(1),
MinH: pulumi.Int(1),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Overall Apdex"),
DisplayType: pulumi.String("big_number"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("apdex(300)"),
},
Aggregates: pulumi.StringArray{
pulumi.String("apdex(300)"),
},
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(1),
Y: pulumi.Int(1),
W: pulumi.Int(1),
H: pulumi.Int(1),
MinH: pulumi.Int(1),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("High Throughput Transactions"),
DisplayType: pulumi.String("top_n"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("transaction"),
pulumi.String("count()"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count()"),
},
Columns: pulumi.StringArray{
pulumi.String("transaction"),
},
Conditions: pulumi.String("!event.type:error"),
OrderBy: pulumi.String("-count()"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(0),
Y: pulumi.Int(4),
W: pulumi.Int(2),
H: pulumi.Int(2),
MinH: pulumi.Int(2),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Issues Assigned to Me or My Teams"),
DisplayType: pulumi.String("table"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("issue"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("assignee"),
pulumi.String("issue"),
pulumi.String("title"),
},
Columns: pulumi.StringArray{
pulumi.String("assignee"),
pulumi.String("issue"),
pulumi.String("title"),
},
Conditions: pulumi.String("assigned_or_suggested:me is:unresolved"),
OrderBy: pulumi.String("priority"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(2),
Y: pulumi.Int(2),
W: pulumi.Int(2),
H: pulumi.Int(4),
MinH: pulumi.Int(2),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Transactions Ordered by Misery"),
DisplayType: pulumi.String("table"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("transaction"),
pulumi.String("user_misery(300)"),
},
Aggregates: pulumi.StringArray{
pulumi.String("user_misery(300)"),
},
Columns: pulumi.StringArray{
pulumi.String("transaction"),
},
OrderBy: pulumi.String("-user_misery(300)"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(2),
Y: pulumi.Int(6),
W: pulumi.Int(2),
H: pulumi.Int(4),
MinH: pulumi.Int(2),
},
},
&sentry.SentryDashboardWidgetArgs{
Title: pulumi.String("Errors by Browser Over Time"),
DisplayType: pulumi.String("top_n"),
Interval: pulumi.String("5m"),
WidgetType: pulumi.String("discover"),
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Fields: pulumi.StringArray{
pulumi.String("browser.name"),
pulumi.String("count()"),
},
Aggregates: pulumi.StringArray{
pulumi.String("count()"),
},
Columns: pulumi.StringArray{
pulumi.String("browser.name"),
},
Conditions: pulumi.String("event.type:error has:browser.name"),
OrderBy: pulumi.String("-count()"),
},
},
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
X: pulumi.Int(4),
Y: pulumi.Int(2),
W: pulumi.Int(1),
H: pulumi.Int(4),
MinH: pulumi.Int(2),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Sentry = Pulumiverse.Sentry;
return await Deployment.RunAsync(() =>
{
var main = new Sentry.SentryDashboard("main", new()
{
Organization = mainSentryOrganization.Id,
Title = "Test dashboard",
Widgets = new[]
{
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Number of Errors",
DisplayType = "big_number",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"count()",
},
Aggregates = new[]
{
"count()",
},
Conditions = "!event.type:transaction",
OrderBy = "count()",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 0,
Y = 0,
W = 1,
H = 1,
MinH = 1,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Number of Issues",
DisplayType = "big_number",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"count_unique(issue)",
},
Aggregates = new[]
{
"count_unique(issue)",
},
Conditions = "!event.type:transaction",
OrderBy = "count_unique(issue)",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 1,
Y = 0,
W = 1,
H = 1,
MinH = 1,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Events",
DisplayType = "line",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Name = "Events",
Fields = new[]
{
"count()",
},
Aggregates = new[]
{
"count()",
},
Conditions = "!event.type:transaction",
OrderBy = "count()",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 2,
Y = 0,
W = 4,
H = 2,
MinH = 2,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Affected Users",
DisplayType = "line",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Name = "Known Users",
Fields = new[]
{
"count_unique(user)",
},
Aggregates = new[]
{
"count_unique(user)",
},
Conditions = "has:user.email !event.type:transaction",
OrderBy = "count_unique(user)",
},
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Name = "Anonymous Users",
Fields = new[]
{
"count_unique(user)",
},
Aggregates = new[]
{
"count_unique(user)",
},
Conditions = "!has:user.email !event.type:transaction",
OrderBy = "count_unique(user)",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 1,
Y = 2,
W = 1,
H = 2,
MinH = 2,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Handled vs. Unhandled",
DisplayType = "line",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Name = "Handled",
Fields = new[]
{
"count()",
},
Aggregates = new[]
{
"count()",
},
Conditions = "error.handled:true",
OrderBy = "count()",
},
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Name = "Unhandled",
Fields = new[]
{
"count()",
},
Aggregates = new[]
{
"count()",
},
Conditions = "error.handled:false",
OrderBy = "count()",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 0,
Y = 2,
W = 1,
H = 2,
MinH = 2,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Errors by Country",
DisplayType = "world_map",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"count()",
},
Aggregates = new[]
{
"count()",
},
Conditions = "!event.type:transaction has:geo.country_code",
OrderBy = "count()",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 4,
Y = 6,
W = 2,
H = 4,
MinH = 2,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "High Throughput Transactions",
DisplayType = "table",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"count()",
"transaction",
},
Aggregates = new[]
{
"count()",
},
Columns = new[]
{
"transaction",
},
Conditions = "!event.type:error",
OrderBy = "-count()",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 0,
Y = 6,
W = 2,
H = 4,
MinH = 2,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Errors by Browser",
DisplayType = "table",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"browser.name",
"count()",
},
Aggregates = new[]
{
"count()",
},
Columns = new[]
{
"browser.name",
},
Conditions = "!event.type:transaction has:browser.name",
OrderBy = "-count()",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 5,
Y = 2,
W = 1,
H = 4,
MinH = 2,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Overall User Misery",
DisplayType = "big_number",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"user_misery(300)",
},
Aggregates = new[]
{
"user_misery(300)",
},
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 0,
Y = 1,
W = 1,
H = 1,
MinH = 1,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Overall Apdex",
DisplayType = "big_number",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"apdex(300)",
},
Aggregates = new[]
{
"apdex(300)",
},
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 1,
Y = 1,
W = 1,
H = 1,
MinH = 1,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "High Throughput Transactions",
DisplayType = "top_n",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"transaction",
"count()",
},
Aggregates = new[]
{
"count()",
},
Columns = new[]
{
"transaction",
},
Conditions = "!event.type:error",
OrderBy = "-count()",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 0,
Y = 4,
W = 2,
H = 2,
MinH = 2,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Issues Assigned to Me or My Teams",
DisplayType = "table",
Interval = "5m",
WidgetType = "issue",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"assignee",
"issue",
"title",
},
Columns = new[]
{
"assignee",
"issue",
"title",
},
Conditions = "assigned_or_suggested:me is:unresolved",
OrderBy = "priority",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 2,
Y = 2,
W = 2,
H = 4,
MinH = 2,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Transactions Ordered by Misery",
DisplayType = "table",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"transaction",
"user_misery(300)",
},
Aggregates = new[]
{
"user_misery(300)",
},
Columns = new[]
{
"transaction",
},
OrderBy = "-user_misery(300)",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 2,
Y = 6,
W = 2,
H = 4,
MinH = 2,
},
},
new Sentry.Inputs.SentryDashboardWidgetArgs
{
Title = "Errors by Browser Over Time",
DisplayType = "top_n",
Interval = "5m",
WidgetType = "discover",
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Fields = new[]
{
"browser.name",
"count()",
},
Aggregates = new[]
{
"count()",
},
Columns = new[]
{
"browser.name",
},
Conditions = "event.type:error has:browser.name",
OrderBy = "-count()",
},
},
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
X = 4,
Y = 2,
W = 1,
H = 4,
MinH = 2,
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.sentry.SentryDashboard;
import com.pulumi.sentry.SentryDashboardArgs;
import com.pulumi.sentry.inputs.SentryDashboardWidgetArgs;
import com.pulumi.sentry.inputs.SentryDashboardWidgetLayoutArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var main = new SentryDashboard("main", SentryDashboardArgs.builder()
.organization(mainSentryOrganization.id())
.title("Test dashboard")
.widgets(
SentryDashboardWidgetArgs.builder()
.title("Number of Errors")
.displayType("big_number")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields("count()")
.aggregates("count()")
.conditions("!event.type:transaction")
.orderBy("count()")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(0)
.y(0)
.w(1)
.h(1)
.minH(1)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Number of Issues")
.displayType("big_number")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields("count_unique(issue)")
.aggregates("count_unique(issue)")
.conditions("!event.type:transaction")
.orderBy("count_unique(issue)")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(1)
.y(0)
.w(1)
.h(1)
.minH(1)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Events")
.displayType("line")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.name("Events")
.fields("count()")
.aggregates("count()")
.conditions("!event.type:transaction")
.orderBy("count()")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(2)
.y(0)
.w(4)
.h(2)
.minH(2)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Affected Users")
.displayType("line")
.interval("5m")
.widgetType("discover")
.queries(
SentryDashboardWidgetQueryArgs.builder()
.name("Known Users")
.fields("count_unique(user)")
.aggregates("count_unique(user)")
.conditions("has:user.email !event.type:transaction")
.orderBy("count_unique(user)")
.build(),
SentryDashboardWidgetQueryArgs.builder()
.name("Anonymous Users")
.fields("count_unique(user)")
.aggregates("count_unique(user)")
.conditions("!has:user.email !event.type:transaction")
.orderBy("count_unique(user)")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(1)
.y(2)
.w(1)
.h(2)
.minH(2)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Handled vs. Unhandled")
.displayType("line")
.interval("5m")
.widgetType("discover")
.queries(
SentryDashboardWidgetQueryArgs.builder()
.name("Handled")
.fields("count()")
.aggregates("count()")
.conditions("error.handled:true")
.orderBy("count()")
.build(),
SentryDashboardWidgetQueryArgs.builder()
.name("Unhandled")
.fields("count()")
.aggregates("count()")
.conditions("error.handled:false")
.orderBy("count()")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(0)
.y(2)
.w(1)
.h(2)
.minH(2)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Errors by Country")
.displayType("world_map")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields("count()")
.aggregates("count()")
.conditions("!event.type:transaction has:geo.country_code")
.orderBy("count()")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(4)
.y(6)
.w(2)
.h(4)
.minH(2)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("High Throughput Transactions")
.displayType("table")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields(
"count()",
"transaction")
.aggregates("count()")
.columns("transaction")
.conditions("!event.type:error")
.orderBy("-count()")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(0)
.y(6)
.w(2)
.h(4)
.minH(2)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Errors by Browser")
.displayType("table")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields(
"browser.name",
"count()")
.aggregates("count()")
.columns("browser.name")
.conditions("!event.type:transaction has:browser.name")
.orderBy("-count()")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(5)
.y(2)
.w(1)
.h(4)
.minH(2)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Overall User Misery")
.displayType("big_number")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields("user_misery(300)")
.aggregates("user_misery(300)")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(0)
.y(1)
.w(1)
.h(1)
.minH(1)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Overall Apdex")
.displayType("big_number")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields("apdex(300)")
.aggregates("apdex(300)")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(1)
.y(1)
.w(1)
.h(1)
.minH(1)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("High Throughput Transactions")
.displayType("top_n")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields(
"transaction",
"count()")
.aggregates("count()")
.columns("transaction")
.conditions("!event.type:error")
.orderBy("-count()")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(0)
.y(4)
.w(2)
.h(2)
.minH(2)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Issues Assigned to Me or My Teams")
.displayType("table")
.interval("5m")
.widgetType("issue")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields(
"assignee",
"issue",
"title")
.columns(
"assignee",
"issue",
"title")
.conditions("assigned_or_suggested:me is:unresolved")
.orderBy("priority")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(2)
.y(2)
.w(2)
.h(4)
.minH(2)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Transactions Ordered by Misery")
.displayType("table")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields(
"transaction",
"user_misery(300)")
.aggregates("user_misery(300)")
.columns("transaction")
.orderBy("-user_misery(300)")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(2)
.y(6)
.w(2)
.h(4)
.minH(2)
.build())
.build(),
SentryDashboardWidgetArgs.builder()
.title("Errors by Browser Over Time")
.displayType("top_n")
.interval("5m")
.widgetType("discover")
.queries(SentryDashboardWidgetQueryArgs.builder()
.fields(
"browser.name",
"count()")
.aggregates("count()")
.columns("browser.name")
.conditions("event.type:error has:browser.name")
.orderBy("-count()")
.build())
.layout(SentryDashboardWidgetLayoutArgs.builder()
.x(4)
.y(2)
.w(1)
.h(4)
.minH(2)
.build())
.build())
.build());
}
}
resources:
main:
type: sentry:SentryDashboard
properties:
organization: ${mainSentryOrganization.id}
title: Test dashboard
widgets:
- title: Number of Errors
displayType: big_number
interval: 5m
widgetType: discover
queries:
- fields:
- count()
aggregates:
- count()
conditions: '!event.type:transaction'
orderBy: count()
layout:
x: 0
y: 0
w: 1
h: 1
minH: 1
- title: Number of Issues
displayType: big_number
interval: 5m
widgetType: discover
queries:
- fields:
- count_unique(issue)
aggregates:
- count_unique(issue)
conditions: '!event.type:transaction'
orderBy: count_unique(issue)
layout:
x: 1
y: 0
w: 1
h: 1
minH: 1
- title: Events
displayType: line
interval: 5m
widgetType: discover
queries:
- name: Events
fields:
- count()
aggregates:
- count()
conditions: '!event.type:transaction'
orderBy: count()
layout:
x: 2
y: 0
w: 4
h: 2
minH: 2
- title: Affected Users
displayType: line
interval: 5m
widgetType: discover
queries:
- name: Known Users
fields:
- count_unique(user)
aggregates:
- count_unique(user)
conditions: has:user.email !event.type:transaction
orderBy: count_unique(user)
- name: Anonymous Users
fields:
- count_unique(user)
aggregates:
- count_unique(user)
conditions: '!has:user.email !event.type:transaction'
orderBy: count_unique(user)
layout:
x: 1
y: 2
w: 1
h: 2
minH: 2
- title: Handled vs. Unhandled
displayType: line
interval: 5m
widgetType: discover
queries:
- name: Handled
fields:
- count()
aggregates:
- count()
conditions: error.handled:true
orderBy: count()
- name: Unhandled
fields:
- count()
aggregates:
- count()
conditions: error.handled:false
orderBy: count()
layout:
x: 0
y: 2
w: 1
h: 2
minH: 2
- title: Errors by Country
displayType: world_map
interval: 5m
widgetType: discover
queries:
- fields:
- count()
aggregates:
- count()
conditions: '!event.type:transaction has:geo.country_code'
orderBy: count()
layout:
x: 4
y: 6
w: 2
h: 4
minH: 2
- title: High Throughput Transactions
displayType: table
interval: 5m
widgetType: discover
queries:
- fields:
- count()
- transaction
aggregates:
- count()
columns:
- transaction
conditions: '!event.type:error'
orderBy: -count()
layout:
x: 0
y: 6
w: 2
h: 4
minH: 2
- title: Errors by Browser
displayType: table
interval: 5m
widgetType: discover
queries:
- fields:
- browser.name
- count()
aggregates:
- count()
columns:
- browser.name
conditions: '!event.type:transaction has:browser.name'
orderBy: -count()
layout:
x: 5
y: 2
w: 1
h: 4
minH: 2
- title: Overall User Misery
displayType: big_number
interval: 5m
widgetType: discover
queries:
- fields:
- user_misery(300)
aggregates:
- user_misery(300)
layout:
x: 0
y: 1
w: 1
h: 1
minH: 1
- title: Overall Apdex
displayType: big_number
interval: 5m
widgetType: discover
queries:
- fields:
- apdex(300)
aggregates:
- apdex(300)
layout:
x: 1
y: 1
w: 1
h: 1
minH: 1
- title: High Throughput Transactions
displayType: top_n
interval: 5m
widgetType: discover
queries:
- fields:
- transaction
- count()
aggregates:
- count()
columns:
- transaction
conditions: '!event.type:error'
orderBy: -count()
layout:
x: 0
y: 4
w: 2
h: 2
minH: 2
- title: Issues Assigned to Me or My Teams
displayType: table
interval: 5m
widgetType: issue
queries:
- fields:
- assignee
- issue
- title
columns:
- assignee
- issue
- title
conditions: assigned_or_suggested:me is:unresolved
orderBy: priority
layout:
x: 2
y: 2
w: 2
h: 4
minH: 2
- title: Transactions Ordered by Misery
displayType: table
interval: 5m
widgetType: discover
queries:
- fields:
- transaction
- user_misery(300)
aggregates:
- user_misery(300)
columns:
- transaction
orderBy: -user_misery(300)
layout:
x: 2
y: 6
w: 2
h: 4
minH: 2
- title: Errors by Browser Over Time
displayType: top_n
interval: 5m
widgetType: discover
queries:
- fields:
- browser.name
- count()
aggregates:
- count()
columns:
- browser.name
conditions: event.type:error has:browser.name
orderBy: -count()
layout:
x: 4
y: 2
w: 1
h: 4
minH: 2
Create SentryDashboard Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new SentryDashboard(name: string, args: SentryDashboardArgs, opts?: CustomResourceOptions);
@overload
def SentryDashboard(resource_name: str,
args: SentryDashboardArgs,
opts: Optional[ResourceOptions] = None)
@overload
def SentryDashboard(resource_name: str,
opts: Optional[ResourceOptions] = None,
organization: Optional[str] = None,
title: Optional[str] = None,
widgets: Optional[Sequence[SentryDashboardWidgetArgs]] = None)
func NewSentryDashboard(ctx *Context, name string, args SentryDashboardArgs, opts ...ResourceOption) (*SentryDashboard, error)
public SentryDashboard(string name, SentryDashboardArgs args, CustomResourceOptions? opts = null)
public SentryDashboard(String name, SentryDashboardArgs args)
public SentryDashboard(String name, SentryDashboardArgs args, CustomResourceOptions options)
type: sentry:SentryDashboard
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args SentryDashboardArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args SentryDashboardArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args SentryDashboardArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args SentryDashboardArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args SentryDashboardArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var sentryDashboardResource = new Sentry.SentryDashboard("sentryDashboardResource", new()
{
Organization = "string",
Title = "string",
Widgets = new[]
{
new Sentry.Inputs.SentryDashboardWidgetArgs
{
DisplayType = "string",
Layout = new Sentry.Inputs.SentryDashboardWidgetLayoutArgs
{
H = 0,
MinH = 0,
W = 0,
X = 0,
Y = 0,
},
Queries = new[]
{
new Sentry.Inputs.SentryDashboardWidgetQueryArgs
{
Aggregates = new[]
{
"string",
},
Columns = new[]
{
"string",
},
Conditions = "string",
FieldAliases = new[]
{
"string",
},
Fields = new[]
{
"string",
},
Id = "string",
Name = "string",
OrderBy = "string",
},
},
Title = "string",
Id = "string",
Interval = "string",
Limit = 0,
WidgetType = "string",
},
},
});
example, err := sentry.NewSentryDashboard(ctx, "sentryDashboardResource", &sentry.SentryDashboardArgs{
Organization: pulumi.String("string"),
Title: pulumi.String("string"),
Widgets: sentry.SentryDashboardWidgetArray{
&sentry.SentryDashboardWidgetArgs{
DisplayType: pulumi.String("string"),
Layout: &sentry.SentryDashboardWidgetLayoutArgs{
H: pulumi.Int(0),
MinH: pulumi.Int(0),
W: pulumi.Int(0),
X: pulumi.Int(0),
Y: pulumi.Int(0),
},
Queries: sentry.SentryDashboardWidgetQueryArray{
&sentry.SentryDashboardWidgetQueryArgs{
Aggregates: pulumi.StringArray{
pulumi.String("string"),
},
Columns: pulumi.StringArray{
pulumi.String("string"),
},
Conditions: pulumi.String("string"),
FieldAliases: pulumi.StringArray{
pulumi.String("string"),
},
Fields: pulumi.StringArray{
pulumi.String("string"),
},
Id: pulumi.String("string"),
Name: pulumi.String("string"),
OrderBy: pulumi.String("string"),
},
},
Title: pulumi.String("string"),
Id: pulumi.String("string"),
Interval: pulumi.String("string"),
Limit: pulumi.Int(0),
WidgetType: pulumi.String("string"),
},
},
})
var sentryDashboardResource = new SentryDashboard("sentryDashboardResource", SentryDashboardArgs.builder()
.organization("string")
.title("string")
.widgets(SentryDashboardWidgetArgs.builder()
.displayType("string")
.layout(SentryDashboardWidgetLayoutArgs.builder()
.h(0)
.minH(0)
.w(0)
.x(0)
.y(0)
.build())
.queries(SentryDashboardWidgetQueryArgs.builder()
.aggregates("string")
.columns("string")
.conditions("string")
.fieldAliases("string")
.fields("string")
.id("string")
.name("string")
.orderBy("string")
.build())
.title("string")
.id("string")
.interval("string")
.limit(0)
.widgetType("string")
.build())
.build());
sentry_dashboard_resource = sentry.SentryDashboard("sentryDashboardResource",
organization="string",
title="string",
widgets=[{
"display_type": "string",
"layout": {
"h": 0,
"min_h": 0,
"w": 0,
"x": 0,
"y": 0,
},
"queries": [{
"aggregates": ["string"],
"columns": ["string"],
"conditions": "string",
"field_aliases": ["string"],
"fields": ["string"],
"id": "string",
"name": "string",
"order_by": "string",
}],
"title": "string",
"id": "string",
"interval": "string",
"limit": 0,
"widget_type": "string",
}])
const sentryDashboardResource = new sentry.SentryDashboard("sentryDashboardResource", {
organization: "string",
title: "string",
widgets: [{
displayType: "string",
layout: {
h: 0,
minH: 0,
w: 0,
x: 0,
y: 0,
},
queries: [{
aggregates: ["string"],
columns: ["string"],
conditions: "string",
fieldAliases: ["string"],
fields: ["string"],
id: "string",
name: "string",
orderBy: "string",
}],
title: "string",
id: "string",
interval: "string",
limit: 0,
widgetType: "string",
}],
});
type: sentry:SentryDashboard
properties:
organization: string
title: string
widgets:
- displayType: string
id: string
interval: string
layout:
h: 0
minH: 0
w: 0
x: 0
"y": 0
limit: 0
queries:
- aggregates:
- string
columns:
- string
conditions: string
fieldAliases:
- string
fields:
- string
id: string
name: string
orderBy: string
title: string
widgetType: string
SentryDashboard Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The SentryDashboard resource accepts the following input properties:
- Organization string
- The slug of the organization the dashboard belongs to.
- Title string
- Dashboard title.
- Widgets
List<Pulumiverse.
Sentry. Inputs. Sentry Dashboard Widget> - Dashboard widgets.
- Organization string
- The slug of the organization the dashboard belongs to.
- Title string
- Dashboard title.
- Widgets
[]Sentry
Dashboard Widget Args - Dashboard widgets.
- organization String
- The slug of the organization the dashboard belongs to.
- title String
- Dashboard title.
- widgets
List<Sentry
Dashboard Widget> - Dashboard widgets.
- organization string
- The slug of the organization the dashboard belongs to.
- title string
- Dashboard title.
- widgets
Sentry
Dashboard Widget[] - Dashboard widgets.
- organization str
- The slug of the organization the dashboard belongs to.
- title str
- Dashboard title.
- widgets
Sequence[Sentry
Dashboard Widget Args] - Dashboard widgets.
- organization String
- The slug of the organization the dashboard belongs to.
- title String
- Dashboard title.
- widgets List<Property Map>
- Dashboard widgets.
Outputs
All input properties are implicitly available as output properties. Additionally, the SentryDashboard resource produces the following output properties:
- Id string
- The provider-assigned unique ID for this managed resource.
- Internal
Id string - The internal ID for this dashboard.
- Id string
- The provider-assigned unique ID for this managed resource.
- Internal
Id string - The internal ID for this dashboard.
- id String
- The provider-assigned unique ID for this managed resource.
- internal
Id String - The internal ID for this dashboard.
- id string
- The provider-assigned unique ID for this managed resource.
- internal
Id string - The internal ID for this dashboard.
- id str
- The provider-assigned unique ID for this managed resource.
- internal_
id str - The internal ID for this dashboard.
- id String
- The provider-assigned unique ID for this managed resource.
- internal
Id String - The internal ID for this dashboard.
Look up Existing SentryDashboard Resource
Get an existing SentryDashboard resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: SentryDashboardState, opts?: CustomResourceOptions): SentryDashboard
@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
internal_id: Optional[str] = None,
organization: Optional[str] = None,
title: Optional[str] = None,
widgets: Optional[Sequence[SentryDashboardWidgetArgs]] = None) -> SentryDashboard
func GetSentryDashboard(ctx *Context, name string, id IDInput, state *SentryDashboardState, opts ...ResourceOption) (*SentryDashboard, error)
public static SentryDashboard Get(string name, Input<string> id, SentryDashboardState? state, CustomResourceOptions? opts = null)
public static SentryDashboard get(String name, Output<String> id, SentryDashboardState state, CustomResourceOptions options)
Resource lookup is not supported in YAML
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- resource_name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- Internal
Id string - The internal ID for this dashboard.
- Organization string
- The slug of the organization the dashboard belongs to.
- Title string
- Dashboard title.
- Widgets
List<Pulumiverse.
Sentry. Inputs. Sentry Dashboard Widget> - Dashboard widgets.
- Internal
Id string - The internal ID for this dashboard.
- Organization string
- The slug of the organization the dashboard belongs to.
- Title string
- Dashboard title.
- Widgets
[]Sentry
Dashboard Widget Args - Dashboard widgets.
- internal
Id String - The internal ID for this dashboard.
- organization String
- The slug of the organization the dashboard belongs to.
- title String
- Dashboard title.
- widgets
List<Sentry
Dashboard Widget> - Dashboard widgets.
- internal
Id string - The internal ID for this dashboard.
- organization string
- The slug of the organization the dashboard belongs to.
- title string
- Dashboard title.
- widgets
Sentry
Dashboard Widget[] - Dashboard widgets.
- internal_
id str - The internal ID for this dashboard.
- organization str
- The slug of the organization the dashboard belongs to.
- title str
- Dashboard title.
- widgets
Sequence[Sentry
Dashboard Widget Args] - Dashboard widgets.
- internal
Id String - The internal ID for this dashboard.
- organization String
- The slug of the organization the dashboard belongs to.
- title String
- Dashboard title.
- widgets List<Property Map>
- Dashboard widgets.
Supporting Types
SentryDashboardWidget, SentryDashboardWidgetArgs
- Display
Type string - Layout
Pulumiverse.
Sentry. Inputs. Sentry Dashboard Widget Layout - Queries
List<Pulumiverse.
Sentry. Inputs. Sentry Dashboard Widget Query> - Title string
- Id string
- The ID of this resource.
- Interval string
- Limit int
- Widget
Type string
- Display
Type string - Layout
Sentry
Dashboard Widget Layout - Queries
[]Sentry
Dashboard Widget Query - Title string
- Id string
- The ID of this resource.
- Interval string
- Limit int
- Widget
Type string
- display
Type String - layout
Sentry
Dashboard Widget Layout - queries
List<Sentry
Dashboard Widget Query> - title String
- id String
- The ID of this resource.
- interval String
- limit Integer
- widget
Type String
- display
Type string - layout
Sentry
Dashboard Widget Layout - queries
Sentry
Dashboard Widget Query[] - title string
- id string
- The ID of this resource.
- interval string
- limit number
- widget
Type string
- display_
type str - layout
Sentry
Dashboard Widget Layout - queries
Sequence[Sentry
Dashboard Widget Query] - title str
- id str
- The ID of this resource.
- interval str
- limit int
- widget_
type str
- display
Type String - layout Property Map
- queries List<Property Map>
- title String
- id String
- The ID of this resource.
- interval String
- limit Number
- widget
Type String
SentryDashboardWidgetLayout, SentryDashboardWidgetLayoutArgs
SentryDashboardWidgetQuery, SentryDashboardWidgetQueryArgs
- Aggregates List<string>
- Columns List<string>
- Conditions string
- Field
Aliases List<string> - Fields List<string>
- Id string
- The ID of this resource.
- Name string
- Order
By string
- Aggregates []string
- Columns []string
- Conditions string
- Field
Aliases []string - Fields []string
- Id string
- The ID of this resource.
- Name string
- Order
By string
- aggregates List<String>
- columns List<String>
- conditions String
- field
Aliases List<String> - fields List<String>
- id String
- The ID of this resource.
- name String
- order
By String
- aggregates string[]
- columns string[]
- conditions string
- field
Aliases string[] - fields string[]
- id string
- The ID of this resource.
- name string
- order
By string
- aggregates Sequence[str]
- columns Sequence[str]
- conditions str
- field_
aliases Sequence[str] - fields Sequence[str]
- id str
- The ID of this resource.
- name str
- order_
by str
- aggregates List<String>
- columns List<String>
- conditions String
- field
Aliases List<String> - fields List<String>
- id String
- The ID of this resource.
- name String
- order
By String
Package Details
- Repository
- sentry pulumiverse/pulumi-sentry
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
sentry
Terraform Provider.