hacks/practical-sre/artifacts/dashboard-chat.tf (274 lines of code) (raw):

resource "google_monitoring_dashboard" "chat_dashboard" { project = var.gcp_project_id dashboard_json = <<EOF { "displayName": "MovieGuru-Chat-Dashboard", "mosaicLayout": { "columns": 48, "tiles": [ { "width": 24, "height": 16, "widget": { "xyChart": { "dataSets": [ { "timeSeriesQuery": { "prometheusQuery": "(sum(rate(movieguru_chat_calls_success_total[$${__interval}])) / sum(rate(movieguru_chat_calls_total[$${__interval}]))) * 100", "unitOverride": "%", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" }, "chartOptions": { "mode": "COLOR", "showLegend": false, "displayHorizontal": false } }, "title": "Chat Success Rate", "id": "" } }, { "xPos": 24, "width": 24, "height": 16, "widget": { "xyChart": { "dataSets": [ { "timeSeriesQuery": { "prometheusQuery": "(sum(rate(movieguru_chat_outcome_counter_total{Outcome=~\"Engaged\"}[$${__interval}])) / sum(rate(movieguru_chat_outcome_counter_total[$${__interval}]))) * 100", "unitOverride": "%", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" }, "chartOptions": { "mode": "COLOR", "showLegend": false, "displayHorizontal": false } }, "title": "User Engagement Rate", "id": "" } }, { "yPos": 16, "width": 24, "height": 16, "widget": { "xyChart": { "dataSets": [ { "timeSeriesQuery": { "prometheusQuery": "(sum(rate(movieguru_chat_sentiment_counter_total{Sentiment=\"Positive\"}[$${__interval}])) / sum(rate(movieguru_chat_sentiment_counter_total[$${__interval}]))) * 100\n", "unitOverride": "%", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] }, { "timeSeriesQuery": { "prometheusQuery": "(sum(rate(movieguru_chat_sentiment_counter_total{Sentiment=\"Negative\"}[$${__interval}])) / sum(rate(movieguru_chat_sentiment_counter_total[$${__interval}]))) * 100", "unitOverride": "%", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] }, { "timeSeriesQuery": { "prometheusQuery": "(sum(rate(movieguru_chat_sentiment_counter_total{Sentiment=\"Neutral\"}[$${__interval}])) / sum(rate(movieguru_chat_sentiment_counter_total[$${__interval}]))) * 100\n", "unitOverride": "%", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" }, "chartOptions": { "mode": "COLOR", "showLegend": false, "displayHorizontal": false } }, "title": "User Sentiment Rate", "id": "" } }, { "xPos": 24, "yPos": 16, "width": 24, "height": 16, "widget": { "xyChart": { "dataSets": [ { "timeSeriesQuery": { "prometheusQuery": "histogram_quantile(0.1, sum(rate(movieguru_chat_latency_milliseconds_bucket[$${__interval}])) by (le))\n", "unitOverride": "ms", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] }, { "timeSeriesQuery": { "prometheusQuery": "histogram_quantile(0.5, sum(rate(movieguru_chat_latency_milliseconds_bucket[$${__interval}])) by (le))\n", "unitOverride": "ms", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] }, { "timeSeriesQuery": { "prometheusQuery": "histogram_quantile(0.9, sum(rate(movieguru_chat_latency_milliseconds_bucket[$${__interval}])) by (le))\n", "unitOverride": "ms", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] }, { "timeSeriesQuery": { "prometheusQuery": "histogram_quantile(0.95, sum(rate(movieguru_chat_latency_milliseconds_bucket[$${__interval}])) by (le))\n", "unitOverride": "ms", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] }, { "timeSeriesQuery": { "prometheusQuery": "histogram_quantile(0.99, sum(rate(movieguru_chat_latency_milliseconds_bucket[$${__interval}])) by (le))\n", "unitOverride": "ms", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" }, "chartOptions": { "mode": "COLOR", "showLegend": false, "displayHorizontal": false } }, "title": "Chat Latency", "id": "" } }, { "yPos": 32, "width": 24, "height": 16, "widget": { "xyChart": { "dataSets": [ { "timeSeriesQuery": { "prometheusQuery": "(sum(rate(movieguru_chat_safetyissue_counter_total[$${__interval}])) / sum(rate(movieguru_chat_calls_total[$${__interval}]))) * 100", "unitOverride": "%", "outputFullDuration": false }, "plotType": "LINE", "legendTemplate": "", "targetAxis": "Y1", "dimensions": [], "measures": [], "breakdowns": [] } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" }, "chartOptions": { "mode": "COLOR", "showLegend": false, "displayHorizontal": false } }, "title": "Chat Safety Issue Rate", "id": "" } } ] }, "dashboardFilters": [], "labels": {} } EOF depends_on = [ helm_release.locust ] }