diff --git a/AkkaDotNet.LargeNetworkTests.sln b/AkkaDotNet.LargeNetworkTests.sln index 18d63d4..5255fd6 100644 --- a/AkkaDotNet.LargeNetworkTests.sln +++ b/AkkaDotNet.LargeNetworkTests.sln @@ -27,10 +27,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "backend", "backend", "{BE2E EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AkkaDotNet.Messages", "src\shared\AkkaDotNet.Messages\AkkaDotNet.Messages.csproj", "{8F96042B-A435-4789-A92A-67B9C433E293}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{A0685D0A-4F42-433E-8727-101007B3DF9D}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{74F9830C-C907-4576-8A21-18A0790147D7}" ProjectSection(SolutionItems) = preProject src\Directory.Build.props = src\Directory.Build.props src\Directory.Packages.props = src\Directory.Packages.props + global.json = global.json + NuGet.config = NuGet.config EndProjectSection EndProject Global diff --git a/k8s/local/environment/grafana-configmap.yaml b/k8s/local/environment/grafana-configmap.yaml index 4e2faf3..b1c16c6 100644 --- a/k8s/local/environment/grafana-configmap.yaml +++ b/k8s/local/environment/grafana-configmap.yaml @@ -24,37 +24,44 @@ metadata: app: grafana name: grafana-dashs data: - k8s-dashboard.json: | + k8s-dashboard.json: | { - "__inputs": [{ - "name": "DS_PROMETHEUS", - "label": "prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - }], - "__requires": [{ - "type": "panel", - "id": "singlestat", - "name": "Singlestat", - "version": "" - }, { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - }, { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "3.1.0" - }, { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - }], + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "panel", + "id": "singlestat", + "name": "Singlestat", + "version": "" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "3.1.0" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + } + ], "id": null, "title": "Kubernetes Pod Resources", "description": "Shows resource usage of Kubernetes pods.", @@ -64,1219 +71,2139 @@ data: "style": "dark", "timezone": "browser", "editable": true, - "hideControls": false, - "sharedCrosshair": false, - "rows": [{ - "collapse": false, - "editable": true, - "height": "250px", - "panels": [{ - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "prometheus", - "editable": true, - "error": false, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "height": "180px", - "id": 4, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [{ - "name": "value to text", - "value": 1 - }, { - "name": "range to text", - "value": 2 - }], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [{ - "from": "null", - "text": "N/A", - "to": "null" - }], - "span": 4, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "targets": [{ - "expr": "sum (container_memory_working_set_bytes{id=\"/\",instance=~\"^$instance$\"}) / sum (machine_memory_bytes{instance=~\"^$instance$\"}) * 100", - "interval": "", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 2 - }], - "thresholds": "65, 90", - "timeFrom": "1m", - "timeShift": null, - "title": "Memory Working Set", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [{ - "op": "=", - "text": "N/A", - "value": "null" - }], - "valueName": "current" - }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], + "hideControls": false, + "sharedCrosshair": false, + "rows": [ + { + "collapse": false, + "editable": true, + "height": "250px", + "panels": [ + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": true, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "prometheus", + "editable": true, + "error": false, + "format": "percent", + "gauge": + { + "maxValue": 100, + "minValue": 0, + "show": true, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "height": "180px", + "id": 4, + "interval": null, + "isNew": true, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 4, + "sparkline": + { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "sum (container_memory_working_set_bytes{id=\"/\",instance=~\"^$instance$\"}) / sum (machine_memory_bytes{instance=~\"^$instance$\"}) * 100", + "interval": "", + "intervalFactor": 2, + "legendFormat": "", + "refId": "A", + "step": 2 + } + ], + "thresholds": "65, 90", + "timeFrom": "1m", + "timeShift": null, + "title": "Memory Working Set", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": true, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "format": "percent", + "gauge": + { + "maxValue": 100, + "minValue": 0, + "show": true, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "height": "180px", + "id": 6, + "interval": null, + "isNew": true, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 4, + "sparkline": + { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "sum(rate(container_cpu_usage_seconds_total{id=\"/\",instance=~\"^$instance$\"}[1m])) / sum (machine_cpu_cores{instance=~\"^$instance$\"}) * 100", + "interval": "10s", + "intervalFactor": 1, + "refId": "A", + "step": 10 + } + ], + "thresholds": "65, 90", + "timeFrom": "1m", + "timeShift": null, + "title": "Cpu Usage", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": true, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "format": "percent", + "gauge": + { + "maxValue": 100, + "minValue": 0, + "show": true, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "height": "180px", + "id": 7, + "interval": null, + "isNew": true, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 4, + "sparkline": + { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "sum(container_fs_usage_bytes{id=\"/\",instance=~\"^$instance$\"}) / sum(container_fs_limit_bytes{id=\"/\",instance=~\"^$instance$\"}) * 100", + "interval": "10s", + "intervalFactor": 1, + "legendFormat": "", + "metric": "", + "refId": "A", + "step": 10 + } + ], + "thresholds": "65, 90", + "timeFrom": "1m", + "timeShift": null, + "title": "Filesystem Usage", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "format": "bytes", + "gauge": + { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "height": "1px", + "hideTimeOverride": true, + "id": 9, + "interval": null, + "isNew": true, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "20%", + "prefix": "", + "prefixFontSize": "20%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 2, + "sparkline": + { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "sum(container_memory_working_set_bytes{id=\"/\",instance=~\"^$instance$\"})", + "interval": "10s", + "intervalFactor": 1, + "refId": "A", + "step": 10 + } + ], + "thresholds": "", + "timeFrom": "1m", + "title": "Used", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "format": "bytes", + "gauge": + { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "height": "1px", + "hideTimeOverride": true, + "id": 10, + "interval": null, + "isNew": true, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 2, + "sparkline": + { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "sum (machine_memory_bytes{instance=~\"^$instance$\"})", + "interval": "10s", + "intervalFactor": 1, + "refId": "A", + "step": 10 + } + ], + "thresholds": "", + "timeFrom": "1m", + "title": "Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "format": "none", + "gauge": + { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "height": "1px", + "hideTimeOverride": true, + "id": 11, + "interval": null, + "isNew": true, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": " cores", + "postfixFontSize": "30%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 2, + "sparkline": + { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "sum (rate (container_cpu_usage_seconds_total{id=\"/\",instance=~\"^$instance$\"}[1m]))", + "interval": "10s", + "intervalFactor": 1, + "refId": "A", + "step": 10 + } + ], + "thresholds": "", + "timeFrom": "1m", + "timeShift": null, + "title": "Used", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "format": "none", + "gauge": + { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "height": "1px", + "hideTimeOverride": true, + "id": 12, + "interval": null, + "isNew": true, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": " cores", + "postfixFontSize": "30%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 2, + "sparkline": + { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "sum (machine_cpu_cores{instance=~\"^$instance$\"})", + "interval": "10s", + "intervalFactor": 1, + "refId": "A", + "step": 10 + } + ], + "thresholds": "", + "timeFrom": "1m", + "title": "Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "format": "bytes", + "gauge": + { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "height": "1px", + "hideTimeOverride": true, + "id": 13, + "interval": null, + "isNew": true, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 2, + "sparkline": + { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "sum(container_fs_usage_bytes{id=\"/\",instance=~\"^$instance$\"})", + "interval": "10s", + "intervalFactor": 1, + "refId": "A", + "step": 10 + } + ], + "thresholds": "", + "timeFrom": "1m", + "title": "Used", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "format": "bytes", + "gauge": + { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "height": "1px", + "hideTimeOverride": true, + "id": 14, + "interval": null, + "isNew": true, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 2, + "sparkline": + { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "sum (container_fs_limit_bytes{id=\"/\",instance=~\"^$instance$\"})", + "interval": "10s", + "intervalFactor": 1, + "refId": "A", + "step": 10 + } + ], + "thresholds": "", + "timeFrom": "1m", + "title": "Total", + "type": "singlestat", + "valueFontSize": "50%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "fill": 1, + "grid": + { + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)", + "thresholdLine": false + }, + "height": "200px", + "id": 32, + "isNew": true, + "legend": + { + "alignAsTable": true, + "avg": true, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 200, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 12, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_network_receive_bytes_total{instance=~\"^$instance$\",namespace=~\"^$namespace$\"}[1m]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "receive", + "metric": "network", + "refId": "A", + "step": 240 + }, + { + "expr": "- sum(rate(container_network_transmit_bytes_total{instance=~\"^$instance$\",namespace=~\"^$namespace$\"}[1m]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "transmit", + "metric": "network", + "refId": "B", + "step": 240 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network", + "tooltip": + { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "transparent": false, + "type": "graph", + "xaxis": + { + "show": true + }, + "yaxes": [ + { + "format": "Bps", + "label": "transmit / receive", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + } + ], + "showTitle": true, + "title": "all pods" + }, + { + "collapse": false, + "editable": true, + "height": "250px", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "datasource": "prometheus", + "decimals": 3, + "editable": true, + "error": false, + "fill": 0, + "grid": + { + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "height": "", + "id": 17, + "isNew": true, + "legend": + { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": null, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 12, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_cpu_usage_seconds_total{image!=\"\",name=~\"^k8s_.*\",kubernetes_io_hostname=~\"^$Node$\"}[1m])) by (pod_name)", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ pod_name }}", + "metric": "container_cpu", + "refId": "A", + "step": 240 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Cpu Usage", + "tooltip": + { + "msResolution": true, + "shared": false, + "sort": 2, + "value_type": "cumulative" + }, + "transparent": false, + "type": "graph", + "xaxis": + { + "show": true + }, + "yaxes": [ + { + "format": "none", + "label": "cores", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "fill": 0, + "grid": + { + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 33, + "isNew": true, + "legend": + { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": null, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 12, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum (container_memory_working_set_bytes{image!=\"\",name=~\"^k8s_.*\",instance=~\"^$instance$\",namespace=~\"^$namespace$\"}) by (pod_name)", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ pod_name }}", + "metric": "", + "refId": "A", + "step": 240 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Memory Working Set", + "tooltip": + { + "msResolution": false, + "shared": false, + "sort": 2, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": + { + "show": true + }, + "yaxes": [ + { + "format": "bytes", + "label": "used", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "fill": 1, + "grid": + { + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 16, + "isNew": true, + "legend": + { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 200, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 12, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum (rate (container_network_receive_bytes_total{image!=\"\",name=~\"^k8s_.*\",instance=~\"^$instance$\",namespace=~\"^$namespace$\"}[1m])) by (pod_name)", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ pod_name }} < in", + "metric": "network", + "refId": "A", + "step": 240 + }, + { + "expr": "- sum (rate (container_network_transmit_bytes_total{image!=\"\",name=~\"^k8s_.*\",instance=~\"^$instance$\",namespace=~\"^$namespace$\"}[1m])) by (pod_name)", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ pod_name }} > out", + "metric": "network", + "refId": "B", + "step": 240 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network", + "tooltip": + { + "msResolution": false, + "shared": false, + "sort": 2, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": + { + "show": true + }, + "yaxes": [ + { + "format": "Bps", + "label": "transmit / receive", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "datasource": "prometheus", + "decimals": 2, + "editable": true, + "error": false, + "fill": 1, + "grid": + { + "threshold1": null, + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2": null, + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 34, + "isNew": true, + "legend": + { + "alignAsTable": true, + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 200, + "sort": "current", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "span": 12, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(container_fs_usage_bytes{image!=\"\",name=~\"^k8s_.*\",instance=~\"^$instance$\",namespace=~\"^$namespace$\"}) by (pod_name)", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{ pod_name }}", + "metric": "network", + "refId": "A", + "step": 240 + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Filesystem", + "tooltip": + { + "msResolution": false, + "shared": false, + "sort": 2, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": + { + "show": true + }, + "yaxes": [ + { + "format": "bytes", + "label": "used", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + } + ], + "showTitle": true, + "title": "each pod" + } + ], + "time": + { + "from": "now-3d", + "to": "now" + }, + "timepicker": + { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "templating": + { + "list": [ + { + "allValue": ".*", + "current": {}, + "datasource": "prometheus", + "hide": 0, + "includeAll": true, + "label": "Instance", + "multi": false, + "name": "instance", + "options": [], + "query": "label_values(instance)", + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "current": {}, + "datasource": "prometheus", + "hide": 0, + "includeAll": true, + "label": "Namespace", + "multi": true, + "name": "namespace", + "options": [], + "query": "label_values(namespace)", + "refresh": 1, + "regex": "", + "type": "query" + } + ] + }, + "annotations": + { + "list": [] + }, + "refresh": false, + "schemaVersion": 12, + "version": 8, + "links": [], + "gnetId": 737 + } + akkadotnet-dashboard.json: | + { + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "panel", + "id": "bargauge", + "name": "Bar gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.2.6" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph (old)", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + }, + { + "type": "panel", + "id": "table-old", + "name": "Table (old)", + "version": "" + } + ], + "annotations": + { + "list": [ + { + "builtIn": 1, + "datasource": "prometheus", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "System-wide Akka.NET metrics used for profiling Akka.NET performance. Gathered via Phobos and OpenTelemetry.", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": 15637, + "graphTooltip": 0, + "id": 4, + "iteration": 1710430141324, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "height": "180px", - "id": 6, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [{ - "name": "value to text", - "value": 1 - }, { - "name": "range to text", - "value": 2 - }], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [{ - "from": "null", - "text": "N/A", - "to": "null" - }], - "span": 4, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "gridPos": + { + "h": 1, + "w": 24, + "x": 0, + "y": 0 }, - "targets": [{ - "expr": "sum(rate(container_cpu_usage_seconds_total{id=\"/\",instance=~\"^$instance$\"}[1m])) / sum (machine_cpu_cores{instance=~\"^$instance$\"}) * 100", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - }], - "thresholds": "65, 90", - "timeFrom": "1m", - "timeShift": null, - "title": "Cpu Usage", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [{ - "op": "=", - "text": "N/A", - "value": "null" - }], - "valueName": "current" - }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], + "id": 23, + "panels": [], + "title": "Cluster Status", + "type": "row" + }, + { "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "height": "180px", - "id": 7, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [{ - "name": "value to text", - "value": 1 - }, { - "name": "range to text", - "value": 2 - }], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [{ - "from": "null", - "text": "N/A", - "to": "null" - }], - "span": 4, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "description": "Total number of active Akka.Cluster Members.", + "fieldConfig": + { + "defaults": + { + "mappings": [], + "thresholds": + { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] }, - "targets": [{ - "expr": "sum(container_fs_usage_bytes{id=\"/\",instance=~\"^$instance$\"}) / sum(container_fs_limit_bytes{id=\"/\",instance=~\"^$instance$\"}) * 100", - "interval": "10s", - "intervalFactor": 1, - "legendFormat": "", - "metric": "", - "refId": "A", - "step": 10 - }], - "thresholds": "65, 90", - "timeFrom": "1m", - "timeShift": null, - "title": "Filesystem Usage", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [{ - "op": "=", - "text": "N/A", - "value": "null" - }], - "valueName": "current" - }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, - "format": "bytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "height": "1px", - "hideTimeOverride": true, - "id": 9, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [{ - "name": "value to text", - "value": 1 - }, { - "name": "range to text", - "value": 2 - }], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "20%", - "prefix": "", - "prefixFontSize": "20%", - "rangeMaps": [{ - "from": "null", - "text": "N/A", - "to": "null" - }], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "gridPos": + { + "h": 7, + "w": 19, + "x": 0, + "y": 1 }, - "targets": [{ - "expr": "sum(container_memory_working_set_bytes{id=\"/\",instance=~\"^$instance$\"})", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - }], - "thresholds": "", - "timeFrom": "1m", - "title": "Used", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [{ - "op": "=", - "text": "N/A", - "value": "null" - }], - "valueName": "current" - }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, - "format": "bytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "height": "1px", - "hideTimeOverride": true, - "id": 10, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [{ - "name": "value to text", - "value": 1 - }, { - "name": "range to text", - "value": 2 - }], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [{ - "from": "null", - "text": "N/A", - "to": "null" - }], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "id": 25, + "options": + { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": + { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" }, - "targets": [{ - "expr": "sum (machine_memory_bytes{instance=~\"^$instance$\"})", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - }], - "thresholds": "", - "timeFrom": "1m", - "title": "Total", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [{ - "op": "=", - "text": "N/A", - "value": "null" - }], - "valueName": "current" - }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" + "pluginVersion": "8.2.6", + "targets": [ + { + "exemplar": true, + "expr": "ceil(avg(akka_cluster_members{status=\"Up\"}))", + "instant": true, + "interval": "", + "legendFormat": "Up", + "refId": "A" + }, + { + "exemplar": true, + "expr": "ceil(avg(akka_cluster_members{status=\"WeaklyUp\"}))", + "instant": true, + "interval": "", + "legendFormat": "WeaklyUp", + "refId": "B" + }, + { + "exemplar": true, + "expr": "ceil(avg(akka_cluster_members{status=\"Joining\"}))", + "instant": true, + "interval": "", + "legendFormat": "Joining", + "refId": "C" + }, + { + "exemplar": true, + "expr": "ceil(avg(akka_cluster_members{status=\"Leaving\"}))", + "instant": true, + "interval": "", + "legendFormat": "Leaving", + "refId": "D" + }, + { + "exemplar": true, + "expr": "ceil(avg(akka_cluster_members{status=\"Exiting\"}))", + "instant": true, + "interval": "", + "legendFormat": "Exiting", + "refId": "E" + }, + { + "exemplar": true, + "expr": "ceil(avg(akka_cluster_members{status=\"Down\"}))", + "instant": true, + "interval": "", + "legendFormat": "Down", + "refId": "F" + } ], - "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "height": "1px", - "hideTimeOverride": true, - "id": 11, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [{ - "name": "value to text", - "value": 1 - }, { - "name": "range to text", - "value": 2 - }], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": " cores", - "postfixFontSize": "30%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [{ - "from": "null", - "text": "N/A", - "to": "null" - }], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "targets": [{ - "expr": "sum (rate (container_cpu_usage_seconds_total{id=\"/\",instance=~\"^$instance$\"}[1m]))", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - }], - "thresholds": "", - "timeFrom": "1m", + "timeFrom": null, "timeShift": null, - "title": "Used", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [{ - "op": "=", - "text": "N/A", - "value": "null" - }], - "valueName": "current" - }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], + "title": "Active Cluster Size", + "transformations": [], + "type": "stat" + }, + { "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "height": "1px", - "hideTimeOverride": true, - "id": 12, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [{ - "name": "value to text", - "value": 1 - }, { - "name": "range to text", - "value": 2 - }], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": " cores", - "postfixFontSize": "30%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [{ - "from": "null", - "text": "N/A", - "to": "null" - }], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "description": "All nodes in the cluster that are detected to be unreachable.", + "fieldConfig": + { + "defaults": + { + "mappings": [], + "thresholds": + { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1 + } + ] + } + }, + "overrides": [] }, - "targets": [{ - "expr": "sum (machine_cpu_cores{instance=~\"^$instance$\"})", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - }], - "thresholds": "", - "timeFrom": "1m", - "title": "Total", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [{ - "op": "=", - "text": "N/A", - "value": "null" - }], - "valueName": "current" - }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, - "format": "bytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "height": "1px", - "hideTimeOverride": true, - "id": 13, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [{ - "name": "value to text", - "value": 1 - }, { - "name": "range to text", - "value": 2 - }], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [{ - "from": "null", - "text": "N/A", - "to": "null" - }], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "gridPos": + { + "h": 7, + "w": 5, + "x": 19, + "y": 1 }, - "targets": [{ - "expr": "sum(container_fs_usage_bytes{id=\"/\",instance=~\"^$instance$\"})", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - }], - "thresholds": "", - "timeFrom": "1m", - "title": "Used", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [{ - "op": "=", - "text": "N/A", - "value": "null" - }], - "valueName": "current" - }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, - "format": "bytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "height": "1px", - "hideTimeOverride": true, - "id": 14, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [{ - "name": "value to text", - "value": 1 - }, { - "name": "range to text", - "value": 2 - }], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [{ - "from": "null", - "text": "N/A", - "to": "null" - }], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "id": 27, + "options": + { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": + { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" }, - "targets": [{ - "expr": "sum (container_fs_limit_bytes{id=\"/\",instance=~\"^$instance$\"})", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - }], - "thresholds": "", - "timeFrom": "1m", - "title": "Total", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [{ - "op": "=", - "text": "N/A", - "value": "null" - }], - "valueName": "current" - }, { + "pluginVersion": "8.2.6", + "targets": [ + { + "exemplar": true, + "expr": "ceil(avg(akka_cluster_reachable_members{status=\"False\"}))", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Unreachable Nodes", + "type": "stat" + }, + { "aliasColors": {}, "bars": false, + "dashLength": 10, + "dashes": false, "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, + "description": "Tracks all nodes by their membership status and reachability.", "fill": 1, - "grid": { - "threshold1": null, - "threshold1Color": "rgba(216, 200, 27, 0.27)", - "threshold2": null, - "threshold2Color": "rgba(234, 112, 112, 0.22)", - "thresholdLine": false - }, - "height": "200px", - "id": 32, - "isNew": true, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, + "fillGradient": 0, + "gridPos": + { + "h": 6, + "w": 24, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 29, + "legend": + { + "avg": false, + "current": false, "max": false, "min": false, - "rightSide": true, "show": true, - "sideWidth": 200, - "sort": "current", - "sortDesc": true, "total": false, - "values": true + "values": false }, "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", + "linewidth": 1, + "nullPointMode": "null", + "options": + { + "alertThreshold": true + }, "percentage": false, - "pointradius": 5, + "pluginVersion": "8.2.6", + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], - "span": 12, + "spaceLength": 10, "stack": false, - "steppedLine": false, - "targets": [{ - "expr": "sum(rate(container_network_receive_bytes_total{instance=~\"^$instance$\",namespace=~\"^$namespace$\"}[1m]))", - "interval": "", - "intervalFactor": 2, - "legendFormat": "receive", - "metric": "network", - "refId": "A", - "step": 240 - }, { - "expr": "- sum(rate(container_network_transmit_bytes_total{instance=~\"^$instance$\",namespace=~\"^$namespace$\"}[1m]))", - "interval": "", - "intervalFactor": 2, - "legendFormat": "transmit", - "metric": "network", - "refId": "B", - "step": 240 - }], + "steppedLine": true, + "targets": [ + { + "exemplar": true, + "expr": "ceil(avg by(status)(akka_cluster_members))", + "interval": "", + "legendFormat": "{{status}}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "ceil(avg(akka_cluster_reachable_members{status=\"False\"}))", + "instant": false, + "interval": "", + "legendFormat": "Unreachable", + "refId": "B" + } + ], + "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Network", - "tooltip": { - "msResolution": false, + "title": "Cluster Nodes by Status", + "tooltip": + { "shared": true, "sort": 0, - "value_type": "cumulative" + "value_type": "individual" }, - "transparent": false, "type": "graph", - "xaxis": { - "show": true + "xaxis": + { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, - "yaxes": [{ - "format": "Bps", - "label": "transmit / receive", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - }] - }], - "showTitle": true, - "title": "all pods" - }, { - "collapse": false, - "editable": true, - "height": "250px", - "panels": [{ + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": + { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": "prometheus", + "gridPos": + { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 8, + "panels": [], + "title": "Logging and Error Rates", + "type": "row" + }, + { "aliasColors": {}, "bars": false, + "dashLength": 10, + "dashes": false, "datasource": "prometheus", - "decimals": 3, - "editable": true, - "error": false, - "fill": 0, - "grid": { - "threshold1": null, - "threshold1Color": "rgba(216, 200, 27, 0.27)", - "threshold2": null, - "threshold2Color": "rgba(234, 112, 112, 0.22)" - }, - "height": "", - "id": 17, - "isNew": true, - "legend": { + "description": "Total aggregate logging activity per-second for each node in an Akka.NET cluster.", + "fill": 1, + "fillGradient": 0, + "gridPos": + { + "h": 8, + "w": 24, + "x": 0, + "y": 15 + }, + "hiddenSeries": false, + "id": 6, + "legend": + { "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, + "avg": false, + "current": false, "max": false, "min": false, "rightSide": true, "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, "total": false, - "values": true + "values": false }, "lines": true, - "linewidth": 2, + "linewidth": 1, "links": [], - "nullPointMode": "connected", + "nullPointMode": "null", + "options": + { + "alertThreshold": true + }, "percentage": false, + "pluginVersion": "8.2.6", "pointradius": 5, "points": false, "renderer": "flot", - "seriesOverrides": [], - "span": 12, + "seriesOverrides": [ + { + "alias": "error", + "color": "#F2495C", + "fill": 1 + }, + { + "alias": "warning", + "color": "#FA6400", + "fill": 2 + }, + { + "alias": "info", + "color": "#73BF69" + }, + { + "alias": "debug", + "color": "#C8F2C2" + } + ], + "spaceLength": 10, "stack": false, "steppedLine": false, - "targets": [{ - "expr": "sum(rate(container_cpu_usage_seconds_total{image!=\"\",name=~\"^k8s_.*\",kubernetes_io_hostname=~\"^$Node$\"}[1m])) by (pod_name)", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{ pod_name }}", - "metric": "container_cpu", - "refId": "A", - "step": 240 - }], + "targets": [ + { + "exemplar": true, + "expr": "sum by(level)(increase(akka_logs_events_total{cluster_role=~\"$role\",akka_address=~\"$address\"}[1m]))", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{level}}", + "refId": "A" + } + ], + "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Cpu Usage", - "tooltip": { - "msResolution": true, - "shared": false, - "sort": 2, - "value_type": "cumulative" - }, - "transparent": false, + "title": "Cluster Logging Activity", + "tooltip": + { + "shared": true, + "sort": 0, + "value_type": "individual" + }, "type": "graph", - "xaxis": { - "show": true + "xaxis": + { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, - "yaxes": [{ - "format": "none", - "label": "cores", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - }] - }, { - "aliasColors": {}, - "bars": false, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": + { + "align": false, + "alignLevel": null + } + }, + { + "columns": [], + "datasource": "prometheus", + "description": "Groups all exceptions detected in Akka.NET logs by type.", + "fontSize": "100%", + "gridPos": + { + "h": 9, + "w": 12, + "x": 0, + "y": 23 + }, + "id": 10, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": + { + "col": 0, + "desc": true + }, + "styles": [ + { + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "link": false, + "pattern": "Time", + "type": "hidden" + }, + { + "alias": "", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "exemplar": true, + "expr": "sum by(cluster_role,akka_address,exceptiontype)(ceil(increase(akka_logs_events_total{cluster_role=~\"$role\",akka_address=~\"$address\",exceptiontype=~\".+\"}[5m])))", + "format": "table", + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Exceptions by Type (over 5m)", + "transform": "table", + "type": "table-old" + }, + { + "cacheTimeout": null, "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 0, - "grid": { - "threshold1": null, - "threshold1Color": "rgba(216, 200, 27, 0.27)", - "threshold2": null, - "threshold2Color": "rgba(234, 112, 112, 0.22)" - }, - "id": 33, - "isNew": true, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true + "description": "Total errors logged by Akka.NET over past 5 minutes, cumulative for all roles / cluster / exception types.", + "fieldConfig": + { + "defaults": + { + "mappings": [ + { + "options": + { + "match": "null", + "result": + { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": + { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] }, - "lines": true, - "linewidth": 2, + "gridPos": + { + "h": 9, + "w": 12, + "x": 12, + "y": 23 + }, + "id": 12, + "interval": null, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [{ - "expr": "sum (container_memory_working_set_bytes{image!=\"\",name=~\"^k8s_.*\",instance=~\"^$instance$\",namespace=~\"^$namespace$\"}) by (pod_name)", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{ pod_name }}", - "metric": "", - "refId": "A", - "step": 240 - }], - "timeFrom": null, - "timeShift": null, - "title": "Memory Working Set", - "tooltip": { - "msResolution": false, - "shared": false, - "sort": 2, - "value_type": "cumulative" + "maxDataPoints": 100, + "options": + { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": + { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" }, - "type": "graph", - "xaxis": { - "show": true + "pluginVersion": "8.2.6", + "targets": [ + { + "exemplar": true, + "expr": "sum(increase(akka_logs_events_total{level=\"error\",cluster_role=~\"$role\",akka_address=~\"$address\"}[5m]))", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Errors Logged (5m)", + "type": "stat" + }, + { + "collapsed": false, + "datasource": "prometheus", + "gridPos": + { + "h": 1, + "w": 24, + "x": 0, + "y": 32 }, - "yaxes": [{ - "format": "bytes", - "label": "used", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - }] - }, { + "id": 2, + "panels": [], + "repeat": "role", + "title": "Actor Metrics [$role]", + "type": "row" + }, + { "aliasColors": {}, "bars": false, + "dashLength": 10, + "dashes": false, "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, + "description": "The full set of Akka.NET actors running on all nodes for all roles in a cluster.", "fill": 1, - "grid": { - "threshold1": null, - "threshold1Color": "rgba(216, 200, 27, 0.27)", - "threshold2": null, - "threshold2Color": "rgba(234, 112, 112, 0.22)" + "fillGradient": 0, + "gridPos": + { + "h": 9, + "w": 12, + "x": 0, + "y": 33 }, - "id": 16, - "isNew": true, - "legend": { + "hiddenSeries": false, + "id": 4, + "legend": + { "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, + "avg": false, + "current": false, "max": false, "min": false, - "rightSide": true, + "rightSide": false, "show": true, - "sideWidth": 200, - "sort": "avg", - "sortDesc": true, "total": false, - "values": true + "values": false }, "lines": true, - "linewidth": 2, + "linewidth": 1, "links": [], "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [{ - "expr": "sum (rate (container_network_receive_bytes_total{image!=\"\",name=~\"^k8s_.*\",instance=~\"^$instance$\",namespace=~\"^$namespace$\"}[1m])) by (pod_name)", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{ pod_name }} < in", - "metric": "network", - "refId": "A", - "step": 240 - }, { - "expr": "- sum (rate (container_network_transmit_bytes_total{image!=\"\",name=~\"^k8s_.*\",instance=~\"^$instance$\",namespace=~\"^$namespace$\"}[1m])) by (pod_name)", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{ pod_name }} > out", - "metric": "network", - "refId": "B", - "step": 240 - }], - "timeFrom": null, - "timeShift": null, - "title": "Network", - "tooltip": { - "msResolution": false, - "shared": false, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "show": true - }, - "yaxes": [{ - "format": "Bps", - "label": "transmit / receive", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - }] - }, { - "aliasColors": {}, - "bars": false, - "datasource": "prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 1, - "grid": { - "threshold1": null, - "threshold1Color": "rgba(216, 200, 27, 0.27)", - "threshold2": null, - "threshold2Color": "rgba(234, 112, 112, 0.22)" - }, - "id": 34, - "isNew": true, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 200, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true + "options": + { + "alertThreshold": true }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", "percentage": false, + "pluginVersion": "8.2.6", "pointradius": 5, "points": false, "renderer": "flot", + "repeat": null, + "repeatDirection": "h", "seriesOverrides": [], - "span": 12, + "spaceLength": 10, "stack": false, "steppedLine": false, - "targets": [{ - "expr": "sum(container_fs_usage_bytes{image!=\"\",name=~\"^k8s_.*\",instance=~\"^$instance$\",namespace=~\"^$namespace$\"}) by (pod_name)", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{ pod_name }}", - "metric": "network", - "refId": "A", - "step": 240 - }], + "targets": [ + { + "exemplar": true, + "expr": "sum by(cluster_role,akka_address)(akka_actor_live_actors{cluster_role=~\"$role\",akka_address=~\"$address\"})", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "Total Actors [{{cluster_role}} ({{akka_address}})]", + "refId": "A" + } + ], + "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Filesystem", - "tooltip": { - "msResolution": false, - "shared": false, - "sort": 2, - "value_type": "cumulative" + "title": "Total Akka.NET Actors", + "tooltip": + { + "shared": true, + "sort": 0, + "value_type": "individual" }, "type": "graph", - "xaxis": { - "show": true + "xaxis": + { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, - "yaxes": [{ - "format": "bytes", - "label": "used", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - }] - }], - "showTitle": true, - "title": "each pod" - }], - "time": { - "from": "now-3d", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "templating": { - "list": [{ - "allValue": ".*", - "current": {}, - "datasource": "prometheus", - "hide": 0, - "includeAll": true, - "label": "Instance", - "multi": false, - "name": "instance", - "options": [], - "query": "label_values(instance)", - "refresh": 1, - "regex": "", - "type": "query" - }, { - "current": {}, - "datasource": "prometheus", - "hide": 0, - "includeAll": true, - "label": "Namespace", - "multi": true, - "name": "namespace", - "options": [], - "query": "label_values(namespace)", - "refresh": 1, - "regex": "", - "type": "query" - }] - }, - "annotations": { - "list": [] - }, - "refresh": false, - "schemaVersion": 12, - "version": 8, - "links": [], - "gnetId": 737 - } - akkadotnet-dashboard.json: | - { - "__inputs": [{ - "name": "DS_PROMETHEUS", - "label": "prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - }], - "annotations": { - "list": [ + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { - "builtIn": 1, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" + "align": false, + "alignLevel": null } - ] - }, - "description": "System-wide Akka.NET metrics used for profiling Akka.NET performance. Gathered via Phobos and OpenTelemetry.", - "editable": true, - "gnetId": 15637, - "graphTooltip": 0, - "id": 4, - "iteration": 1645797823962, - "links": [], - "panels": [ - { - "collapsed": false, - "datasource": "prometheus", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 23, - "panels": [], - "title": "Cluster Status", - "type": "row" }, { + "cacheTimeout": null, "datasource": "prometheus", - "description": "Total number of active Akka.Cluster Members.", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { + "description": "Cumulative Akka.NET messaging throughput across all selected nodes and roles.", + "fieldConfig": + { + "defaults": + { + "mappings": [ + { + "options": + { + "match": "null", + "result": + { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": + { "mode": "absolute", "steps": [ { @@ -1288,90 +2215,170 @@ data: "value": 80 } ] - } + }, + "unit": "reqps" }, "overrides": [] }, - "gridPos": { - "h": 7, - "w": 19, - "x": 0, - "y": 1 + "gridPos": + { + "h": 9, + "w": 12, + "x": 12, + "y": 33 }, - "id": 25, - "options": { + "id": 16, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": + { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { + "orientation": "horizontal", + "reduceOptions": + { "calcs": [ - "mean" + "last" ], "fields": "", "values": false }, + "text": {}, "textMode": "auto" }, - "pluginVersion": "7.3.7", + "pluginVersion": "8.2.6", "targets": [ { - "expr": "ceil(avg(akka_cluster_members_members{status=\"Up\"}))", - "instant": true, + "exemplar": true, + "expr": "sum(irate(akka_messages_recv_msgs_total{cluster_role=~\"$role\",akka_address=~\"$address\"}[1m]))", + "format": "time_series", + "instant": false, "interval": "", - "legendFormat": "Up", + "intervalFactor": 1, + "legendFormat": "", "refId": "A" - }, + } + ], + "title": "Total Actor Throughput (msg/s)", + "type": "stat" + }, + { + "datasource": "prometheus", + "description": "All actor counts by type.", + "fieldConfig": + { + "defaults": { - "expr": "ceil(avg(akka_cluster_members_members{status=\"WeaklyUp\"}))", - "instant": true, - "interval": "", - "legendFormat": "WeaklyUp", - "refId": "B" + "color": + { + "mode": "thresholds" + }, + "custom": + { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": + { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, + "overrides": [] + }, + "gridPos": + { + "h": 9, + "w": 12, + "x": 0, + "y": 42 + }, + "id": 14, + "links": [], + "options": + { + "showHeader": true + }, + "pluginVersion": "8.2.6", + "targets": [ { - "expr": "ceil(avg(akka_cluster_members_members{status=\"Joining\"}))", + "exemplar": true, + "expr": "topk(10,sum by(actortype)(akka_actor_live_actors{cluster_role=~\"$role\",akka_address=~\"$address\"}))", + "format": "table", "instant": true, "interval": "", - "legendFormat": "Joining", - "refId": "C" - }, + "intervalFactor": 1, + "legendFormat": "{{actortype}} created", + "refId": "A" + } + ], + "title": "Live Actors by Type", + "transformations": [ { - "expr": "ceil(avg(akka_cluster_members_members{status=\"Leaving\"}))", - "instant": true, - "interval": "", - "legendFormat": "Leaving", - "refId": "D" + "id": "labelsToFields", + "options": {} }, { - "expr": "ceil(avg(akka_cluster_members_members{status=\"Exiting\"}))", - "instant": true, - "interval": "", - "legendFormat": "Exiting", - "refId": "E" + "id": "organize", + "options": + { + "excludeByName": + { + "Time": true + }, + "indexByName": {}, + "renameByName": + { + "Time": "", + "Value": "Alive", + "actortype": "" + } + } }, { - "expr": "ceil(avg(akka_cluster_members_members{status=\"Down\"}))", - "instant": true, - "interval": "", - "legendFormat": "Down", - "refId": "F" + "id": "sortBy", + "options": + { + "fields": {}, + "sort": [ + { + "desc": true, + "field": "Alive" + } + ] + } } ], - "timeFrom": null, - "timeShift": null, - "title": "Active Cluster Size", - "transformations": [], - "type": "stat" + "type": "table" }, { "datasource": "prometheus", - "description": "All nodes in the cluster that are detected to be unreachable.", - "fieldConfig": { - "defaults": { - "custom": {}, + "description": "Top 10 actor type / exception type pairs, based on the number of crashes per second observed over a 30 minute timespan.", + "fieldConfig": + { + "defaults": + { + "custom": + { + "align": null, + "displayMode": "auto", + "filterable": false + }, "mappings": [], - "thresholds": { + "thresholds": + { "mode": "absolute", "steps": [ { @@ -1380,371 +2387,283 @@ data: }, { "color": "red", - "value": 1 + "value": 80 } ] } }, "overrides": [] }, - "gridPos": { - "h": 7, - "w": 5, - "x": 19, - "y": 1 + "gridPos": + { + "h": 9, + "w": 12, + "x": 12, + "y": 42 }, - "id": 27, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" + "id": 20, + "options": + { + "showHeader": true }, - "pluginVersion": "7.3.7", + "pluginVersion": "8.2.6", "targets": [ { - "expr": "ceil(avg(akka_cluster_reachable_members{status=\"False\"}))", + "exemplar": true, + "expr": "topk(10,sum by(actortype, exceptiontype)(rate(akka_actor_restarts_total[30m])))", + "format": "table", "instant": true, "interval": "", - "legendFormat": "", + "legendFormat": "{{actortype}},{{exceptiontype}}", "refId": "A" } ], "timeFrom": null, "timeShift": null, - "title": "Unreachable Nodes", - "type": "stat" + "title": "Actor Crashes by Actor / Exception (Top 10)", + "type": "table" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": "prometheus", - "description": "Tracks all nodes by their membership status and reachability.", - "fieldConfig": { - "defaults": { - "custom": {} + "description": "Akka.NET message throughput by message type.", + "fieldConfig": + { + "defaults": + { + "mappings": [], + "thresholds": + { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "reqps" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 24, + "gridPos": + { + "h": 9, + "w": 12, "x": 0, - "y": 8 - }, - "hiddenSeries": false, - "id": 29, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "y": 51 }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true + "id": 18, + "options": + { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": + { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "text": {} }, - "percentage": false, - "pluginVersion": "7.3.7", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": true, + "pluginVersion": "8.2.6", "targets": [ { - "expr": "ceil(avg by(status)(akka_cluster_members_members))", + "exemplar": true, + "expr": "topk(10,sum by(messagetype)(rate(akka_messages_recv_msgs_total{cluster_role=~\"$role\",akka_address=~\"$address\"}[5m])))", + "hide": false, + "instant": true, "interval": "", - "legendFormat": "{{status}}", + "legendFormat": "{{messagetype}}", "refId": "A" }, { - "expr": "ceil(avg(akka_cluster_reachable_members{status=\"False\"}))", + "exemplar": true, + "expr": "sum by(messagetype)(irate(akka_messages_recv_msgs_total{cluster_role=~\"$role\",akka_address=~\"$address\"}[1m]))", + "hide": true, "instant": false, "interval": "", - "legendFormat": "Unreachable", + "legendFormat": "{{messagetype}}", "refId": "B" } ], - "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "Cluster Nodes by Status", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "datasource": "prometheus", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 14 - }, - "id": 8, - "panels": [], - "title": "Logging and Error Rates", - "type": "row" + "title": "Akka.NET Message Throughput by Type (Top 10)", + "transformations": [], + "type": "bargauge" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": "prometheus", - "description": "Total aggregate logging activity per-second for each node in an Akka.NET cluster.", - "fieldConfig": { - "defaults": { - "custom": {} + "description": "Akka.NET message throughput by message type.", + "fieldConfig": + { + "defaults": + { + "mappings": [], + "thresholds": + { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 15 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true + "gridPos": + { + "h": 9, + "w": 12, + "x": 12, + "y": 51 }, - "percentage": false, - "pluginVersion": "7.3.7", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "error", - "color": "#F2495C", - "fill": 1 - }, - { - "alias": "warning", - "color": "#FA6400", - "fill": 2 - }, + "id": 21, + "options": + { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { - "alias": "info", - "color": "#73BF69" + "calcs": [ + "mean" + ], + "fields": "", + "values": false }, - { - "alias": "debug", - "color": "#C8F2C2" - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "showUnfilled": true, + "text": {} + }, + "pluginVersion": "8.2.6", "targets": [ { - "expr": "sum by(level)(increase(akka_logs_events{cluster_role=~\"$role\",akka_address=~\"$address\"}[1m]))", + "exemplar": true, + "expr": "topk(10,sum by(messagetype)(increase(akka_messages_recv_msgs_total{cluster_role=~\"$role\",akka_address=~\"$address\"}[5m])))", "format": "time_series", - "instant": false, + "hide": false, + "instant": true, "interval": "", - "intervalFactor": 1, - "legendFormat": "{{level}}", + "legendFormat": "{{messagetype}}", "refId": "A" } ], - "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "Cluster Logging Activity", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "title": "Akka.NET Message Totals by Type (Top 10 over 5 minutes)", + "transformations": [], + "type": "bargauge" }, { - "columns": [], + "collapsed": false, "datasource": "prometheus", - "description": "Groups all exceptions detected in Akka.NET logs by type.", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fontSize": "100%", - "gridPos": { - "h": 9, - "w": 12, + "gridPos": + { + "h": 1, + "w": 24, "x": 0, - "y": 23 - }, - "id": 10, - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": true + "y": 88 }, - "styles": [ + "id": 38, + "panels": [], + "repeat": "shardRegion", + "title": "Sharding Statistics [$shardRegion]", + "type": "row" + }, + { + "datasource": "prometheus", + "description": "Shows the distribution of $shardRegion shards across all nodes in the cluster.", + "fieldConfig": + { + "defaults": { - "alias": "Time", - "align": "auto", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "link": false, - "pattern": "Time", - "type": "hidden" + "color": + { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": + { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, + "overrides": [] + }, + "gridPos": + { + "h": 8, + "w": 12, + "x": 0, + "y": 89 + }, + "id": 56, + "options": + { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { - "alias": "", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" + "calcs": [ + "lastNotNull" ], - "decimals": 2, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "short" - } - ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "text": {} + }, + "pluginVersion": "8.2.6", "targets": [ { - "expr": "sum by(cluster_role,akka_address,exceptiontype)(ceil(increase(akka_logs_events{cluster_role=~\"$role\",akka_address=~\"$address\",exceptiontype=~\".+\"}[5m])))", - "format": "table", - "instant": true, + "exemplar": true, + "expr": "sum by(akka_address)(akka_cluster_sharding_shards{region=~\"$shardRegion\"})", + "hide": false, + "instant": false, "interval": "", - "intervalFactor": 1, - "legendFormat": "", + "legendFormat": "{{akka_address}}", "refId": "A" } ], - "title": "Exceptions by Type (over 5m)", - "transform": "table", - "type": "table-old" + "title": "Shard Distribution [$shardRegion]", + "type": "bargauge" }, { - "cacheTimeout": null, "datasource": "prometheus", - "description": "Total errors logged by Akka.NET over past 5 minutes, cumulative for all roles / cluster / exception types.", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [ - { - "id": 0, - "op": "=", - "text": "N/A", - "type": 1, - "value": "null" - } - ], - "nullValueMode": "connected", - "thresholds": { + "description": "Shows the distribution of $shardRegion entities across all nodes in the cluster. Please note that this number reflects the total number of ALIVE entity actors.", + "fieldConfig": + { + "defaults": + { + "color": + { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": + { "mode": "absolute", "steps": [ { @@ -1756,377 +2675,348 @@ data: "value": 80 } ] - }, - "unit": "none" + } }, "overrides": [] }, - "gridPos": { - "h": 9, + "gridPos": + { + "h": 8, "w": 12, "x": 12, - "y": 23 + "y": 89 }, - "id": 12, - "interval": null, - "links": [], - "maxDataPoints": 100, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", + "id": 57, + "options": + { + "displayMode": "gradient", "orientation": "horizontal", - "reduceOptions": { + "reduceOptions": + { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, - "textMode": "auto" + "showUnfilled": true, + "text": {} }, - "pluginVersion": "7.3.7", + "pluginVersion": "8.2.6", "targets": [ { - "expr": "sum(increase(akka_logs_events{level=\"error\",cluster_role=~\"$role\",akka_address=~\"$address\"}[5m]))", - "format": "time_series", + "exemplar": true, + "expr": "sum by(akka_address)(akka_cluster_sharding_entities{region=~\"$shardRegion\"})", + "hide": false, "instant": false, "interval": "", - "intervalFactor": 1, - "legendFormat": "", + "legendFormat": "{{akka_address}}", "refId": "A" } ], - "title": "Total Errors Logged (5m)", - "type": "stat" + "title": "Entity Distribution [$shardRegion]", + "type": "bargauge" + } + ], + "refresh": "10s", + "schemaVersion": 32, + "style": "dark", + "tags": [ + "akka.net", + "phobos" + ], + "templating": + { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "prometheus", + "definition": "label_values(cluster_role)", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "Role", + "multi": true, + "name": "role", + "options": [], + "query": + { + "query": "label_values(cluster_role)", + "refId": "prometheus-role-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "prometheus", + "definition": "label_values(akka_address)", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "address", + "multi": true, + "name": "address", + "options": [], + "query": + { + "query": "label_values(akka_address)", + "refId": "prometheus-address-Variable-Query" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "prometheus", + "definition": "label_values(region)", + "description": "All of the available shardRegions in the current Akka.NET cluster.", + "error": null, + "hide": 0, + "includeAll": true, + "label": "shardRegion", + "multi": true, + "name": "shardRegion", + "options": [], + "query": + { + "query": "label_values(region)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "datasource": "prometheus", + "description": null, + "error": null, + "filters": [], + "hide": 0, + "label": "", + "name": "Filters", + "skipUrlSync": false, + "type": "adhoc" + } + ] + }, + "time": + { + "from": "now-5m", + "to": "now" + }, + "timepicker": + { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Akka.NET Cluster + Phobos 2.1 Metrics (Prometheus Data Source)", + "uid": "fm-cB024k", + "version": 2 + } + akkadotnet-latency-dashboard.json: | + { + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "panel", + "id": "bargauge", + "name": "Bar gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.2.6" + }, + { + "type": "panel", + "id": "heatmap", + "name": "Heatmap", + "version": "" }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + } + ], + "annotations": + { + "list": [ + { + "builtIn": 1, + "datasource": "prometheus", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Message-processing latency dashboard for Akka.NET Clusters using Phobos 2.0 and OpenTelemetry.", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": 15638, + "graphTooltip": 0, + "id": null, + "iteration": 1710430223367, + "links": [], + "liveNow": false, + "panels": [ { "collapsed": false, "datasource": "prometheus", - "gridPos": { + "gridPos": + { "h": 1, "w": 24, "x": 0, - "y": 32 + "y": 0 }, - "id": 2, + "id": 7, "panels": [], - "repeat": "role", - "scopedVars": { - "role": { - "selected": false, - "text": "console", - "value": "console" - } - }, - "title": "Actor Metrics", + "title": "[$msgtype] Cumulative Latencies", "type": "row" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "description": "The full set of Akka.NET actors running on all nodes for all roles in a cluster.", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] + "cards": + { + "cardPadding": null, + "cardRound": null + }, + "color": + { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateSpectral", + "exponent": 0.5, + "mode": "opacity" }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, + "dataFormat": "tsbuckets", + "datasource": "prometheus", + "description": "Heatmap of milliseconds of latency by $msgtype", + "gridPos": + { + "h": 8, "w": 12, "x": 0, - "y": 33 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false + "y": 1 }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 8, + "legend": + { + "show": false }, - "percentage": false, + "maxDataPoints": 25, "pluginVersion": "7.3.7", - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "repeatDirection": "h", - "scopedVars": { - "role": { - "selected": false, - "text": "console", - "value": "console" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "reverseYBuckets": false, "targets": [ { - "expr": "sum by(cluster_role,akka_address)(akka_actor_created_starts{cluster_role=~\"$role\",akka_address=~\"$address\"}) - sum by(cluster_role,akka_address)(akka_actor_stopped_stops{cluster_role=~\"$role\",akka_address=~\"$address\"})", - "format": "time_series", + "exemplar": true, + "expr": "sum(increase(akka_messages_latency_milliseconds_bucket{messagetype=~\"$msgtype\"}[$__interval])) by (le)", + "format": "heatmap", "instant": false, "interval": "", - "intervalFactor": 1, - "legendFormat": "Total Actors [{{cluster_role}} ({{akka_address}})]", + "legendFormat": "{{le}}", "refId": "A" } ], - "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "Total Akka.NET Actors", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, + "title": "Latency Over Time [$msgtype ]", + "tooltip": + { "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "cacheTimeout": null, - "datasource": "prometheus", - "description": "Cumulative Akka.NET messaging throughput across all selected nodes and roles.", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [ - { - "id": 0, - "op": "=", - "text": "N/A", - "type": 1, - "value": "null" - } - ], - "nullValueMode": "connected", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 33 + "showHistogram": false }, - "id": 16, - "interval": null, - "links": [], - "maxDataPoints": 100, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "textMode": "auto" + "type": "heatmap", + "xAxis": + { + "show": true }, - "pluginVersion": "7.3.7", - "scopedVars": { - "role": { - "selected": false, - "text": "console", - "value": "console" - } + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": + { + "decimals": null, + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null }, - "targets": [ - { - "expr": "sum(irate(akka_messages_recv_msgs{cluster_role=~\"$role\",akka_address=~\"$address\"}[1m]))", - "format": "time_series", - "instant": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "title": "Total Actor Throughput (msg/s)", - "type": "stat" + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null }, { - "columns": [], "datasource": "prometheus", - "description": "Top 10 actor starts / stops by type.", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fontSize": "100%", - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 42 - }, - "id": 14, - "links": [], - "pageSize": null, - "scopedVars": { - "role": { - "selected": false, - "text": "console", - "value": "console" - } - }, - "scroll": true, - "showHeader": true, - "sort": { - "col": 2, - "desc": true - }, - "styles": [ - { - "alias": "Time", - "align": "auto", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "link": false, - "pattern": "Time", - "type": "date" - }, - { - "alias": "Created", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 2, - "pattern": "Value #A", - "thresholds": [], - "type": "number", - "unit": "short" - }, - { - "alias": "Terminated", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "mappingType": 1, - "pattern": "Value", - "thresholds": [], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "topk(10,sum by(actortype)(akka_actor_created_starts{cluster_role=~\"$role\",akka_address=~\"$address\"}))", - "format": "table", - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{actortype}} created", - "refId": "A" - }, - { - "expr": "topk(10,sum by(actortype)(akka_actor_stopped_stops{cluster_role=~\"$role\",akka_address=~\"$address\"}))", - "instant": true, - "interval": "", - "legendFormat": "{{actortype}} terminated", - "refId": "B" - } - ], - "title": "Live Actors by Type (Top 10)", - "transform": "table", - "transformations": [ + "description": "Heatmap of milliseconds of latency by $msgtype", + "fieldConfig": + { + "defaults": { - "id": "labelsToFields", - "options": {} - } - ], - "type": "table-old" - }, - { - "datasource": "prometheus", - "description": "Top 10 actor type / exception type pairs, based on the number of crashes per second observed over a 30 minute timespan.", - "fieldConfig": { - "defaults": { - "custom": { - "align": null, - "filterable": false - }, "mappings": [], - "thresholds": { + "thresholds": + { "mode": "absolute", "steps": [ { @@ -2142,122 +3032,147 @@ data: }, "overrides": [] }, - "gridPos": { - "h": 9, + "gridPos": + { + "h": 8, "w": 12, "x": 12, - "y": 42 - }, - "id": 20, - "options": { - "showHeader": true + "y": 1 }, - "pluginVersion": "7.3.7", - "scopedVars": { - "role": { - "selected": false, - "text": "console", - "value": "console" - } + "id": 9, + "maxDataPoints": 25, + "options": + { + "displayMode": "gradient", + "orientation": "auto", + "reduceOptions": + { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "text": {} }, + "pluginVersion": "8.2.6", "targets": [ { - "expr": "topk(10,sum by(actortype, exceptiontype)(rate(akka_actor_restarts_restarts[30m])))", - "format": "table", - "instant": true, + "exemplar": true, + "expr": "sum(akka_messages_latency_milliseconds_bucket{messagetype=~\"$msgtype\"}) by (le)", + "format": "heatmap", + "instant": false, "interval": "", - "legendFormat": "{{actortype}},{{exceptiontype}}", + "legendFormat": "{{le}}", "refId": "A" } ], "timeFrom": null, "timeShift": null, - "title": "Actor Crashes by Actor / Exception (Top 10)", - "type": "table" + "title": "Latency Distribution [$msgtype ]", + "type": "bargauge" }, { + "collapsed": false, "datasource": "prometheus", - "description": "Akka.NET message throughput by message type.", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] + "gridPos": + { + "h": 1, + "w": 24, + "x": 0, + "y": 9 }, - "gridPos": { - "h": 9, + "id": 5, + "panels": [], + "title": "[$msgtype] Latencies When Processed by [$actortype]", + "type": "row" + }, + { + "cards": + { + "cardPadding": null, + "cardRound": null + }, + "color": + { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateSpectral", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "prometheus", + "description": "Heatmap of milliseconds of latency by $actortype / $msgtype", + "gridPos": + { + "h": 8, "w": 12, "x": 0, - "y": 51 + "y": 10 }, - "id": 18, - "options": { - "displayMode": "gradient", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "showUnfilled": true + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 2, + "legend": + { + "show": false }, + "maxDataPoints": 25, "pluginVersion": "7.3.7", - "scopedVars": { - "role": { - "selected": false, - "text": "console", - "value": "console" - } - }, + "reverseYBuckets": false, "targets": [ { - "expr": "topk(10,sum by(messagetype)(rate(akka_messages_recv_msgs{cluster_role=~\"$role\",akka_address=~\"$address\"}[5m])))", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "{{messagetype}}", - "refId": "A" - }, - { - "expr": "sum by(messagetype)(irate(akka_messages_recv_msgs{cluster_role=~\"$role\",akka_address=~\"$address\"}[1m]))", - "hide": true, + "exemplar": true, + "expr": "sum(increase(akka_messages_latency_milliseconds_bucket{messagetype=~\"$msgtype\",actortype=~\"$actortype\"}[$__interval])) by (le)", + "format": "heatmap", "instant": false, "interval": "", - "legendFormat": "{{messagetype}}", - "refId": "B" + "legendFormat": "{{le}}", + "refId": "A" } ], "timeFrom": null, "timeShift": null, - "title": "Akka.NET Message Throughput by Type (Top 10)", - "transformations": [], - "type": "bargauge" + "title": "Latency Over Time [$actortype / $msgtype ]", + "tooltip": + { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": + { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": + { + "decimals": null, + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null }, { "datasource": "prometheus", - "description": "Akka.NET message throughput by message type.", - "fieldConfig": { - "defaults": { - "custom": {}, + "description": "Heatmap of milliseconds of latency by $actortype / $msgtype", + "fieldConfig": + { + "defaults": + { "mappings": [], - "thresholds": { + "thresholds": + { "mode": "absolute", "steps": [ { @@ -2269,229 +3184,250 @@ data: "value": 80 } ] - }, - "unit": "short" + } }, "overrides": [] }, - "gridPos": { - "h": 9, + "gridPos": + { + "h": 8, "w": 12, "x": 12, - "y": 51 + "y": 10 }, - "id": 21, - "options": { + "id": 3, + "maxDataPoints": 25, + "options": + { "displayMode": "gradient", - "orientation": "horizontal", - "reduceOptions": { + "orientation": "auto", + "reduceOptions": + { "calcs": [ "mean" ], "fields": "", "values": false }, - "showUnfilled": true - }, - "pluginVersion": "7.3.7", - "scopedVars": { - "role": { - "selected": false, - "text": "console", - "value": "console" - } + "showUnfilled": true, + "text": {} }, + "pluginVersion": "8.2.6", "targets": [ { - "expr": "topk(10,sum by(messagetype)(increase(akka_messages_recv_msgs{cluster_role=~\"$role\",akka_address=~\"$address\"}[5m])))", - "format": "time_series", - "hide": false, - "instant": true, + "exemplar": true, + "expr": "sum(akka_messages_latency_milliseconds_bucket{messagetype=~\"$msgtype\",actortype=~\"$actortype\"}) by (le)", + "format": "heatmap", + "instant": false, "interval": "", - "legendFormat": "{{messagetype}}", + "legendFormat": "{{le}}", "refId": "A" } ], "timeFrom": null, "timeShift": null, - "title": "Akka.NET Message Totals by Type (Top 10 over 5 minutes)", - "transformations": [], + "title": "Latency Distribution [$actortype / $msgtype ]", "type": "bargauge" } ], "refresh": "10s", - "schemaVersion": 26, + "schemaVersion": 32, "style": "dark", - "tags": [ - "akka.net", - "phobos" - ], - "templating": { + "tags": [], + "templating": + { "list": [ { "allValue": null, - "current": { - "selected": false, - "text": "All", - "value": "$__all" - }, + "current": {}, "datasource": "prometheus", - "definition": "label_values(cluster_role)", + "definition": "label_values(messagetype)", + "description": null, "error": null, "hide": 0, - "includeAll": true, - "label": "Role", - "multi": true, - "name": "role", + "includeAll": false, + "label": "msgtype", + "multi": false, + "name": "msgtype", "options": [], - "query": "label_values(cluster_role)", - "refresh": 1, + "query": + { + "query": "label_values(messagetype)", + "refId": "prometheus-msgtype-Variable-Query" + }, + "refresh": 2, "regex": "", "skipUrlSync": false, "sort": 0, "tagValuesQuery": "", - "tags": [], "tagsQuery": "", "type": "query", "useTags": false }, { "allValue": null, - "current": { - "selected": false, - "text": "All", - "value": "$__all" - }, + "current": {}, "datasource": "prometheus", - "definition": "label_values(akka_address)", + "definition": "label_values(actortype)", + "description": null, "error": null, "hide": 0, - "includeAll": true, - "label": "address", - "multi": true, - "name": "address", + "includeAll": false, + "label": "actortype", + "multi": false, + "name": "actortype", "options": [], - "query": "label_values(akka_address)", - "refresh": 1, + "query": + { + "query": "label_values(actortype)", + "refId": "prometheus-actortype-Variable-Query" + }, + "refresh": 2, "regex": "", "skipUrlSync": false, "sort": 0, "tagValuesQuery": "", - "tags": [], "tagsQuery": "", "type": "query", "useTags": false - }, - { - "datasource": null, - "error": null, - "filters": [], - "hide": 0, - "label": "", - "name": "Filters", - "skipUrlSync": false, - "type": "adhoc" } ] }, - "time": { + "time": + { "from": "now-5m", "to": "now" }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, + "timepicker": {}, "timezone": "", - "title": "Akka.NET Cluster + Phobos 2.x Metrics (Prometheus Data Source)", - "uid": "fxcTFhb7z", - "version": 1 + "title": "Akka.NET Cluster + Phobos 2.1 Message Latency Metrics (Prometheus Data Source)", + "uid": "-MOG0hx7z", + "version": 2 } - akkadotnet-latency-dashboard.json: | - { - "__inputs": [{ + dotnet-monitor-dashboard.json: | + { + "__inputs": [ + { "name": "DS_PROMETHEUS", "label": "prometheus", "description": "", "type": "datasource", "pluginId": "prometheus", "pluginName": "Prometheus" - }], - "annotations": { + } + ], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.2.6" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "timeseries", + "name": "Time series", + "version": "" + } + ], + "annotations": + { "list": [ { "builtIn": 1, + "datasource": "-- Grafana --", "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", + "target": + { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, "type": "dashboard" } ] }, - "description": "Message-processing latency dashboard for Akka.NET Clusters using Phobos 2.0 and OpenTelemetry.", + "description": "", "editable": true, - "gnetId": 15638, + "fiscalYearStartMonth": 0, + "gnetId": null, "graphTooltip": 0, - "id": 3, - "iteration": 1645798543780, + "id": null, + "iteration": 1649985042094, "links": [], + "liveNow": false, "panels": [ { "collapsed": false, - "datasource": "prometheus", - "gridPos": { + "datasource": null, + "gridPos": + { "h": 1, "w": 24, "x": 0, "y": 0 }, - "id": 7, + "id": 20, "panels": [], - "title": "[$msgtype] Cumulative Latencies", + "title": ".NET ThreadPool", "type": "row" }, { - "cards": { - "cardPadding": null, - "cardRound": null - }, - "color": { - "cardColor": "#b4ff00", - "colorScale": "sqrt", - "colorScheme": "interpolateSpectral", - "exponent": 0.5, - "mode": "opacity" - }, - "dataFormat": "tsbuckets", - "datasource": "prometheus", - "description": "Heatmap of milliseconds of latency by $msgtype", - "fieldConfig": { - "defaults": { - "custom": {}, + "datasource": null, + "fieldConfig": + { + "defaults": + { + "color": + { + "mode": "palette-classic" + }, + "custom": + { + "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": { + "thresholds": + { "mode": "absolute", "steps": [ { @@ -2507,66 +3443,179 @@ data: }, "overrides": [] }, - "gridPos": { + "gridPos": + { "h": 8, "w": 12, "x": 0, "y": 1 }, - "heatmap": {}, - "hideZeroBuckets": false, - "highlightCards": true, - "id": 8, - "legend": { - "show": false + "id": 22, + "options": + { + "legend": + { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": + { + "mode": "single" + } }, - "maxDataPoints": 25, - "pluginVersion": "7.3.7", - "reverseYBuckets": false, "targets": [ { - "expr": "sum(increase(akka_messages_latency_ms_bucket{messagetype=~\"$msgtype\"}[$__interval])) by (le)", - "format": "heatmap", - "instant": false, + "exemplar": true, + "expr": "systemruntime_threadpool_completed_items_count{app=~\"$app\",instance=~\"$instance\"}", "interval": "", - "legendFormat": "{{le}}", + "legendFormat": "completed items {{instance}}", "refId": "A" } ], - "timeFrom": null, - "timeShift": null, - "title": "Latency Over Time [$msgtype ]", - "tooltip": { - "show": true, - "showHistogram": false + "title": ".NET Threadpool Completed Items", + "type": "timeseries" + }, + { + "datasource": null, + "fieldConfig": + { + "defaults": + { + "color": + { + "mode": "palette-classic" + }, + "custom": + { + "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": [] }, - "type": "heatmap", - "xAxis": { - "show": true + "gridPos": + { + "h": 8, + "w": 12, + "x": 12, + "y": 1 }, - "xBucketNumber": null, - "xBucketSize": null, - "yAxis": { - "decimals": null, - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": true, - "splitFactor": null + "id": 24, + "options": + { + "legend": + { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": + { + "mode": "single" + } }, - "yBucketBound": "auto", - "yBucketNumber": null, - "yBucketSize": null + "targets": [ + { + "exemplar": true, + "expr": "systemruntime_threadpool_thread_count{app=~\"$app\",instance=~\"$instance\"}", + "interval": "", + "legendFormat": "thread_count {{instance}}", + "refId": "A" + } + ], + "title": ".NET Threadpool Thread Count", + "type": "timeseries" }, { - "datasource": "prometheus", - "description": "Heatmap of milliseconds of latency by $msgtype", - "fieldConfig": { - "defaults": { - "custom": {}, + "datasource": null, + "fieldConfig": + { + "defaults": + { + "color": + { + "mode": "palette-classic" + }, + "custom": + { + "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": { + "thresholds": + { "mode": "absolute", "steps": [ { @@ -2582,76 +3631,234 @@ data: }, "overrides": [] }, - "gridPos": { + "gridPos": + { "h": 8, "w": 12, - "x": 12, - "y": 1 + "x": 0, + "y": 9 }, - "id": 9, - "maxDataPoints": 25, - "options": { - "displayMode": "gradient", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false + "id": 26, + "options": + { + "legend": + { + "calcs": [], + "displayMode": "list", + "placement": "bottom" }, - "showUnfilled": true + "tooltip": + { + "mode": "single" + } }, - "pluginVersion": "7.3.7", "targets": [ { - "expr": "sum(akka_messages_latency_ms_bucket{messagetype=~\"$msgtype\"}) by (le)", - "format": "heatmap", - "instant": false, + "exemplar": true, + "expr": "systemruntime_threadpool_queue_length{app=~\"$app\",instance=~\"$instance\"}", "interval": "", - "legendFormat": "{{le}}", + "legendFormat": "queue_length {{instance}}", "refId": "A" } ], - "timeFrom": null, - "timeShift": null, - "title": "Latency Distribution [$msgtype ]", - "type": "bargauge" + "title": ".NET Threadpool Queue Length", + "type": "timeseries" }, { "collapsed": false, - "datasource": "prometheus", - "gridPos": { + "datasource": null, + "gridPos": + { "h": 1, "w": 24, "x": 0, - "y": 9 + "y": 17 }, - "id": 5, + "id": 4, "panels": [], - "title": "[$msgtype] Latencies When Processed by [$actortype]", + "title": "CPU Utilization", "type": "row" }, { - "cards": { - "cardPadding": null, - "cardRound": null + "datasource": null, + "fieldConfig": + { + "defaults": + { + "color": + { + "mode": "palette-classic" + }, + "custom": + { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": + { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": + { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": + { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": + { + "mode": "off" + } + }, + "mappings": [], + "max": 1, + "thresholds": + { + "mode": "absolute", + "steps": [ + { + "color": "purple", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [ + { + "matcher": + { + "id": "byName", + "options": "CPU Usage" + }, + "properties": [ + { + "id": "color", + "value": + { + "fixedColor": "purple", + "mode": "fixed" + } + } + ] + } + ] }, - "color": { - "cardColor": "#b4ff00", - "colorScale": "sqrt", - "colorScheme": "interpolateSpectral", - "exponent": 0.5, - "mode": "opacity" + "gridPos": + { + "h": 8, + "w": 7, + "x": 0, + "y": 18 }, - "dataFormat": "tsbuckets", - "datasource": "prometheus", - "description": "Heatmap of milliseconds of latency by $actortype / $msgtype", - "fieldConfig": { - "defaults": { - "custom": {}, + "id": 10, + "options": + { + "legend": + { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": + { + "mode": "single" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "systemruntime_cpu_usage_ratio{app=~\"$app\",instance=~\"$instance\"}", + "interval": "", + "legendFormat": "CPU Usage {{instance}}", + "refId": "A" + } + ], + "title": "CPU", + "type": "timeseries" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": + { + "h": 1, + "w": 24, + "x": 0, + "y": 26 + }, + "id": 16, + "panels": [], + "title": "Memory and GC", + "type": "row" + }, + { + "datasource": null, + "fieldConfig": + { + "defaults": + { + "color": + { + "mode": "palette-classic" + }, + "custom": + { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": + { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": + { + "fill": "solid" + }, + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": + { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": + { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": + { + "mode": "off" + } + }, + "decimals": 0, "mappings": [], - "thresholds": { + "thresholds": + { "mode": "absolute", "steps": [ { @@ -2663,70 +3870,123 @@ data: "value": 80 } ] - } + }, + "unit": "bytes" }, "overrides": [] }, - "gridPos": { + "gridPos": + { "h": 8, - "w": 12, + "w": 8, "x": 0, - "y": 10 + "y": 27 }, - "heatmap": {}, - "hideZeroBuckets": false, - "highlightCards": true, "id": 2, - "legend": { - "show": false + "options": + { + "legend": + { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": + { + "mode": "single" + } }, - "maxDataPoints": 25, - "pluginVersion": "7.3.7", - "reverseYBuckets": false, "targets": [ { - "expr": "sum(increase(akka_messages_latency_ms_bucket{messagetype=~\"$msgtype\",actortype=~\"$actortype\"}[$__interval])) by (le)", - "format": "heatmap", - "instant": false, + "exemplar": true, + "expr": "systemruntime_gen_0_size_bytes{app=~\"$app\",instance=~\"$instance\"}", + "hide": false, "interval": "", - "legendFormat": "{{le}}", + "legendFormat": "Gen 0 Size {{instance}}", + "refId": "B" + }, + { + "exemplar": true, + "expr": "systemruntime_gen_1_size_bytes{app=~\"$app\",instance=~\"$instance\"}", + "hide": false, + "interval": "", + "legendFormat": "Gen 1 Size {{instance}}", + "refId": "C" + }, + { + "exemplar": true, + "expr": "systemruntime_gen_2_size_bytes{app=~\"$app\",instance=~\"$instance\"}", + "hide": false, + "interval": "", + "legendFormat": "Gen 2 Size {{instance}}", + "refId": "D" + }, + { + "exemplar": true, + "expr": "systemruntime_loh_size_bytes{app=~\"$app\",instance=~\"$instance\"}", + "hide": false, + "interval": "", + "legendFormat": "LOH Size {{instance}}", "refId": "A" + }, + { + "exemplar": true, + "expr": "systemruntime_poh_size_bytes{app=~\"$app\",instance=~\"$instance\"}", + "hide": false, + "interval": "", + "legendFormat": "POH Size {{instance}}", + "refId": "E" } ], - "timeFrom": null, - "timeShift": null, - "title": "Latency Over Time [$actortype / $msgtype ]", - "tooltip": { - "show": true, - "showHistogram": false - }, - "type": "heatmap", - "xAxis": { - "show": true - }, - "xBucketNumber": null, - "xBucketSize": null, - "yAxis": { - "decimals": null, - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": true, - "splitFactor": null - }, - "yBucketBound": "auto", - "yBucketNumber": null, - "yBucketSize": null + "title": "Generation Sizes", + "type": "timeseries" }, { - "datasource": "prometheus", - "description": "Heatmap of milliseconds of latency by $actortype / $msgtype", - "fieldConfig": { - "defaults": { - "custom": {}, + "datasource": null, + "fieldConfig": + { + "defaults": + { + "color": + { + "mode": "palette-classic" + }, + "custom": + { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": + { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": + { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": + { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": + { + "mode": "off" + } + }, "mappings": [], - "thresholds": { + "thresholds": + { "mode": "absolute", "steps": [ { @@ -2738,1114 +3998,440 @@ data: "value": 80 } ] - } + }, + "unit": "percentunit" }, - "overrides": [] + "overrides": [ + { + "matcher": + { + "id": "byName", + "options": "systemruntime_gc_fragmentation_ratio{instance=\"host.docker.internal:52323\", job=\"memoryleak\"}" + }, + "properties": [ + { + "id": "color", + "value": + { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + }, + { + "matcher": + { + "id": "byName", + "options": "Total Fragmentation" + }, + "properties": [ + { + "id": "color", + "value": + { + "fixedColor": "blue", + "mode": "fixed" + } + } + ] + } + ] }, - "gridPos": { + "gridPos": + { "h": 8, - "w": 12, - "x": 12, - "y": 10 + "w": 8, + "x": 8, + "y": 27 }, - "id": 3, - "maxDataPoints": 25, - "options": { - "displayMode": "gradient", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false + "id": 12, + "options": + { + "legend": + { + "calcs": [], + "displayMode": "list", + "placement": "bottom" }, - "showUnfilled": true + "tooltip": + { + "mode": "single" + } }, - "pluginVersion": "7.3.7", "targets": [ { - "expr": "sum(akka_messages_latency_ms_bucket{messagetype=~\"$msgtype\",actortype=~\"$actortype\"}) by (le)", - "format": "heatmap", - "instant": false, + "exemplar": true, + "expr": "systemruntime_gc_fragmentation_ratio{app=~\"$app\",instance=~\"$instance\"}/100", "interval": "", - "legendFormat": "{{le}}", + "legendFormat": "Total Fragmentation {{instance}}", "refId": "A" } ], - "timeFrom": null, - "timeShift": null, - "title": "Latency Distribution [$actortype / $msgtype ]", - "type": "bargauge" - } - ], - "refresh": "10s", - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": { - "selected": false, - "text": "int", - "value": "int" - }, - "datasource": "prometheus", - "definition": "label_values(messagetype)", - "error": null, - "hide": 0, - "includeAll": false, - "label": "msgtype", - "multi": false, - "name": "msgtype", - "options": [], - "query": "label_values(messagetype)", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "selected": false, - "text": "Petabridge.Cmd.Remote.Actors.GlobalStatusActor", - "value": "Petabridge.Cmd.Remote.Actors.GlobalStatusActor" - }, - "datasource": "prometheus", - "definition": "label_values(actortype)", - "error": null, - "hide": 0, - "includeAll": false, - "label": "actortype", - "multi": false, - "name": "actortype", - "options": [], - "query": "label_values(actortype)", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Akka.NET Cluster + Phobos 2.x Message Latency Metrics (Prometheus Data Source)", - "uid": "-MOG0hx7z", - "version": 1 - } - dotnet-monitor-dashboard.json: | - { - "__inputs": [ - { - "name": "DS_PROMETHEUS", - "label": "prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "8.2.6" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - }, + "title": "GC Fragmentation", + "type": "timeseries" + }, + { + "datasource": null, + "fieldConfig": { - "type": "panel", - "id": "timeseries", - "name": "Time series", - "version": "" - } - ], - "annotations": { - "list": [ + "defaults": { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "target": { - "limit": 100, - "matchAny": false, - "tags": [], - "type": "dashboard" - }, - "type": "dashboard" - } - ] - }, - "description": "", - "editable": true, - "fiscalYearStartMonth": 0, - "gnetId": null, - "graphTooltip": 0, - "id": null, - "iteration": 1649985042094, - "links": [], - "liveNow": false, - "panels": [ - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 20, - "panels": [], - "title": ".NET ThreadPool", - "type": "row" - }, - { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "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": 12, - "x": 0, - "y": 1 - }, - "id": 22, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" + "color": + { + "mode": "palette-classic" }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ + "custom": { - "exemplar": true, - "expr": "systemruntime_threadpool_completed_items_count{app=~\"$app\",instance=~\"$instance\"}", - "interval": "", - "legendFormat": "completed items {{instance}}", - "refId": "A" - } - ], - "title": ".NET Threadpool Completed Items", - "type": "timeseries" - }, - { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": + { + "legend": false, + "tooltip": false, + "viz": false }, - "custom": { - "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" - } + "lineInterpolation": "linear", + "lineWidth": 3, + "pointSize": 5, + "scaleDistribution": + { + "type": "linear" }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "showPoints": "auto", + "spanNulls": false, + "stacking": + { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": + { + "mode": "off" } }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 24, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ + "mappings": [], + "thresholds": { - "exemplar": true, - "expr": "systemruntime_threadpool_thread_count{app=~\"$app\",instance=~\"$instance\"}", - "interval": "", - "legendFormat": "thread_count {{instance}}", - "refId": "A" - } - ], - "title": ".NET Threadpool Thread Count", - "type": "timeseries" - }, - { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "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" + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null }, - "thresholdsStyle": { - "mode": "off" + { + "color": "red", + "value": 80 } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] + ] + } }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 9 + "overrides": [] + }, + "gridPos": + { + "h": 8, + "w": 7, + "x": 16, + "y": 27 + }, + "id": 14, + "options": + { + "legend": + { + "calcs": [], + "displayMode": "list", + "placement": "bottom" }, - "id": 26, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" + "tooltip": + { + "mode": "single" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "systemruntime_time_in_gc_ratio{app=~\"$app\",instance=~\"$instance\"}", + "interval": "", + "legendFormat": "% Time in GC {{instance}}", + "refId": "A" + } + ], + "title": "GC", + "type": "timeseries" + }, + { + "datasource": null, + "fieldConfig": + { + "defaults": + { + "color": + { + "mode": "palette-classic" }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ + "custom": { - "exemplar": true, - "expr": "systemruntime_threadpool_queue_length{app=~\"$app\",instance=~\"$instance\"}", - "interval": "", - "legendFormat": "queue_length {{instance}}", - "refId": "A" - } - ], - "title": ".NET Threadpool Queue Length", - "type": "timeseries" - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 17 - }, - "id": 4, - "panels": [], - "title": "CPU Utilization", - "type": "row" - }, - { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "bars", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": + { + "legend": false, + "tooltip": false, + "viz": false }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": + { + "type": "linear" }, - "mappings": [], - "max": 1, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "purple", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "showPoints": "auto", + "spanNulls": false, + "stacking": + { + "group": "A", + "mode": "none" }, - "unit": "percentunit" - }, - "overrides": [ + "thresholdsStyle": { - "matcher": { - "id": "byName", - "options": "CPU Usage" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "purple", - "mode": "fixed" - } - } - ] + "mode": "off" } - ] - }, - "gridPos": { - "h": 8, - "w": 7, - "x": 0, - "y": 18 - }, - "id": 10, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ + }, + "mappings": [], + "thresholds": { - "exemplar": true, - "expr": "systemruntime_cpu_usage_ratio{app=~\"$app\",instance=~\"$instance\"}", - "interval": "", - "legendFormat": "CPU Usage {{instance}}", - "refId": "A" - } - ], - "title": "CPU", - "type": "timeseries" - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 26 - }, - "id": 16, - "panels": [], - "title": "Memory and GC", - "type": "row" - }, - { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineStyle": { - "fill": "solid" - }, - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null }, - "thresholdsStyle": { - "mode": "off" + { + "color": "red", + "value": 80 } - }, - "decimals": 0, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bytes" + ] }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 27 + "unit": "bytes" }, - "id": 2, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } + "overrides": [] + }, + "gridPos": + { + "h": 8, + "w": 8, + "x": 0, + "y": 35 + }, + "id": 8, + "options": + { + "legend": + { + "calcs": [], + "displayMode": "list", + "placement": "bottom" }, - "targets": [ - { - "exemplar": true, - "expr": "systemruntime_gen_0_size_bytes{app=~\"$app\",instance=~\"$instance\"}", - "hide": false, - "interval": "", - "legendFormat": "Gen 0 Size {{instance}}", - "refId": "B" - }, - { - "exemplar": true, - "expr": "systemruntime_gen_1_size_bytes{app=~\"$app\",instance=~\"$instance\"}", - "hide": false, - "interval": "", - "legendFormat": "Gen 1 Size {{instance}}", - "refId": "C" - }, - { - "exemplar": true, - "expr": "systemruntime_gen_2_size_bytes{app=~\"$app\",instance=~\"$instance\"}", - "hide": false, - "interval": "", - "legendFormat": "Gen 2 Size {{instance}}", - "refId": "D" - }, + "tooltip": + { + "mode": "single" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "systemruntime_alloc_rate_bytes{app=~\"$app\",instance=~\"$instance\"}", + "interval": "", + "legendFormat": "Alloc rate {{instance}}", + "refId": "A" + } + ], + "title": "Allocations", + "type": "timeseries" + }, + { + "datasource": null, + "fieldConfig": + { + "defaults": + { + "color": { - "exemplar": true, - "expr": "systemruntime_loh_size_bytes{app=~\"$app\",instance=~\"$instance\"}", - "hide": false, - "interval": "", - "legendFormat": "LOH Size {{instance}}", - "refId": "A" + "mode": "palette-classic" }, + "custom": { - "exemplar": true, - "expr": "systemruntime_poh_size_bytes{app=~\"$app\",instance=~\"$instance\"}", - "hide": false, - "interval": "", - "legendFormat": "POH Size {{instance}}", - "refId": "E" - } - ], - "title": "Generation Sizes", - "type": "timeseries" - }, - { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": + { + "legend": false, + "tooltip": false, + "viz": false }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": + { + "type": "linear" }, - "unit": "percentunit" - }, - "overrides": [ + "showPoints": "auto", + "spanNulls": false, + "stacking": { - "matcher": { - "id": "byName", - "options": "systemruntime_gc_fragmentation_ratio{instance=\"host.docker.internal:52323\", job=\"memoryleak\"}" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "orange", - "mode": "fixed" - } - } - ] + "group": "A", + "mode": "none" }, + "thresholdsStyle": { - "matcher": { - "id": "byName", - "options": "Total Fragmentation" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "blue", - "mode": "fixed" - } - } - ] + "mode": "off" } - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 27 - }, - "id": 12, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ + }, + "mappings": [], + "thresholds": { - "exemplar": true, - "expr": "systemruntime_gc_fragmentation_ratio{app=~\"$app\",instance=~\"$instance\"}/100", - "interval": "", - "legendFormat": "Total Fragmentation {{instance}}", - "refId": "A" - } - ], - "title": "GC Fragmentation", - "type": "timeseries" - }, - { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 3, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null }, - "thresholdsStyle": { - "mode": "off" + { + "color": "red", + "value": 80 } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 7, - "x": 16, - "y": 27 - }, - "id": 14, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" + ] }, - "tooltip": { - "mode": "single" - } + "unit": "bytes" }, - "targets": [ - { - "exemplar": true, - "expr": "systemruntime_time_in_gc_ratio{app=~\"$app\",instance=~\"$instance\"}", - "interval": "", - "legendFormat": "% Time in GC {{instance}}", - "refId": "A" - } - ], - "title": "GC", - "type": "timeseries" + "overrides": [] }, + "gridPos": { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "bars", - "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 - } - ] - }, - "unit": "bytes" - }, - "overrides": [] + "h": 8, + "w": 8, + "x": 8, + "y": 35 + }, + "id": 6, + "options": + { + "legend": + { + "calcs": [], + "displayMode": "list", + "placement": "bottom" }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 35 + "tooltip": + { + "mode": "single" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "systemruntime_gc_heap_size_bytes{app=~\"$app\",instance=~\"$instance\"}", + "interval": "", + "legendFormat": "GC Heap Size", + "refId": "A" }, - "id": 8, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } + { + "exemplar": true, + "expr": "systemruntime_working_set_bytes{app=~\"$app\",instance=~\"$instance\"}", + "hide": false, + "interval": "", + "legendFormat": "Working Set", + "refId": "B" + } + ], + "title": "Overall Sizes", + "type": "timeseries" + } + ], + "refresh": "5s", + "schemaVersion": 32, + "style": "dark", + "tags": [], + "templating": + { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "prometheus", + "definition": "label_values(app)", + "description": "Kubernetes Application Name (app:{variable})", + "error": null, + "hide": 0, + "includeAll": true, + "label": null, + "multi": false, + "name": "app", + "options": [], + "query": + { + "query": "label_values(app)", + "refId": "StandardVariableQuery" }, - "targets": [ - { - "exemplar": true, - "expr": "systemruntime_alloc_rate_bytes{app=~\"$app\",instance=~\"$instance\"}", - "interval": "", - "legendFormat": "Alloc rate {{instance}}", - "refId": "A" - } - ], - "title": "Allocations", - "type": "timeseries" + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" }, { - "datasource": null, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "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 - } - ] - }, - "unit": "bytes" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 35 - }, - "id": 6, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } + "allValue": null, + "current": {}, + "datasource": "prometheus", + "definition": "label_values(instance)", + "description": "The pod instance of each service", + "error": null, + "hide": 0, + "includeAll": true, + "label": "Instance", + "multi": false, + "name": "instance", + "options": [], + "query": + { + "query": "label_values(instance)", + "refId": "StandardVariableQuery" }, - "targets": [ - { - "exemplar": true, - "expr": "systemruntime_gc_heap_size_bytes{app=~\"$app\",instance=~\"$instance\"}", - "interval": "", - "legendFormat": "GC Heap Size", - "refId": "A" - }, - { - "exemplar": true, - "expr": "systemruntime_working_set_bytes{app=~\"$app\",instance=~\"$instance\"}", - "hide": false, - "interval": "", - "legendFormat": "Working Set", - "refId": "B" - } - ], - "title": "Overall Sizes", - "type": "timeseries" + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" } - ], - "refresh": "5s", - "schemaVersion": 32, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "prometheus", - "definition": "label_values(app)", - "description": "Kubernetes Application Name (app:{variable})", - "error": null, - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "app", - "options": [], - "query": { - "query": "label_values(app)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "allValue": null, - "current": {}, - "datasource": "prometheus", - "definition": "label_values(instance)", - "description": "The pod instance of each service", - "error": null, - "hide": 0, - "includeAll": true, - "label": "Instance", - "multi": false, - "name": "instance", - "options": [], - "query": { - "query": "label_values(instance)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - } - ] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "dotnet-monitor Kubernetes Dashboard", - "uid": "FF-1G8U7z", - "version": 1 - } + ] + }, + "time": + { + "from": "now-5m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "dotnet-monitor Kubernetes Dashboard", + "uid": "FF-1G8U7z", + "version": 1 + } --- apiVersion: v1 kind: ConfigMap diff --git a/src/Directory.Build.props b/src/Directory.Build.props index a147004..ae96d28 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -21,6 +21,6 @@ 1.4.0 1.5.17.1 1.5.17.1 - 1.7.1 + 1.5.1-beta.1 \ No newline at end of file diff --git a/src/shared/AkkaDotNet.Infrastructure/AkkaDotNet.Infrastructure.csproj b/src/shared/AkkaDotNet.Infrastructure/AkkaDotNet.Infrastructure.csproj index 430c27a..2c185db 100644 --- a/src/shared/AkkaDotNet.Infrastructure/AkkaDotNet.Infrastructure.csproj +++ b/src/shared/AkkaDotNet.Infrastructure/AkkaDotNet.Infrastructure.csproj @@ -38,5 +38,4 @@ -