diff --git a/observability/dashboard/android-checkout.json b/observability/dashboard/android-checkout.json index 36f6312aa..206353468 100644 --- a/observability/dashboard/android-checkout.json +++ b/observability/dashboard/android-checkout.json @@ -87,30 +87,6 @@ } }, "overrides": [ - { - "__systemRef": "hideSeriesFrom", - "matcher": { - "id": "byNames", - "options": { - "mode": "exclude", - "names": [ - "giapBilling" - ], - "prefix": "All except:", - "readOnly": true - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": false, - "tooltip": false, - "viz": true - } - } - ] - } ] }, "gridPos": { @@ -181,6 +157,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -191,6 +168,9 @@ "viz": false }, "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, "lineWidth": 1, "pointSize": 5, "scaleDistribution": { @@ -200,7 +180,7 @@ "spanNulls": true, "stacking": { "group": "A", - "mode": "none" + "mode": "normal" }, "thresholdsStyle": { "mode": "off" @@ -232,6 +212,7 @@ "y": 9 }, "id": 24, + "interval": "15m", "options": { "legend": { "calcs": [ @@ -257,7 +238,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -270,14 +251,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -494,6 +475,8 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -564,34 +547,33 @@ "type": "prometheus", "uid": "prometheus" }, - "editorMode": "builder", + "editorMode": "code", "expr": "sum(increase(client_android_core_checkout_billing_subscribe_total{status=\"http2xx\", manager=\"proton\"}[$increase_interval]))", "hide": true, "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { "type": "prometheus", "uid": "prometheus" }, - "editorMode": "builder", + "editorMode": "code", "expr": "sum(increase(client_android_core_checkout_billing_subscribe_total{status!=\"http2xx\", manager=\"proton\"}[$increase_interval]))", "hide": true, "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "C", "type": "math" @@ -818,6 +800,8 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -888,34 +872,33 @@ "type": "prometheus", "uid": "prometheus" }, - "editorMode": "builder", + "editorMode": "code", "expr": "sum(increase(client_android_core_checkout_cardBilling_validatePlan_total{status=\"http2xx\"}[$increase_interval]))", "hide": true, "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { "type": "prometheus", "uid": "prometheus" }, - "editorMode": "builder", + "editorMode": "code", "expr": "sum(increase(client_android_core_checkout_cardBilling_validatePlan_total{status!=\"http2xx\"}[$increase_interval]))", "hide": true, "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "C", "type": "math" @@ -1132,6 +1115,8 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -1202,34 +1187,33 @@ "type": "prometheus", "uid": "prometheus" }, - "editorMode": "builder", + "editorMode": "code", "expr": "sum(increase(client_android_core_checkout_cardBilling_createPaymentToken_total{status=\"http2xx\"}[$increase_interval]))", "hide": true, "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { "type": "prometheus", "uid": "prometheus" }, - "editorMode": "builder", + "editorMode": "code", "expr": "sum(increase(client_android_core_checkout_cardBilling_createPaymentToken_total{status!=\"http2xx\"}[$increase_interval]))", "hide": true, "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "C", "type": "math" @@ -1465,6 +1449,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -1541,7 +1526,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -1554,14 +1539,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -1779,6 +1764,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -1855,7 +1841,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -1868,14 +1854,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A +$B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -2193,6 +2179,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -2220,6 +2207,8 @@ }, "mappings": [ ], + "max": 100, + "min": 0, "thresholds": { "mode": "absolute", "steps": [ @@ -2232,33 +2221,10 @@ "value": 80 } ] - } + }, + "unit": "percent" }, "overrides": [ - { - "__systemRef": "hideSeriesFrom", - "matcher": { - "id": "byNames", - "options": { - "mode": "exclude", - "names": [ - "Successes" - ], - "prefix": "All except:", - "readOnly": true - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": false, - "tooltip": false, - "viz": true - } - } - ] - } ] }, "gridPos": { @@ -2293,7 +2259,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -2306,17 +2272,27 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" + }, + { + "datasource": { + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$S / ($S + $F) * 100", + "hide": true, + "refId": "Availability (old)", + "type": "math" } ], "title": "Launch billing - availability/$increase_interval", @@ -2533,6 +2509,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -2609,7 +2586,27 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "Success" + "refId": "S" + }, + { + "datasource": { + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$ServiceTimeout + $ServiceUnavailable + $GooglePlayError + $ItemUnavailable + $DeveloperError", + "hide": true, + "refId": "F", + "type": "math" + }, + { + "datasource": { + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$sf_availability", + "hide": false, + "refId": "Availability", + "type": "math" }, { "datasource": { @@ -2624,16 +2621,6 @@ "range": true, "refId": "BillingUnavailable" }, - { - "datasource": { - "type": "__expr__", - "uid": "__expr__" - }, - "expression": "($Success / ($Success + $ServiceTimeout + $ServiceUnavailable + $GooglePlayError + $ItemUnavailable + $DeveloperError)) * 100", - "hide": false, - "refId": "Availability", - "type": "math" - }, { "datasource": { "type": "prometheus", @@ -2894,7 +2881,7 @@ "type": "prometheus", "uid": "prometheus" }, - "editorMode": "builder", + "editorMode": "code", "expr": "sum by(status) (increase(client_android_core_checkout_giapBilling_purchase_total{status=\"success\"}[$increase_interval]))", "interval": "$increase_interval", "legendFormat": "__auto", @@ -2962,30 +2949,6 @@ } }, "overrides": [ - { - "__systemRef": "hideSeriesFrom", - "matcher": { - "id": "byNames", - "options": { - "mode": "exclude", - "names": [ - "unknown" - ], - "prefix": "All except:", - "readOnly": true - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": false, - "tooltip": false, - "viz": true - } - } - ] - } ] }, "gridPos": { @@ -3014,7 +2977,7 @@ "type": "prometheus", "uid": "prometheus" }, - "editorMode": "builder", + "editorMode": "code", "expr": "sum by(status) (increase(client_android_core_checkout_giapBilling_purchase_total{status!=\"success\"}[$increase_interval]))", "interval": "$increase_interval", "legendFormat": "__auto", @@ -3042,6 +3005,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -3118,7 +3082,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -3131,14 +3095,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -3356,6 +3320,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -3407,6 +3372,7 @@ "y": 73 }, "id": 43, + "interval": "15m", "options": { "legend": { "calcs": [ @@ -3432,7 +3398,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -3445,14 +3411,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -3698,6 +3664,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -3749,6 +3716,7 @@ "y": 81 }, "id": 58, + "interval": "15m", "options": { "legend": { "calcs": [ @@ -3774,7 +3742,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -3787,14 +3755,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -3998,7 +3966,7 @@ "type": "timeseries" }, { - "collapsed": false, + "collapsed": true, "gridPos": { "h": 1, "w": 24, @@ -4007,1266 +3975,1270 @@ }, "id": 2, "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "Fetching already saved payment methods (`payments/v4/methods`).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 25, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 90 + }, + "id": 17, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_checkout_paymentMethods_getPaymentMethods_total{status=\"http2xx\"}[$increase_interval])) or vector(0)", + "hide": true, + "interval": "$increase_interval", + "legendFormat": "Successes", + "range": true, + "refId": "S" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_checkout_paymentMethods_getPaymentMethods_total{status!=\"http2xx\"}[$increase_interval])) or vector(0)", + "hide": true, + "interval": "$increase_interval", + "legendFormat": "Failures", + "range": true, + "refId": "F" + }, + { + "datasource": { + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$sf_availability", + "hide": false, + "refId": "Availability", + "type": "math" + } + ], + "title": "Get payment methods - availability/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 90 + }, + "id": 18, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "builder", + "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_getPaymentMethods_total{status=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Get payment methods - successes/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 90 + }, + "id": 19, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "builder", + "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_getPaymentMethods_total{status!=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Get payment methods - failures/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "Validate a plan before subscribing (`payments/v4/subscription/check`).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 25, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "percent" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 98 + }, + "id": 14, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_checkout_paymentMethods_validatePlan_total{status=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "Successes", + "range": true, + "refId": "S" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_checkout_paymentMethods_validatePlan_total{status!=\"http2xx\"}[$increase_interval]))", + "hide": false, + "interval": "$increase_interval", + "legendFormat": "Failures", + "range": true, + "refId": "F" + }, + { + "datasource": { + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$sf_availability", + "hide": false, + "refId": "C", + "type": "math" + } + ], + "title": "Validate plan - availability/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 98 + }, + "id": 15, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "builder", + "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_validatePlan_total{status=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Validate plan - successes/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 98 + }, + "id": 16, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "builder", + "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_validatePlan_total{status!=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Validate plan - failures/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "Creating a payment token when paying with an existing payment method.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 25, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "percent" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 106 + }, + "id": 10, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_checkout_paymentMethods_createPaymentToken_total{status=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "Successes", + "range": true, + "refId": "S" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_checkout_paymentMethods_createPaymentToken_total{status!=\"http2xx\"}[$increase_interval]))", + "hide": false, + "interval": "$increase_interval", + "legendFormat": "Failures", + "range": true, + "refId": "F" + }, + { + "datasource": { + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$sf_availability", + "hide": false, + "refId": "C", + "type": "math" + } + ], + "title": "Create payment token - availability/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 106 + }, + "id": 12, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "builder", + "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_createPaymentToken_total{status=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Create payment token - successes/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 106 + }, + "id": 13, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "builder", + "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_createPaymentToken_total{status!=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Create payment token - failures/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "Creating or updating a subscription using an existing payment method (`payments/v4/subscription`).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 25, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "percent" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 114 + }, + "id": 8, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_checkout_paymentMethods_subscribe_total{status=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "Successes", + "range": true, + "refId": "S" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_checkout_paymentMethods_subscribe_total{status!=\"http2xx\"}[$increase_interval]))", + "hide": false, + "interval": "$increase_interval", + "legendFormat": "Failures", + "range": true, + "refId": "F" + }, + { + "datasource": { + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$sf_availability", + "hide": false, + "refId": "C", + "type": "math" + } + ], + "title": "Subscribe - availability/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 114 + }, + "id": 4, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "builder", + "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_subscribe_total{status=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Subscribe - successes/$increase_interval", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 114 + }, + "id": 6, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "builder", + "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_subscribe_total{status!=\"http2xx\"}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Subscribe - failures/$increase_interval", + "type": "timeseries" + } ], "title": "Existing payment methods", "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "description": "Fetching already saved payment methods (`payments/v4/methods`).", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMax": 100, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 25, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 90 - }, - "id": 17, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "code", - "expr": "sum(increase(client_android_core_checkout_paymentMethods_getPaymentMethods_total{status=\"http2xx\"}[$increase_interval])) or vector(0)", - "hide": true, - "interval": "$increase_interval", - "legendFormat": "Successes", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "code", - "expr": "sum(increase(client_android_core_checkout_paymentMethods_getPaymentMethods_total{status!=\"http2xx\"}[$increase_interval])) or vector(0)", - "hide": true, - "interval": "$increase_interval", - "legendFormat": "Failures", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "__expr__", - "uid": "__expr__" - }, - "expression": "$A / ($A + $B) * 100", - "hide": false, - "refId": "Availability", - "type": "math" - } - ], - "title": "Get payment methods - availability/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 90 - }, - "id": 18, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_getPaymentMethods_total{status=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Get payment methods - successes/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 90 - }, - "id": 19, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_getPaymentMethods_total{status!=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Get payment methods - failures/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "description": "Validate a plan before subscribing (`payments/v4/subscription/check`).", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 25, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "percent" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 98 - }, - "id": 14, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum(increase(client_android_core_checkout_paymentMethods_validatePlan_total{status=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "Successes", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum(increase(client_android_core_checkout_paymentMethods_validatePlan_total{status!=\"http2xx\"}[$increase_interval]))", - "hide": false, - "interval": "$increase_interval", - "legendFormat": "Failures", - "range": true, - "refId": "B" - }, - { - "datasource": { - "name": "Expression", - "type": "__expr__", - "uid": "__expr__" - }, - "expression": "$A / ($A + $B) * 100", - "hide": false, - "refId": "C", - "type": "math" - } - ], - "title": "Validate plan - availability/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 98 - }, - "id": 15, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_validatePlan_total{status=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Validate plan - successes/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 98 - }, - "id": 16, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_validatePlan_total{status!=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Validate plan - failures/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "description": "Creating a payment token when paying with an existing payment method.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 25, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "percent" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 106 - }, - "id": 10, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum(increase(client_android_core_checkout_paymentMethods_createPaymentToken_total{status=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "Successes", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum(increase(client_android_core_checkout_paymentMethods_createPaymentToken_total{status!=\"http2xx\"}[$increase_interval]))", - "hide": false, - "interval": "$increase_interval", - "legendFormat": "Failures", - "range": true, - "refId": "B" - }, - { - "datasource": { - "name": "Expression", - "type": "__expr__", - "uid": "__expr__" - }, - "expression": "$A / ($A + $B) * 100", - "hide": false, - "refId": "C", - "type": "math" - } - ], - "title": "Create payment token - availability/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 106 - }, - "id": 12, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_createPaymentToken_total{status=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Create payment token - successes/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 106 - }, - "id": 13, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_createPaymentToken_total{status!=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Create payment token - failures/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "description": "Creating or updating a subscription using an existing payment method (`payments/v4/subscription`).", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 25, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "percent" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 114 - }, - "id": 8, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum(increase(client_android_core_checkout_paymentMethods_subscribe_total{status=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "Successes", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum(increase(client_android_core_checkout_paymentMethods_subscribe_total{status!=\"http2xx\"}[$increase_interval]))", - "hide": false, - "interval": "$increase_interval", - "legendFormat": "Failures", - "range": true, - "refId": "B" - }, - { - "datasource": { - "name": "Expression", - "type": "__expr__", - "uid": "__expr__" - }, - "expression": "$A / ($A + $B) * 100", - "hide": false, - "refId": "C", - "type": "math" - } - ], - "title": "Subscribe - availability/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 114 - }, - "id": 4, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_subscribe_total{status=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Subscribe - successes/$increase_interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [ - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 114 - }, - "id": 6, - "options": { - "legend": { - "calcs": [ - ], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "editorMode": "builder", - "expr": "sum by(status) (increase(client_android_core_checkout_paymentMethods_subscribe_total{status!=\"http2xx\"}[$increase_interval]))", - "interval": "$increase_interval", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Subscribe - failures/$increase_interval", - "type": "timeseries" } ], - "refresh": "", - "schemaVersion": 37, + "refresh": "1m", + "schemaVersion": 38, "style": "dark", "tags": [ ], @@ -5345,6 +5317,26 @@ "refresh": 2, "skipUrlSync": false, "type": "interval" + }, + { + "current": { + "selected": false, + "text": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "value": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100" + }, + "description": "$S - successes\n$F - failures\n\nThe formula for availability percentage (S / (S+F)), but in case both $S and $F are `0`, the availability is set to 100%.", + "hide": 2, + "name": "sf_availability", + "options": [ + { + "selected": false, + "text": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "value": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100" + } + ], + "query": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "skipUrlSync": false, + "type": "constant" } ] }, @@ -5357,6 +5349,6 @@ "timezone": "", "title": "Android / Checkout", "uid": "gnNWal14k", - "version": 4, + "version": 7, "weekStart": "" } \ No newline at end of file diff --git a/observability/dashboard/android-hv.json b/observability/dashboard/android-hv.json index 08ec0169e..1fecc5643 100644 --- a/observability/dashboard/android-hv.json +++ b/observability/dashboard/android-hv.json @@ -172,6 +172,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -249,7 +250,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -262,7 +263,7 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { @@ -282,7 +283,7 @@ "type": "__expr__", "uid": "__expr__" }, - "expression": "($A / ($A + $B + $C)) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Success Ratio", "type": "math" @@ -517,6 +518,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -595,7 +597,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -608,14 +610,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -834,6 +836,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -912,7 +915,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -925,14 +928,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -1137,7 +1140,7 @@ } ], "refresh": "5m", - "schemaVersion": 37, + "schemaVersion": 38, "style": "dark", "tags": [ ], @@ -1216,6 +1219,26 @@ "refresh": 2, "skipUrlSync": false, "type": "interval" + }, + { + "current": { + "selected": false, + "text": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "value": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100" + }, + "description": "$S - successes\n$F - failures\n\nThe formula for availability percentage (S / (S+F)), but in case both $S and $F are `0`, the availability is set to 100%.", + "hide": 2, + "name": "sf_availability", + "options": [ + { + "selected": false, + "text": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "value": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100" + } + ], + "query": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "skipUrlSync": false, + "type": "constant" } ] }, @@ -1228,6 +1251,6 @@ "timezone": "", "title": "Android / HV", "uid": "xY-mRl1Vz", - "version": 3, + "version": 5, "weekStart": "" } \ No newline at end of file diff --git a/observability/dashboard/android-recovery.json b/observability/dashboard/android-recovery.json index 31c77361f..34878d887 100644 --- a/observability/dashboard/android-recovery.json +++ b/observability/dashboard/android-recovery.json @@ -143,6 +143,8 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, @@ -159,7 +161,7 @@ "type": "linear" }, "showPoints": "auto", - "spanNulls": false, + "spanNulls": true, "stacking": { "group": "A", "mode": "none" @@ -219,7 +221,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -232,15 +234,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Avalability", "type": "math" @@ -442,7 +443,8 @@ "type": "timeseries" } ], - "schemaVersion": 37, + "refresh": "1m", + "schemaVersion": 38, "style": "dark", "tags": [ ], @@ -453,9 +455,9 @@ "auto_count": 100, "auto_min": "1m", "current": { - "selected": true, - "text": "1m", - "value": "1m" + "selected": false, + "text": "auto", + "value": "$__auto_interval_increase_interval" }, "hide": 0, "name": "increase_interval", @@ -521,11 +523,31 @@ "refresh": 2, "skipUrlSync": false, "type": "interval" + }, + { + "current": { + "selected": false, + "text": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "value": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100" + }, + "description": "$S - successes\n$F - failures\n\nThe formula for availability percentage (S / (S+F)), but in case both $S and $F are `0`, the availability is set to 100%.", + "hide": 2, + "name": "sf_availability", + "options": [ + { + "selected": false, + "text": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "value": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100" + } + ], + "query": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "skipUrlSync": false, + "type": "constant" } ] }, "time": { - "from": "now-6h", + "from": "now-7d", "to": "now" }, "timepicker": { @@ -533,6 +555,6 @@ "timezone": "", "title": "Android / Recovery", "uid": "fwrsXJX4z", - "version": 5, + "version": 7, "weekStart": "" } \ No newline at end of file diff --git a/observability/dashboard/android-sign-in.json b/observability/dashboard/android-sign-in.json index 2915a1eea..bb72cc455 100644 --- a/observability/dashboard/android-sign-in.json +++ b/observability/dashboard/android-sign-in.json @@ -157,9 +157,11 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 0, + "fillOpacity": 25, "gradientMode": "none", "hideFrom": { "legend": false, @@ -173,7 +175,7 @@ "type": "linear" }, "showPoints": "auto", - "spanNulls": false, + "spanNulls": true, "stacking": { "group": "A", "mode": "none" @@ -228,12 +230,12 @@ "uid": "prometheus" }, "editorMode": "code", - "expr": "sum by(status) (increase(client_android_core_login_sso_obtainChallengeToken_total{status=\"http2xx\"}[$increase_interval])) or vector(0)", + "expr": "sum(increase(client_android_core_login_sso_obtainChallengeToken_total{status=\"http2xx\"}[$increase_interval])) or vector(0)", "hide": true, "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -241,20 +243,19 @@ "uid": "prometheus" }, "editorMode": "code", - "expr": "sum by(status) (increase(client_android_core_login_sso_obtainChallengeToken_total{status!=\"http2xx\", status!=\"notConnected\", status!=\"ssoDomainNotFound\"}[$increase_interval])) or vector(0)", + "expr": "sum(increase(client_android_core_login_sso_obtainChallengeToken_total{status!=\"http2xx\", status!=\"notConnected\", status!=\"ssoDomainNotFound\"}[$increase_interval])) or vector(0)", "hide": true, "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -473,9 +474,11 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 0, + "fillOpacity": 25, "gradientMode": "none", "hideFrom": { "legend": false, @@ -544,12 +547,12 @@ "uid": "prometheus" }, "editorMode": "code", - "expr": "sum by(status) (increase(client_android_core_login_ssoIdentityProvider_pageLoad_total{status=\"http2xx\"}[$increase_interval])) or vector(0)", + "expr": "sum(increase(client_android_core_login_ssoIdentityProvider_pageLoad_total{status=\"http2xx\"}[$increase_interval])) or vector(0)", "hide": true, "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -557,20 +560,19 @@ "uid": "prometheus" }, "editorMode": "code", - "expr": "sum by(status) (increase(client_android_core_login_ssoIdentityProvider_pageLoad_total{status!=\"http2xx\"}[$increase_interval])) or vector(0)", + "expr": "sum(increase(client_android_core_login_ssoIdentityProvider_pageLoad_total{status!=\"http2xx\"}[$increase_interval])) or vector(0)", "hide": true, "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -789,9 +791,11 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 0, + "fillOpacity": 25, "gradientMode": "none", "hideFrom": { "legend": false, @@ -860,12 +864,12 @@ "uid": "prometheus" }, "editorMode": "code", - "expr": "sum by(status) (increase(client_android_core_login_ssoIdentityProvider_result_total{status=\"success\"}[$increase_interval])) or vector(0)", + "expr": "sum(increase(client_android_core_login_ssoIdentityProvider_result_total{status=\"success\"}[$increase_interval])) or vector(0)", "hide": true, "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -873,20 +877,19 @@ "uid": "prometheus" }, "editorMode": "code", - "expr": "sum by(status) (increase(client_android_core_login_ssoIdentityProvider_result_total{status!=\"success\"}[$increase_interval])) or vector(0)", + "expr": "sum(increase(client_android_core_login_ssoIdentityProvider_result_total{status!=\"success\"}[$increase_interval])) or vector(0)", "hide": true, "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -1105,9 +1108,11 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 0, + "fillOpacity": 25, "gradientMode": "none", "hideFrom": { "legend": false, @@ -1176,12 +1181,12 @@ "uid": "prometheus" }, "editorMode": "code", - "expr": "sum by(status) (increase(client_android_core_login_sso_auth_total{status=\"http2xx\"}[$increase_interval])) or vector(0)", + "expr": "sum(increase(client_android_core_login_sso_auth_total{status=\"http2xx\"}[$increase_interval])) or vector(0)", "hide": true, "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -1189,20 +1194,19 @@ "uid": "prometheus" }, "editorMode": "code", - "expr": "sum by(status) (increase(client_android_core_login_sso_auth_total{status!=\"http2xx\", status!=\"notConnected\", status!=\"http422\"}[$increase_interval])) or vector(0)", + "expr": "sum(increase(client_android_core_login_sso_auth_total{status!=\"http2xx\", status!=\"notConnected\", status!=\"http422\"}[$increase_interval])) or vector(0)", "hide": true, "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -1436,6 +1440,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -1515,7 +1520,7 @@ "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -1528,15 +1533,14 @@ "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -1755,6 +1759,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -1831,7 +1836,7 @@ "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -1839,20 +1844,19 @@ "uid": "prometheus" }, "editorMode": "code", - "expr": "sum(increase(client_android_core_login_eaToIaUsernameAvailability_total{status!=\"http2xx\",status!=\"http409UsernameConflict\"}[$increase_interval])) or vector(0)", + "expr": "sum(increase(client_android_core_login_eaToIaUsernameAvailability_total{status!=\"http2xx\", status!=\"http409UsernameConflict\"}[$increase_interval])) or vector(0)", "hide": true, "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -2071,6 +2075,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -2147,7 +2152,7 @@ "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -2160,15 +2165,14 @@ "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -2388,6 +2392,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -2419,7 +2424,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -2463,7 +2469,7 @@ "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -2476,15 +2482,14 @@ "interval": "$increase_interval", "legendFormat": "__auto", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { - "name": "Expression", "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -2540,7 +2545,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -2636,7 +2642,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -2686,8 +2693,8 @@ "type": "timeseries" } ], - "refresh": false, - "schemaVersion": 37, + "refresh": "1m", + "schemaVersion": 38, "style": "dark", "tags": [ ], @@ -2766,6 +2773,26 @@ "refresh": 2, "skipUrlSync": false, "type": "interval" + }, + { + "current": { + "selected": false, + "text": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "value": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100" + }, + "description": "$S - successes\n$F - failures\n\nThe formula for availability percentage (S / (S+F)), but in case both $S and $F are `0`, the availability is set to 100%.", + "hide": 2, + "name": "sf_availability", + "options": [ + { + "selected": false, + "text": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "value": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100" + } + ], + "query": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "skipUrlSync": false, + "type": "constant" } ] }, @@ -2778,6 +2805,6 @@ "timezone": "", "title": "Android / Sign-in", "uid": "MSUvfY-Vz", - "version": 12, + "version": 14, "weekStart": "" } \ No newline at end of file diff --git a/observability/dashboard/android-sign-up.json b/observability/dashboard/android-sign-up.json index c84d93be9..4d877641c 100644 --- a/observability/dashboard/android-sign-up.json +++ b/observability/dashboard/android-sign-up.json @@ -30,6 +30,188 @@ ], "liveNow": false, "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "mappings": [ + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 84 + }, + { + "color": "#EAB839", + "value": 89 + }, + { + "color": "green", + "value": 94 + } + ] + }, + "unit": "percent" + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 40, + "options": { + "orientation": "auto", + "reduceOptions": { + "calcs": [ + ], + "fields": "/^Mean$/", + "values": true + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_signup_fetchDomains_total{status=\"http2xx\"}[$increase_interval])) or vector(0)", + "hide": true, + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_signup_fetchDomains_total{status!=\"http2xx\", status!=\"notConnected\"}[$increase_interval])) or vector(0)", + "hide": true, + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$A / ($A + $B) * 100", + "hide": false, + "refId": "Email/Domain check", + "type": "math" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_signup_accountCreation_total{status=\"http2xx\"}[$increase_interval])) or vector(0)", + "hide": true, + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_signup_accountCreation_total{status!=\"http2xx\", status!=\"http409UsernameConflict\", status!=\"http422HvRequired\"}[$increase_interval])) or vector(0)", + "hide": true, + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "E" + }, + { + "datasource": { + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$D / ($D + $E) * 100", + "hide": false, + "refId": "Account Creation", + "type": "math" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_signup_login_total{status=\"http2xx\"}[$increase_interval])) or vector(0) ", + "hide": true, + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "G" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(increase(client_android_core_signup_login_total{status!=\"http2xx\"}[$increase_interval])) or vector(0)", + "hide": true, + "interval": "$increase_interval", + "legendFormat": "__auto", + "range": true, + "refId": "H" + }, + { + "datasource": { + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$G / ($G + $H) * 100", + "hide": false, + "refId": "Post creation sign-in", + "type": "math" + } + ], + "title": "Sign-up Android Availability", + "transformations": [ + { + "id": "reduce", + "options": { + "includeTimeField": false, + "labelsToFields": true, + "mode": "seriesToRows", + "reducers": [ + "mean" + ] + } + } + ], + "type": "gauge" + }, { "datasource": { "type": "prometheus", @@ -93,7 +275,7 @@ "h": 8, "w": 24, "x": 0, - "y": 0 + "y": 5 }, "id": 2, "options": { @@ -132,7 +314,7 @@ "h": 1, "w": 24, "x": 0, - "y": 8 + "y": 13 }, "id": 8, "panels": [ @@ -156,6 +338,8 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, @@ -207,7 +391,7 @@ "h": 8, "w": 8, "x": 0, - "y": 9 + "y": 14 }, "id": 37, "options": { @@ -235,7 +419,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -248,14 +432,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -328,7 +512,7 @@ "h": 8, "w": 8, "x": 8, - "y": 9 + "y": 14 }, "id": 4, "options": { @@ -424,7 +608,7 @@ "h": 8, "w": 8, "x": 16, - "y": 9 + "y": 14 }, "id": 10, "options": { @@ -473,6 +657,8 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, @@ -524,7 +710,7 @@ "h": 8, "w": 8, "x": 0, - "y": 17 + "y": 22 }, "id": 41, "options": { @@ -552,7 +738,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -565,14 +751,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -645,7 +831,7 @@ "h": 8, "w": 8, "x": 8, - "y": 17 + "y": 22 }, "id": 12, "options": { @@ -741,7 +927,7 @@ "h": 8, "w": 8, "x": 16, - "y": 17 + "y": 22 }, "id": 14, "options": { @@ -838,9 +1024,9 @@ "h": 8, "w": 8, "x": 8, - "y": 25 + "y": 30 }, - "id": 38, + "id": 42, "options": { "legend": { "calcs": [ @@ -935,9 +1121,9 @@ "h": 8, "w": 8, "x": 16, - "y": 25 + "y": 30 }, - "id": 39, + "id": 43, "options": { "legend": { "calcs": [ @@ -975,7 +1161,7 @@ "h": 1, "w": 24, "x": 0, - "y": 33 + "y": 38 }, "id": 16, "panels": [ @@ -983,6 +1169,103 @@ "title": "Screen: Creating an account", "type": "row" }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 38, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum (increase(client_android_core_signup_accountCreation_total{}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "Account creation total", + "range": true, + "refId": "A" + } + ], + "title": "Account creation - total", + "type": "timeseries" + }, { "datasource": { "type": "prometheus", @@ -1000,6 +1283,8 @@ "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", + "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -1051,7 +1336,7 @@ "h": 8, "w": 8, "x": 0, - "y": 34 + "y": 47 }, "id": 34, "options": { @@ -1080,7 +1365,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -1093,14 +1378,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -1172,7 +1457,7 @@ "h": 8, "w": 8, "x": 8, - "y": 34 + "y": 47 }, "id": 18, "options": { @@ -1268,7 +1553,7 @@ "h": 8, "w": 8, "x": 16, - "y": 34 + "y": 47 }, "id": 20, "options": { @@ -1301,6 +1586,102 @@ "title": "Account creation - failures/$increase_interval", "type": "timeseries" }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [ + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 55 + }, + "id": 39, + "options": { + "legend": { + "calcs": [ + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum (increase(client_android_core_signup_login_total{}[$increase_interval]))", + "interval": "$increase_interval", + "legendFormat": "Login after signup total", + "range": true, + "refId": "A" + } + ], + "title": "Login after signup - total", + "type": "timeseries" + }, { "datasource": { "type": "prometheus", @@ -1317,6 +1698,7 @@ "axisLabel": "", "axisPlacement": "auto", "axisSoftMax": 100, + "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", "fillOpacity": 25, @@ -1365,7 +1747,7 @@ "h": 8, "w": 8, "x": 0, - "y": 42 + "y": 63 }, "id": 36, "options": { @@ -1393,7 +1775,7 @@ "interval": "$increase_interval", "legendFormat": "Successes", "range": true, - "refId": "A" + "refId": "S" }, { "datasource": { @@ -1406,14 +1788,14 @@ "interval": "$increase_interval", "legendFormat": "Failures", "range": true, - "refId": "B" + "refId": "F" }, { "datasource": { "type": "__expr__", "uid": "__expr__" }, - "expression": "$A / ($A + $B) * 100", + "expression": "$sf_availability", "hide": false, "refId": "Availability", "type": "math" @@ -1485,7 +1867,7 @@ "h": 8, "w": 8, "x": 8, - "y": 42 + "y": 63 }, "id": 22, "options": { @@ -1581,7 +1963,7 @@ "h": 8, "w": 8, "x": 16, - "y": 42 + "y": 63 }, "id": 24, "options": { @@ -1677,7 +2059,7 @@ "h": 8, "w": 6, "x": 0, - "y": 50 + "y": 71 }, "id": 26, "options": { @@ -1774,7 +2156,7 @@ "h": 8, "w": 6, "x": 6, - "y": 50 + "y": 71 }, "id": 28, "options": { @@ -1870,7 +2252,7 @@ "h": 8, "w": 6, "x": 12, - "y": 50 + "y": 71 }, "id": 30, "options": { @@ -1966,7 +2348,7 @@ "h": 8, "w": 6, "x": 18, - "y": 50 + "y": 71 }, "id": 32, "options": { @@ -2000,8 +2382,8 @@ "type": "timeseries" } ], - "refresh": "5m", - "schemaVersion": 37, + "refresh": "1m", + "schemaVersion": 38, "style": "dark", "tags": [ ], @@ -2076,10 +2458,30 @@ } ], "query": "1m,10m,30m,1h,6h,12h,1d,7d,14d,30d", - "queryValue": "30m", + "queryValue": "", "refresh": 2, "skipUrlSync": false, "type": "interval" + }, + { + "current": { + "selected": false, + "text": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "value": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100" + }, + "description": "$S - successes\n$F - failures\n\nThe formula for availability percentage (S / (S+F)), but in case both $S and $F are `0`, the availability is set to 100%.", + "hide": 2, + "name": "sf_availability", + "options": [ + { + "selected": false, + "text": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "value": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100" + } + ], + "query": "($S + !($S || $F)) / (($S + $F) + !($S || $F)) * 100", + "skipUrlSync": false, + "type": "constant" } ] }, @@ -2092,6 +2494,6 @@ "timezone": "", "title": "Android / Sign-up", "uid": "nccm8bJVk", - "version": 6, + "version": 9, "weekStart": "" } \ No newline at end of file