diff --git a/README.md b/README.md index 90742f6e..6417a2bc 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ services: github-exporter: labels: # https://github.com/qclaogui/codelab-monitoring/blob/main/alloy-modules/compose/README.md metrics.grafana.com/scrape: true - image: githubexporter/github-exporter:1.1.0 + image: githubexporter/github-exporter:1.3.1 environment: - REPOS=qclaogui/codelab-monitoring ``` diff --git a/examples/ghe-with-mixin/README.md b/examples/ghe-with-mixin/README.md index c82cda0a..809a20dc 100644 --- a/examples/ghe-with-mixin/README.md +++ b/examples/ghe-with-mixin/README.md @@ -17,7 +17,7 @@ services: github-exporter: labels: metrics.grafana.com/scrape: true - image: githubexporter/github-exporter:1.1.0 + image: githubexporter/github-exporter:1.3.1 environment: - REPOS=grafana/agent ``` diff --git a/examples/ghe-with-mixin/compose.yaml b/examples/ghe-with-mixin/compose.yaml index 205e68c0..a851e0f6 100644 --- a/examples/ghe-with-mixin/compose.yaml +++ b/examples/ghe-with-mixin/compose.yaml @@ -25,6 +25,6 @@ services: # https://github.com/qclaogui/codelab-monitoring/blob/main/alloy-modules/compose/README.md labels: metrics.grafana.com/scrape: true - image: githubexporter/github-exporter:1.1.0 + image: githubexporter/github-exporter:1.3.1 environment: - REPOS=grafana/alloy diff --git a/examples/ghe-with-simple-dashboards/README.md b/examples/ghe-with-simple-dashboards/README.md index a07431d2..80136bdc 100644 --- a/examples/ghe-with-simple-dashboards/README.md +++ b/examples/ghe-with-simple-dashboards/README.md @@ -17,7 +17,7 @@ services: github-exporter: labels: metrics.grafana.com/scrape: true - image: githubexporter/github-exporter:1.1.0 + image: githubexporter/github-exporter:1.3.1 environment: - REPOS=grafana/alloy ``` diff --git a/examples/ghe-with-simple-dashboards/compose.yaml b/examples/ghe-with-simple-dashboards/compose.yaml index 205e68c0..a851e0f6 100644 --- a/examples/ghe-with-simple-dashboards/compose.yaml +++ b/examples/ghe-with-simple-dashboards/compose.yaml @@ -25,6 +25,6 @@ services: # https://github.com/qclaogui/codelab-monitoring/blob/main/alloy-modules/compose/README.md labels: metrics.grafana.com/scrape: true - image: githubexporter/github-exporter:1.1.0 + image: githubexporter/github-exporter:1.3.1 environment: - REPOS=grafana/alloy diff --git a/examples/github-exporter/README.md b/examples/github-exporter/README.md index cef436c9..b4a1e033 100644 --- a/examples/github-exporter/README.md +++ b/examples/github-exporter/README.md @@ -17,7 +17,7 @@ services: github-exporter: labels: metrics.grafana.com/scrape: true - image: githubexporter/github-exporter:1.1.0 + image: githubexporter/github-exporter:1.3.1 environment: - REPOS=grafana/alloy ``` diff --git a/examples/github-exporter/compose.yaml b/examples/github-exporter/compose.yaml index fe2eab55..dfc97f4d 100644 --- a/examples/github-exporter/compose.yaml +++ b/examples/github-exporter/compose.yaml @@ -27,6 +27,6 @@ services: # https://github.com/qclaogui/codelab-monitoring/blob/main/alloy-modules/compose/README.md labels: metrics.grafana.com/scrape: true - image: githubexporter/github-exporter:1.1.0 + image: githubexporter/github-exporter:1.3.1 environment: - REPOS=grafana/alloy diff --git a/examples/grafana-beyla/beyla/beyla-config.yml b/examples/grafana-beyla/beyla/beyla-config.yml index 583e238b..73312cdb 100644 --- a/examples/grafana-beyla/beyla/beyla-config.yml +++ b/examples/grafana-beyla/beyla/beyla-config.yml @@ -39,3 +39,8 @@ network: - dst.port - src.name - dst.name + +internal_metrics: + prometheus: + port: 6060 + path: /internal/metrics diff --git a/examples/grafana-beyla/beyla/beyla-red-metrics.json b/examples/grafana-beyla/beyla/beyla-red-metrics.json index 73e7dd79..a595efbb 100644 --- a/examples/grafana-beyla/beyla/beyla-red-metrics.json +++ b/examples/grafana-beyla/beyla/beyla-red-metrics.json @@ -1,1264 +1,1270 @@ { - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "grafana", - "uid": "-- Grafana --" - }, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "description": "HTTP and gRPC RED metrics visualization for Grafana Beyla", - "editable": true, - "fiscalYearStartMonth": 0, - "graphTooltip": 0, - "id": 11, - "links": [], - "liveNow": false, - "panels": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "HTTP and gRPC RED metrics visualization for Grafana Beyla", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 15, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "description": "the slowest HTTP routes sorted by response time percentile", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "json-view" }, - "description": "the slowest HTTP routes sorted by response time percentile", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "cellOptions": { - "type": "json-view" - }, - "filterable": true, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "s" - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Time" - }, - "properties": [ - { - "id": "custom.hidden", - "value": true - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Value" - }, - "properties": [ - { - "id": "custom.hidden", - "value": true - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Duration (ms)" - }, - "properties": [ - { - "id": "decimals", - "value": 0 - } - ] - } - ] + "filterable": true, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" }, - "gridPos": { - "h": 5, - "w": 13, - "x": 0, - "y": 0 + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" }, - "id": 35, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "frameIndex": 2, - "showHeader": true, - "sortBy": [ - { - "desc": true, - "displayName": "Duration (ms)" - } - ] + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Duration (ms)" }, - "pluginVersion": "10.4.1", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sort_desc(topk by(http_route, service_name) (5, max by (http_route, service_name) (histogram_quantile(0.95, (sum by(http_route, service_name, le) (rate({__name__=~\"http_server_request_duration_seconds_bucket|http_server_request_duration_bucket\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))))))", - "format": "table", - "hide": false, - "instant": true, - "legendFormat": "{{service_name}} - {{http_route}}", - "range": false, - "refId": "A" - } - ], - "title": "Slowest HTTP routes (P95)", - "transformations": [ - { - "id": "calculateField", - "options": { - "alias": "Duration (ms)", - "binary": { - "left": "Value", - "operator": "*", - "reducer": "sum", - "right": "1000" - }, - "mode": "binary", - "reduce": { - "reducer": "sum" - }, - "replaceFields": false - } - }, - { - "id": "organize", - "options": { - "excludeByName": {}, - "indexByName": { - "Duration (ms)": 4, - "Time": 1, - "Value": 3, - "http_route": 2, - "service_name": 0 - }, - "renameByName": {} - } - } - ], - "type": "table" + "properties": [ + { + "id": "decimals", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 13, + "x": 0, + "y": 0 + }, + "id": 35, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false }, + "frameIndex": 2, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Duration (ms)" + } + ] + }, + "pluginVersion": "11.2.1", + "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "the slowest remote procedure calls (RPC) in your application sorted by response time percentile", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "cellOptions": { - "type": "json-view" - }, - "filterable": true, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "s" - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Time" - }, - "properties": [ - { - "id": "custom.hidden", - "value": true - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Value" - }, - "properties": [ - { - "id": "custom.hidden", - "value": true - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Duration (ms)" - }, - "properties": [ - { - "id": "decimals", - "value": 0 - } - ] - } - ] - }, - "gridPos": { - "h": 5, - "w": 11, - "x": 13, - "y": 0 + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sort_desc(topk by(http_route, service_name) (5, max by (http_route, service_name) (histogram_quantile(0.95, (sum by(http_route, service_name, le) (rate({__name__=~\"http_server_request_duration_seconds_bucket|http_server_request_duration_bucket\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))))))", + "format": "table", + "hide": false, + "instant": true, + "legendFormat": "{{service_name}} - {{http_route}}", + "range": false, + "refId": "A" + } + ], + "title": "Slowest HTTP routes (P95)", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "Duration (ms)", + "binary": { + "left": "Value", + "operator": "*", + "reducer": "sum", + "right": "1000" }, - "id": 56, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "frameIndex": 2, - "showHeader": true, - "sortBy": [ - { - "desc": true, - "displayName": "Duration (ms)" - } - ] + "mode": "binary", + "reduce": { + "reducer": "sum" }, - "pluginVersion": "10.4.1", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sort_desc(topk by(rpc_method, service_name) (5, max by (rpc_method, service_name) (histogram_quantile(0.95, (sum by(rpc_method, service_name, le) (rate({__name__=~\"rpc_server_duration_seconds_bucket|rpc_server_duration_bucket\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))))))", - "format": "table", - "hide": false, - "instant": true, - "legendFormat": "{{service_name}} - {{http_route}}", - "range": false, - "refId": "A" - } - ], - "title": "Slowest RPC methods (P95)", - "transformations": [ - { - "id": "calculateField", - "options": { - "alias": "Duration (ms)", - "binary": { - "left": "Value", - "operator": "*", - "reducer": "sum", - "right": "1000" - }, - "mode": "binary", - "reduce": { - "reducer": "sum" - }, - "replaceFields": false - } - } - ], - "type": "table" + "replaceFields": false + } }, { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 5 + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": { + "Duration (ms)": 4, + "Time": 1, + "Value": 3, + "http_route": 2, + "service_name": 0 }, - "id": 72, - "panels": [], - "repeat": "Service", - "repeatDirection": "h", - "title": "Inbound: $Service", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "renameByName": {} + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "description": "the slowest remote procedure calls (RPC) in your application sorted by response time percentile", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "json-view" }, - "description": "average and top percentiles for both HTTP and gRPC traffic", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 63, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 3, - "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": "s" - }, - "overrides": [] + "filterable": true, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 6 + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" }, - "id": 1, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } + "properties": [ + { + "id": "custom.hidden", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Duration (ms)" }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.99, sum by(service_name, le) (rate({__name__=~\"http_server_request_duration_seconds_bucket|http_server_request_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))", - "legendFormat": "HTTP p99", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.95, sum(rate({__name__=~\"http_server_request_duration_seconds_bucket|http_server_request_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) by (service_name, le))", - "hide": false, - "legendFormat": "HTTP p95", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate({__name__=~\"http_server_request_duration_seconds_sum|http_server_request_duration_sum\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) / sum(rate({__name__=~\"http_server_request_duration_seconds_count|http_server_request_duration_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval]))", - "hide": false, - "legendFormat": "HTTP Avg", - "range": true, - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.99, sum by(service_name, le) (rate({__name__=~\"rpc_server_duration_seconds_bucket|rpc_server_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))", - "hide": false, - "legendFormat": "RPC p99", - "range": true, - "refId": "D" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.95, sum by(service_name, le) (rate({__name__=~\"rpc_server_duration_seconds_bucket|rpc_server_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))", - "hide": false, - "legendFormat": "RPC p95", - "range": true, - "refId": "E" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate({__name__=~\"rpc_server_duration_seconds_sum\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) / sum(rate({__name__=~\"rpc_server_duration_seconds_count|rpc_server_duration_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval]))", - "hide": false, - "legendFormat": "RPC Avg", - "range": true, - "refId": "F" - } - ], - "title": "Duration", - "type": "timeseries" + "properties": [ + { + "id": "decimals", + "value": 0 + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 11, + "x": 13, + "y": 0 + }, + "id": 56, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false }, + "frameIndex": 2, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Duration (ms)" + } + ] + }, + "pluginVersion": "11.2.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sort_desc(topk by(rpc_method, service_name) (5, max by (rpc_method, service_name) (histogram_quantile(0.95, (sum by(rpc_method, service_name, le) (rate({__name__=~\"rpc_server_duration_seconds_bucket|rpc_server_duration_bucket\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))))))", + "format": "table", + "hide": false, + "instant": true, + "legendFormat": "{{service_name}} - {{http_route}}", + "range": false, + "refId": "A" + } + ], + "title": "Slowest RPC methods (P95)", + "transformations": [ { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "id": "calculateField", + "options": { + "alias": "Duration (ms)", + "binary": { + "left": "Value", + "operator": "*", + "reducer": "sum", + "right": "1000" }, - "description": "number of requests per second, faceted by its HTTP or gRPC return code", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": 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": "reqps" - }, - "overrides": [] + "mode": "binary", + "reduce": { + "reducer": "sum" }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 6 + "replaceFields": false + } + } + ], + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 72, + "panels": [], + "repeat": "Service", + "repeatDirection": "h", + "title": "Inbound: $Service", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "description": "average and top percentiles for both HTTP and gRPC traffic", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 63, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "id": 58, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 3, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate({__name__=~\"http_server_request_duration_seconds_count|http_server_request_duration_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) by (http_response_status_code)", - "hide": false, - "legendFormat": "HTTP server - {{http_response_status_code}}", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate({__name__=~\"rpc_server_duration_seconds_count|rpc_server_duration_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) by (service_name, rpc_grpc_status_code)", - "hide": false, - "legendFormat": "RPC server (status {{rpc_grpc_status_code}})", - "range": true, - "refId": "D" - } - ], - "title": "Request rate", - "type": "timeseries" + "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": "s" }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 6 + }, + "id": 1, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "percentage of 4xx|5xx HTTP responses or non-zero gRPC responses over the total of the requests", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMax": 1, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": 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": "percentunit" - }, - "overrides": [] + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.99, sum by(service_name, le) (rate({__name__=~\"http_server_request_duration_seconds_bucket|http_server_request_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))", + "legendFormat": "HTTP p99", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.95, sum(rate({__name__=~\"http_server_request_duration_seconds_bucket|http_server_request_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) by (service_name, le))", + "hide": false, + "legendFormat": "HTTP p95", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"http_server_request_duration_seconds_sum|http_server_request_duration_sum\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) / sum(rate({__name__=~\"http_server_request_duration_seconds_count|http_server_request_duration_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval]))", + "hide": false, + "legendFormat": "HTTP Avg", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.99, sum by(service_name, le) (rate({__name__=~\"rpc_server_duration_seconds_bucket|rpc_server_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))", + "hide": false, + "legendFormat": "RPC p99", + "range": true, + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.95, sum by(service_name, le) (rate({__name__=~\"rpc_server_duration_seconds_bucket|rpc_server_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))", + "hide": false, + "legendFormat": "RPC p95", + "range": true, + "refId": "E" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"rpc_server_duration_seconds_sum\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) / sum(rate({__name__=~\"rpc_server_duration_seconds_count|rpc_server_duration_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval]))", + "hide": false, + "legendFormat": "RPC Avg", + "range": true, + "refId": "F" + } + ], + "title": "Duration", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "description": "number of requests per second, faceted by its HTTP or gRPC return code", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 6 + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" }, - "id": 59, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (http_response_status_code) (rate({__name__=~\"http_server_request_duration_seconds_count|http_server_request_duration_count\",service_name=\"${Service}\",http_response_status_code=~\"(4|5).*\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) / ignoring(http_response_status_code) group_left sum(rate({__name__=~\"http_server_request_duration_seconds_count|http_server_request_duration_count\",service_name=\"${Service}\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval]))", - "hide": false, - "legendFormat": "HTTP server - {{http_response_status_code}}", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (rpc_grpc_status_code) (rate({__name__=~\"rpc_server_duration_seconds_count|rpc_server_duration_count\",service_name=\"${Service}\",rpc_grpc_status_code!=\"0\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) / ignoring(rpc_grpc_status_code) group_left sum(rate({__name__=~\"rpc_server_duration_seconds_count|rpc_server_duration_count\",service_name=\"${Service}\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval]))", - "hide": false, - "legendFormat": "RPC server (status {{rpc_grpc_status_code}})", - "range": true, - "refId": "D" - } - ], - "title": "Error rate", - "type": "timeseries" + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "reqps" }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 6 + }, + "id": 58, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 23 - }, - "id": 5, - "panels": [], - "repeat": "Service", - "repeatDirection": "h", - "title": "Outbound: $Service", - "type": "row" + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"http_server_request_duration_seconds_count|http_server_request_duration_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) by (http_response_status_code)", + "hide": false, + "legendFormat": "HTTP server - {{http_response_status_code}}", + "range": true, + "refId": "B" }, { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "average and top percentiles for both HTTP and gRPC traffic", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 63, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 3, - "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": "s" - }, - "overrides": [] + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"rpc_server_duration_seconds_count|rpc_server_duration_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) by (service_name, rpc_grpc_status_code)", + "hide": false, + "legendFormat": "RPC server (status {{rpc_grpc_status_code}})", + "range": true, + "refId": "D" + } + ], + "title": "Request rate", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "description": "percentage of 4xx|5xx HTTP responses or non-zero gRPC responses over the total of the requests", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMax": 1, + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 24 + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" }, - "id": 6, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.99, sum by(service_name, le) (rate({__name__=~\"http_client_request_duration_seconds_bucket|http_client_request_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))", - "legendFormat": "HTTP p99", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.95, sum(rate({__name__=~\"http_client_request_duration_seconds_bucket|http_client_request_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) by (service_name, le)) ", - "hide": false, - "legendFormat": "HTTP p95", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate({__name__=~\"http_client_request_duration_seconds_sum|http_client_request_duration_sum\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) / sum(rate({__name__=~\"http_client_request_duration_count|http_client_request_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval]))", - "hide": false, - "legendFormat": "HTTP Avg", - "range": true, - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate({__name__=~\"rpc_client_duration_seconds_sum|rpc_client_duration_sum\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) / sum(rate({__name__=~\"rpc_client_duration_count|rpc_client_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval]))", - "hide": false, - "legendFormat": "RPC Avg", - "range": true, - "refId": "D" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.99, sum by(service_name, le) (rate({__name__=~\"rpc_client_duration_seconds_bucket|rpc_client_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))", - "hide": false, - "legendFormat": "RPC p99", - "range": true, - "refId": "E" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "histogram_quantile(0.95, sum(rate({__name__=~\"rpc_client_duration_seconds_bucket|rpc_client_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) by (service_name, le)) ", - "hide": false, - "legendFormat": "RPC p95", - "range": true, - "refId": "F" - } - ], - "title": "Duration", - "type": "timeseries" + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 6 + }, + "id": 59, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum by (http_response_status_code) (rate({__name__=~\"http_server_request_duration_seconds_count|http_server_request_duration_count\",service_name=\"${Service}\",http_response_status_code=~\"(4|5).*\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) / ignoring(http_response_status_code) group_left sum(rate({__name__=~\"http_server_request_duration_seconds_count|http_server_request_duration_count\",service_name=\"${Service}\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval]))", + "hide": false, + "legendFormat": "HTTP server - {{http_response_status_code}}", + "range": true, + "refId": "B" }, { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "number of requests per second, faceted by its HTTP or gRPC return code", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": 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": "reqps" - }, - "overrides": [] + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum by (rpc_grpc_status_code) (rate({__name__=~\"rpc_server_duration_seconds_count|rpc_server_duration_count\",service_name=\"${Service}\",rpc_grpc_status_code!=\"0\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) / ignoring(rpc_grpc_status_code) group_left sum(rate({__name__=~\"rpc_server_duration_seconds_count|rpc_server_duration_count\",service_name=\"${Service}\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval]))", + "hide": false, + "legendFormat": "RPC server (status {{rpc_grpc_status_code}})", + "range": true, + "refId": "D" + } + ], + "title": "Error rate", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 5, + "panels": [], + "repeat": "Service", + "repeatDirection": "h", + "title": "Outbound: $Service", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "description": "average and top percentiles for both HTTP and gRPC traffic", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 63, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 24 + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 3, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" }, - "id": 8, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate({__name__=~\"http_client_request_duration_count|http_client_request_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) by (service_name, http_response_status_code)", - "legendFormat": "HTTP client - {{http_response_status_code}}", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate({__name__=~\"rpc_client_duration_count|rpc_client_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) by (service_name, rpc_grpc_status_code)", - "hide": false, - "legendFormat": "RPC client (status {{rpc_grpc_status_code}})", - "range": true, - "refId": "C" - } - ], - "title": "Rate", - "type": "timeseries" + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 15 + }, + "id": 6, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.99, sum by(service_name, le) (rate({__name__=~\"http_client_request_duration_seconds_bucket|http_client_request_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))", + "legendFormat": "HTTP p99", + "range": true, + "refId": "A" }, { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "description": "percentage of 5xx HTTP responses or non-zero gRPC responses over the total of the requests", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisSoftMax": 1, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": 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": "percentunit" - }, - "overrides": [ - { - "__systemRef": "hideSeriesFrom", - "matcher": { - "id": "byNames", - "options": { - "mode": "exclude", - "names": [ - "HTTP server - 500" - ], - "prefix": "All except:", - "readOnly": true - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": false, - "tooltip": false, - "viz": false - } - } - ] - } - ] + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.95, sum(rate({__name__=~\"http_client_request_duration_seconds_bucket|http_client_request_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) by (service_name, le)) ", + "hide": false, + "legendFormat": "HTTP p95", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"http_client_request_duration_seconds_sum|http_client_request_duration_sum\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) / sum(rate({__name__=~\"http_client_request_duration_count|http_client_request_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval]))", + "hide": false, + "legendFormat": "HTTP Avg", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"rpc_client_duration_seconds_sum|rpc_client_duration_sum\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) / sum(rate({__name__=~\"rpc_client_duration_count|rpc_client_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval]))", + "hide": false, + "legendFormat": "RPC Avg", + "range": true, + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.99, sum by(service_name, le) (rate({__name__=~\"rpc_client_duration_seconds_bucket|rpc_client_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])))", + "hide": false, + "legendFormat": "RPC p99", + "range": true, + "refId": "E" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "histogram_quantile(0.95, sum(rate({__name__=~\"rpc_client_duration_seconds_bucket|rpc_client_duration_bucket\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) by (service_name, le)) ", + "hide": false, + "legendFormat": "RPC p95", + "range": true, + "refId": "F" + } + ], + "title": "Duration", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "description": "number of requests per second, faceted by its HTTP or gRPC return code", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 24 + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" }, - "id": 73, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (http_response_status_code) (rate({__name__=~\"http_client_request_duration_count|http_client_request_duration_seconds_count\",service_name=\"$Service\",http_response_status_code=~\"5.*\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) / ignoring(http_response_status_code) group_left sum(rate({__name__=~\"http_client_request_duration_count|http_client_request_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval]))", - "hide": false, - "legendFormat": "HTTP client - {{http_response_status_code}}", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum by (rpc_grpc_status_code) (rate({__name__=~\"rpc_client_duration_count|rpc_client_duration_seconds_count\",service_name=\"$Service\",rpc_grpc_status_code!=\"0\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) / ignoring(rpc_grpc_status_code) group_left sum(rate({__name__=~\"rpc_client_duration_count|rpc_client_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval]))", - "hide": false, - "legendFormat": "RPC client (status {{rpc_grpc_status_code}})", - "range": true, - "refId": "D" - } - ], - "title": "Error rate", - "type": "timeseries" + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 15 + }, + "id": 8, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"http_client_request_duration_count|http_client_request_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) by (service_name, http_response_status_code)", + "legendFormat": "HTTP client - {{http_response_status_code}}", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"rpc_client_duration_count|rpc_client_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"} [$__rate_interval])) by (service_name, rpc_grpc_status_code)", + "hide": false, + "legendFormat": "RPC client (status {{rpc_grpc_status_code}})", + "range": true, + "refId": "C" } - ], - "refresh": "30s", - "schemaVersion": 39, - "tags": [ - "ebpf", - "red", - "http", - "grpc", - "https", - "beyla" - ], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Metrics", - "value": "metrics" - }, - "description": "Source of the metrics (e.g. Prometheus source)", - "hide": 0, - "includeAll": false, - "label": "Data source", - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" + ], + "title": "Rate", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "description": "percentage of 5xx HTTP responses or non-zero gRPC responses over the total of the requests", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMax": 1, + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - { - "current": { - "selected": true, - "text": [ - "All" - ], - "value": [ - "$__all" - ] - }, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(service_name)", - "hide": 0, - "includeAll": true, - "label": "Service", - "multi": true, - "name": "Service", - "options": [], - "query": { - "query": "label_values(service_name)", - "refId": "PrometheusVariableQueryEditor-VariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 5, - "type": "query" + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" }, - { - "allValue": ".+", - "current": { - "selected": true, - "text": [ - "All" - ], - "value": [ - "$__all" - ] - }, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(job)", - "hide": 0, - "includeAll": true, - "label": "Job", - "multi": true, - "name": "job", - "options": [], - "query": { - "query": "label_values(job)", - "refId": "PrometheusVariableQueryEditor-VariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" }, - { - "allValue": ".+", - "current": { - "selected": true, - "text": [ - "All" - ], - "value": [ - "$__all" - ] - }, - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "definition": "label_values(instance)", - "hide": 0, - "includeAll": true, - "label": "Instance", - "multi": true, - "name": "instance", - "options": [], - "query": { - "query": "label_values(instance)", - "refId": "PrometheusVariableQueryEditor-VariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" + "thresholdsStyle": { + "mode": "off" } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "HTTP server - 500" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": false + } + } + ] + } ] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Beyla RED Metrics", - "uid": "e0701985-a623-4e62-9fae-f5094244d065", - "version": 1, - "weekStart": "" + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 15 + }, + "id": 73, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum by (http_response_status_code) (rate({__name__=~\"http_client_request_duration_count|http_client_request_duration_seconds_count\",service_name=\"$Service\",http_response_status_code=~\"5.*\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) / ignoring(http_response_status_code) group_left sum(rate({__name__=~\"http_client_request_duration_count|http_client_request_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval]))", + "hide": false, + "legendFormat": "HTTP client - {{http_response_status_code}}", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum by (rpc_grpc_status_code) (rate({__name__=~\"rpc_client_duration_count|rpc_client_duration_seconds_count\",service_name=\"$Service\",rpc_grpc_status_code!=\"0\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval])) / ignoring(rpc_grpc_status_code) group_left sum(rate({__name__=~\"rpc_client_duration_count|rpc_client_duration_seconds_count\",service_name=\"$Service\",instance=~\"$instance\",job=~\"$job\"}[$__rate_interval]))", + "hide": false, + "legendFormat": "RPC client (status {{rpc_grpc_status_code}})", + "range": true, + "refId": "D" + } + ], + "title": "Error rate", + "type": "timeseries" + } + ], + "refresh": "30s", + "schemaVersion": 39, + "tags": [ + "ebpf", + "red", + "http", + "grpc", + "https", + "beyla" + ], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Metrics", + "value": "metrics" + }, + "description": "Source of the metrics (e.g. Prometheus source)", + "hide": 0, + "includeAll": false, + "label": "Data source", + "multi": false, + "name": "datasource", + "options": [], + "query": "prometheus", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "definition": "label_values(service_name)", + "hide": 0, + "includeAll": true, + "label": "Service", + "multi": true, + "name": "Service", + "options": [], + "query": { + "query": "label_values(service_name)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 5, + "type": "query" + }, + { + "allValue": ".+", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "definition": "label_values(job)", + "hide": 0, + "includeAll": true, + "label": "Job", + "multi": true, + "name": "job", + "options": [], + "query": { + "query": "label_values(job)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": ".+", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "definition": "label_values(instance)", + "hide": 0, + "includeAll": true, + "label": "Instance", + "multi": true, + "name": "instance", + "options": [], + "query": { + "query": "label_values(instance)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-30m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Beyla RED Metrics", + "uid": "e0701985-a623-4e62-9fae-f5094244d065", + "version": 1, + "weekStart": "" } \ No newline at end of file diff --git a/examples/grafana-beyla/beyla/process-dashboard.json b/examples/grafana-beyla/beyla/process-dashboard.json new file mode 100644 index 00000000..d6a7a698 --- /dev/null +++ b/examples/grafana-beyla/beyla/process-dashboard.json @@ -0,0 +1,808 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Information about the processes belonging to the applications instrumented by Beyla", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 14, + "links": [], + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": 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": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0-75696", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"process_cpu_time.*\",process_pid=\"\"}[$__interval]) + on(instance) group_left(k8s_pod_name,k8s_namespace_name,process_command,process_pid) (0 * target_info{process_pid!=\"\"})) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"process_cpu_time.*\",process_pid!=\"\"}[$__interval])) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "hide": false, + "instant": false, + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "B" + } + ], + "title": "CPU percent", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": 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": 12, + "x": 0, + "y": 8 + }, + "id": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0-75696", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum({__name__=~\"process_memory_usage.*\",process_pid=\"\"} + on(instance) group_left(k8s_pod_name,k8s_namespace_name,process_command,process_pid) (0 * target_info{process_pid!=\"\"})) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum({__name__=~\"process_memory_usage.*\",process_pid!=\"\"}) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "hide": false, + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "B" + } + ], + "title": "Physical memory", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": 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": 12, + "x": 12, + "y": 8 + }, + "id": 4, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0-75696", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum({__name__=~\"process_memory_virtual.*\",process_pid=\"\"} + on(instance) group_left(k8s_pod_name,k8s_namespace_name,process_command,process_pid) (0 * target_info{process_pid!=\"\"})) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum({__name__=~\"process_memory_virtual.*\",process_pid!=\"\"}) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "hide": false, + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "B" + } + ], + "title": "Virtual memory", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": 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": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 5, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0-75696", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"process_disk_io.*\",process_pid=\"\",disk_io_direction=\"read\"}[$__interval]) + on(instance) group_left(k8s_pod_name,k8s_namespace_name,process_command,process_pid) (0 * target_info{process_pid!=\"\"})) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"process_disk_io.*\",process_pid!=\"\",disk_io_direction=\"read\"}[$__interval])) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "hide": false, + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "B" + } + ], + "title": "Disk I/O read", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": 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": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 7, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0-75696", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"process_disk_io.*\",process_pid=\"\",disk_io_direction=\"write\"}[$__interval]) + on(instance) group_left(k8s_pod_name,k8s_namespace_name,process_command,process_pid) (0 * target_info{process_pid!=\"\"})) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"process_disk_io.*\",process_pid!=\"\",disk_io_direction=\"write\"}[$__interval])) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "hide": false, + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "B" + } + ], + "title": "Disk I/O write", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": 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": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 24 + }, + "id": 6, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0-75696", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"process_network_io.*\",process_pid=\"\",network_io_direction=\"receive\"}[$__interval]) + on(instance) group_left(k8s_pod_name,k8s_namespace_name,process_command,process_pid) (0 * target_info{process_pid!=\"\"})) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"process_network_io.*\",process_pid!=\"\",network_io_direction=\"receive\"}[$__interval])) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "hide": false, + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "B" + } + ], + "title": "Network I/O receive", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": 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": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 24 + }, + "id": 8, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.3.0-75696", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"process_network_io.*\",process_pid=\"\",network_io_direction=\"transmit\"}[$__interval]) + on(instance) group_left(k8s_pod_name,k8s_namespace_name,process_command,process_pid) (0 * target_info{process_pid!=\"\"})) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "metrics" + }, + "editorMode": "code", + "expr": "sum(rate({__name__=~\"process_network_io.*\",process_pid!=\"\",network_io_direction=\"transmit\"}[$__interval])) by(k8s_pod_name,k8s_namespace_name,process_command,process_pid)", + "hide": false, + "legendFormat": "{{process_command}}/{{process_pid}} (Pod: {{k8s_namespace_name}}/{{k8s_pod_name}})", + "range": true, + "refId": "B" + } + ], + "title": "Network I/O transmit", + "type": "timeseries" + } + ], + "schemaVersion": 39, + "tags": [ + "process", + "beyla" + ], + "templating": { + "list": [] + }, + "time": { + "from": "now-30m", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Beyla process metrics", + "uid": "bdw3b5cqiwlq8b", + "version": 1, + "weekStart": "" +} \ No newline at end of file diff --git a/examples/grafana-beyla/compose.override.yaml b/examples/grafana-beyla/compose.override.yaml index d2cc1a5b..ed934707 100644 --- a/examples/grafana-beyla/compose.override.yaml +++ b/examples/grafana-beyla/compose.override.yaml @@ -3,5 +3,6 @@ services: grafana: volumes: - ./beyla/beyla-red-metrics.json:/var/lib/grafana/dashboards/beyla-red-metrics.json + - ./beyla/process-dashboard.json:/var/lib/grafana/dashboards/process-dashboard.json environment: GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH: /var/lib/grafana/dashboards/beyla-red-metrics.json diff --git a/examples/grafana-beyla/compose.yaml b/examples/grafana-beyla/compose.yaml index fbbb32d8..970d1b2f 100644 --- a/examples/grafana-beyla/compose.yaml +++ b/examples/grafana-beyla/compose.yaml @@ -18,14 +18,19 @@ include: services: # Beyla for NGINX gateway - gateway-beyla: + beyla: + labels: + metrics.grafana.com/scrape: true + metrics.grafana.com/job: beyla + metrics.grafana.com/path: /internal/metrics + metrics.grafana.com/port: 6060 depends_on: { gateway: { condition: service_started } } - image: grafana/beyla:1.7.0 + image: grafana/beyla:1.8.5 volumes: - ./beyla/beyla-config.yml/:/configs/beyla-config.yml - ./sys-kernel-security:/sys/kernel/security privileged: true - network_mode: "service:gateway" + # network_mode: "service:gateway" pid: "service:gateway" environment: BEYLA_CONFIG_PATH: "/configs/beyla-config.yml" diff --git a/examples/grafana-oncall/compose.override.yaml b/examples/grafana-oncall/compose.override.yaml index 79135f71..26187e9d 100644 --- a/examples/grafana-oncall/compose.override.yaml +++ b/examples/grafana-oncall/compose.override.yaml @@ -7,7 +7,8 @@ services: - ./grafana/provisioning/plugins/redis-app.yaml:/etc/grafana/provisioning/plugins/redis-app.yaml - ./grafana/provisioning/datasources/redis.yaml:/etc/grafana/provisioning/datasources/redis.yaml environment: + GF_FEATURE_TOGGLES_ENABLE: externalServiceAccounts GF_SECURITY_ADMIN_USER: oncall GF_SECURITY_ADMIN_PASSWORD: oncall GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: grafana-oncall-app, redis-app - GF_INSTALL_PLUGINS: grafana-oncall-app vv1.8.9, redis-app v2.2.1 \ No newline at end of file + GF_INSTALL_PLUGINS: grafana-oncall-app v1.10.5, redis-app diff --git a/examples/grafana-oncall/compose.yaml b/examples/grafana-oncall/compose.yaml index 252af473..d9011c64 100644 --- a/examples/grafana-oncall/compose.yaml +++ b/examples/grafana-oncall/compose.yaml @@ -63,7 +63,7 @@ services: condition: service_completed_successfully redis: condition: service_healthy - image: &oncallImage grafana/oncall:v1.8.9 + image: &oncallImage grafana/oncall:v1.10.5 restart: always ports: # - "8080" diff --git a/examples/grafana-oncall/grafana/provisioning/plugins/grafana-oncall-app.yaml b/examples/grafana-oncall/grafana/provisioning/plugins/grafana-oncall-app.yaml index 4be2dfa0..e1839680 100644 --- a/examples/grafana-oncall/grafana/provisioning/plugins/grafana-oncall-app.yaml +++ b/examples/grafana-oncall/grafana/provisioning/plugins/grafana-oncall-app.yaml @@ -2,10 +2,11 @@ apiVersion: 1 apps: - type: grafana-oncall-app name: grafana-oncall-app - disabled: false + enabled: true jsonData: - # stackId: 5 - orgId: 1 + stackId: 5 + orgId: 100 onCallApiUrl: http://engine:8080 + grafanaUrl: http://grafana:3000 # secureJsonData: # key: value diff --git a/examples/grafana-oncall/scripts/generate-fake-data/README.md b/examples/grafana-oncall/scripts/generate-fake-data/README.md index 3607bc33..b0c04cb5 100644 --- a/examples/grafana-oncall/scripts/generate-fake-data/README.md +++ b/examples/grafana-oncall/scripts/generate-fake-data/README.md @@ -10,7 +10,7 @@ capable of generating the following objects: ## Prerequisites -1. Create/active a Python 3.11 virtual environment +1. Create/active a Python 3.12 virtual environment 2. `pip install -r requirements.txt` 3. Must have a local version of Grafana and OnCall up and running 4. Generate an API key inside of Grafana OnCall diff --git a/kubernetes/common/grafana/configs/home-kubernetes-monitoring.json b/kubernetes/common/grafana/configs/home-kubernetes-monitoring.json index c2244e2d..80a5ced3 100644 --- a/kubernetes/common/grafana/configs/home-kubernetes-monitoring.json +++ b/kubernetes/common/grafana/configs/home-kubernetes-monitoring.json @@ -49,7 +49,7 @@ { "datasource": { "type": "prometheus", - "uid": "grafanacloud-prom" + "uid": "Metrics" }, "gridPos": { "h": 6, @@ -72,7 +72,7 @@ { "datasource": { "type": "prometheus", - "uid": "grafanacloud-prom" + "uid": "Metrics" }, "refId": "A" } diff --git a/kubernetes/common/grafana/manifests/k8s-all-in-one.yaml b/kubernetes/common/grafana/manifests/k8s-all-in-one.yaml index ec37e589..0ed53e7e 100644 --- a/kubernetes/common/grafana/manifests/k8s-all-in-one.yaml +++ b/kubernetes/common/grafana/manifests/k8s-all-in-one.yaml @@ -341,7 +341,7 @@ data: { "datasource": { "type": "prometheus", - "uid": "grafanacloud-prom" + "uid": "Metrics" }, "gridPos": { "h": 6, @@ -364,7 +364,7 @@ data: { "datasource": { "type": "prometheus", - "uid": "grafanacloud-prom" + "uid": "Metrics" }, "refId": "A" }