diff --git a/docker-compose/monitor/docker-compose.yml b/docker-compose/monitor/docker-compose.yml index 983e3c2e68b..92717e7e926 100644 --- a/docker-compose/monitor/docker-compose.yml +++ b/docker-compose/monitor/docker-compose.yml @@ -64,5 +64,16 @@ services: ports: - "3000:3000" + perses: + networks: + - backend + image: persesdev/perses:v0.49 + command: "--config=/etc/perses.yaml" + volumes: + - ./perses:/etc/perses/provisioning + - ./perses/perses.yaml:/etc/perses.yaml + ports: + - "8085:8080" + networks: backend: diff --git a/docker-compose/monitor/perses/dashboards/spm-service.yaml b/docker-compose/monitor/perses/dashboards/spm-service.yaml new file mode 100644 index 00000000000..47e768cbac0 --- /dev/null +++ b/docker-compose/monitor/perses/dashboards/spm-service.yaml @@ -0,0 +1,609 @@ +{ + "kind": "Dashboard", + "metadata": { + "name": "spm-service", + "createdAt": "2024-11-13T18:36:47.119791514Z", + "updatedAt": "2024-11-13T18:56:40.598971619Z", + "version": 6, + "project": "jaeger" + }, + "spec": { + "display": { + "name": "SPM Dashboard - Service level" + }, + "datasources": { + "NewDatasource": { + "default": false, + "plugin": { + "kind": "PrometheusDatasource", + "spec": { + "proxy": { + "kind": "HTTPProxy", + "spec": { + "allowedEndpoints": [ + { + "endpointPattern": "/api/v1/labels", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/series", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/metadata", + "method": "GET" + }, + { + "endpointPattern": "/api/v1/query", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/query_range", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/label/([a-zA-Z0-9_-]+)/values", + "method": "GET" + }, + { + "endpointPattern": "/api/v1/parse_query", + "method": "POST" + } + ], + "url": "http://prometheus:9090" + } + } + } + } + } + }, + "variables": [ + { + "kind": "ListVariable", + "spec": { + "display": { + "name": "Service", + "hidden": false + }, + "defaultValue": "frontend", + "allowAllValue": false, + "allowMultiple": false, + "sort": "none", + "plugin": { + "kind": "PrometheusLabelValuesVariable", + "spec": { + "datasource": { + "kind": "PrometheusDatasource", + "name": "prometheus" + }, + "labelName": "service_name", + "matchers": [ + "traces_span_metrics_calls_total" + ] + } + }, + "name": "service" + } + }, + { + "kind": "ListVariable", + "spec": { + "defaultValue": [ + "/dispatch" + ], + "allowAllValue": false, + "allowMultiple": true, + "sort": "none", + "plugin": { + "kind": "PrometheusLabelValuesVariable", + "spec": { + "datasource": { + "kind": "PrometheusDatasource", + "name": "prometheus" + }, + "labelName": "span_name", + "matchers": [ + "traces_span_metrics_calls_total{service_name=\"$service\"}" + ] + } + }, + "name": "operation" + } + } + ], + "panels": { + "0_0": { + "kind": "Panel", + "spec": { + "display": { + "name": "Total # of spans" + }, + "plugin": { + "kind": "StatChart", + "spec": { + "calculation": "sum", + "thresholds": { + "steps": [ + { + "color": "semi-dark-blue", + "value": 0 + } + ] + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum (rate(traces_span_metrics_calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "{{service_name}}" + } + } + } + } + ] + } + }, + "0_1": { + "kind": "Panel", + "spec": { + "display": { + "name": "Latency per Service" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {}, + "yAxis": { + "format": { + "unit": "milliseconds" + } + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "histogram_quantile(0.95, sum(rate(traces_span_metrics_duration_milliseconds_bucket{service_name=~\"$service\"}[$__rate_interval])) by (service_name,le))", + "seriesNameFormat": "{{service_name}}" + } + } + } + } + ] + } + }, + "0_2": { + "kind": "Panel", + "spec": { + "display": { + "name": "Spans per service" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {} + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (service_name) (rate(traces_span_metrics_calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "{{service_name}}" + } + } + } + } + ] + } + }, + "0_3": { + "kind": "Panel", + "spec": { + "display": { + "name": "Avg Error Rate" + }, + "plugin": { + "kind": "StatChart", + "spec": { + "calculation": "mean", + "format": { + "unit": "percent-decimal" + }, + "thresholds": { + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 0.2 + } + ] + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum (rate(traces_span_metrics_calls_total{service_name=~\"$service\",status_code=~\"STATUS_CODE_ERROR\"}[$__rate_interval])) / sum (rate(traces_span_metrics_calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "" + } + } + } + } + ] + } + }, + "0_4": { + "kind": "Panel", + "spec": { + "display": { + "name": "Stats" + }, + "plugin": { + "kind": "Table", + "spec": { + "columnSettings": [] + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (operation)(rate(traces_span_metrics_calls_total{service_name=\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "" + } + } + } + }, + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "histogram_quantile(0.95, sum(rate(latency_bucket{service_name=~\"$service\"}[5m])) by (operation,le))", + "seriesNameFormat": "" + } + } + } + }, + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (operation)(rate(calls_total{service_name=~\"$service\",status_code=\"STATUS_CODE_ERROR\"}[$__rate_interval]))/sum by (operation)(rate(calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "" + } + } + } + } + ] + } + }, + "1_0": { + "kind": "Panel", + "spec": { + "display": { + "name": "Total # of spans" + }, + "plugin": { + "kind": "StatChart", + "spec": { + "calculation": "sum", + "thresholds": { + "steps": [ + { + "color": "semi-dark-blue", + "value": 0 + } + ] + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum (rate(calls_total{service_name=~\"$service\",operation=~\"$operation\"}[1m]))", + "seriesNameFormat": "" + } + } + } + } + ] + } + }, + "1_1": { + "kind": "Panel", + "spec": { + "display": { + "name": "Latency per Operation" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {}, + "yAxis": { + "format": { + "unit": "milliseconds" + } + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "histogram_quantile(0.95, sum(rate(latency_bucket{service_name=~\"$service\",operation=~\"$operation\"}[$__rate_interval])) by (operation,le))", + "seriesNameFormat": "{{operation}}" + } + } + } + } + ] + } + }, + "1_2": { + "kind": "Panel", + "spec": { + "display": { + "name": "Spans per service" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {} + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (operation) (rate(calls_total{service_name=~\"$service\",operation=~\"$operation\"}[$__rate_interval]))", + "seriesNameFormat": "{{operation}}" + } + } + } + } + ] + } + }, + "1_3": { + "kind": "Panel", + "spec": { + "display": { + "name": "Error Rate per Operation" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {}, + "yAxis": { + "format": { + "unit": "percent-decimal" + } + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (operation) (rate(calls_total{service_name=~\"$service\",status_code=~\"STATUS_CODE_ERROR\",operation=~\"$operation\"}[$__rate_interval])) / sum by (operation) (rate(calls_total{service_name=~\"$service\",operation=~\"$operation\"}[$__rate_interval]))", + "seriesNameFormat": "{{operation}}" + } + } + } + } + ] + } + }, + "1_4": { + "kind": "Panel", + "spec": { + "display": { + "name": "Avg Error Rate" + }, + "plugin": { + "kind": "StatChart", + "spec": { + "calculation": "mean", + "format": { + "unit": "percent-decimal" + }, + "thresholds": { + "steps": [ + { + "color": "red", + "value": 0.2 + } + ] + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum (rate(calls_total{service_name=~\"$service\",status_code=~\"STATUS_CODE_ERROR\",operation=~\"$operation\"}[$__rate_interval])) / sum (rate(calls_total{service_name=~\"$service\",operation=~\"$operation\"}[$__rate_interval]))", + "seriesNameFormat": "" + } + } + } + } + ] + } + } + }, + "layouts": [ + { + "kind": "Grid", + "spec": { + "display": { + "title": "General information", + "collapse": { + "open": true + } + }, + "items": [ + { + "x": 0, + "y": 0, + "width": 3, + "height": 4, + "content": { + "$ref": "#/spec/panels/0_0" + } + }, + { + "x": 3, + "y": 0, + "width": 10, + "height": 8, + "content": { + "$ref": "#/spec/panels/0_1" + } + }, + { + "x": 13, + "y": 0, + "width": 11, + "height": 8, + "content": { + "$ref": "#/spec/panels/0_2" + } + }, + { + "x": 0, + "y": 4, + "width": 3, + "height": 4, + "content": { + "$ref": "#/spec/panels/0_3" + } + }, + { + "x": 0, + "y": 8, + "width": 24, + "height": 7, + "content": { + "$ref": "#/spec/panels/0_4" + } + } + ] + } + }, + { + "kind": "Grid", + "spec": { + "display": { + "title": "$operation - Stats per Service", + "collapse": { + "open": true + } + }, + "items": [ + { + "x": 0, + "y": 0, + "width": 2, + "height": 3, + "content": { + "$ref": "#/spec/panels/1_0" + } + }, + { + "x": 2, + "y": 0, + "width": 8, + "height": 6, + "content": { + "$ref": "#/spec/panels/1_1" + } + }, + { + "x": 10, + "y": 0, + "width": 8, + "height": 6, + "content": { + "$ref": "#/spec/panels/1_2" + } + }, + { + "x": 18, + "y": 0, + "width": 6, + "height": 6, + "content": { + "$ref": "#/spec/panels/1_3" + } + }, + { + "x": 0, + "y": 3, + "width": 2, + "height": 3, + "content": { + "$ref": "#/spec/panels/1_4" + } + } + ] + } + } + ], + "duration": "1h" + } +} diff --git a/docker-compose/monitor/perses/dashboards/spm.yaml b/docker-compose/monitor/perses/dashboards/spm.yaml new file mode 100644 index 00000000000..e89e459a591 --- /dev/null +++ b/docker-compose/monitor/perses/dashboards/spm.yaml @@ -0,0 +1,620 @@ +{ + "kind": "Dashboard", + "metadata": { + "name": "spm", + "createdAt": "2024-11-13T18:40:17.312950785Z", + "updatedAt": "2024-11-13T18:48:54.863814983Z", + "version": 2, + "project": "jaeger" + }, + "spec": { + "display": { + "name": "SPM Dashboard" + }, + "datasources": { + "NewDatasource": { + "default": true, + "plugin": { + "kind": "PrometheusDatasource", + "spec": { + "proxy": { + "kind": "HTTPProxy", + "spec": { + "allowedEndpoints": [ + { + "endpointPattern": "/api/v1/labels", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/series", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/metadata", + "method": "GET" + }, + { + "endpointPattern": "/api/v1/query", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/query_range", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/label/([a-zA-Z0-9_-]+)/values", + "method": "GET" + }, + { + "endpointPattern": "/api/v1/parse_query", + "method": "POST" + } + ], + "url": "http://prometheus:9090" + } + } + } + } + } + }, + "variables": [ + { + "kind": "ListVariable", + "spec": { + "display": { + "name": "Service", + "hidden": false + }, + "defaultValue": [ + "frontend" + ], + "allowAllValue": true, + "allowMultiple": true, + "sort": "none", + "plugin": { + "kind": "PrometheusLabelValuesVariable", + "spec": { + "labelName": "service_name", + "matchers": [ + "traces_span_metrics_calls_total" + ] + } + }, + "name": "service" + } + } + ], + "panels": { + "0_0": { + "kind": "Panel", + "spec": { + "display": { + "name": "Total # of spans" + }, + "plugin": { + "kind": "StatChart", + "spec": { + "calculation": "sum", + "thresholds": { + "steps": [ + { + "color": "semi-dark-blue", + "value": 0 + } + ] + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum (rate(traces_span_metrics_calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "{{service_name}}" + } + } + } + } + ] + } + }, + "0_1": { + "kind": "Panel", + "spec": { + "display": { + "name": "Spans per service" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {} + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (service_name) (rate(traces_span_metrics_calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "{{service_name}}" + } + } + } + } + ] + } + }, + "0_2": { + "kind": "Panel", + "spec": { + "display": { + "name": "Avg Error Rate" + }, + "plugin": { + "kind": "StatChart", + "spec": { + "calculation": "mean", + "format": { + "unit": "percent-decimal" + }, + "thresholds": { + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 0.2 + } + ] + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum (rate(traces_span_metrics_calls_total{service_name=~\"$service\",status_code=~\"STATUS_CODE_ERROR\"}[$__rate_interval])) / sum (rate(traces_span_metrics_calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "" + } + } + } + } + ] + } + }, + "0_3": { + "kind": "Panel", + "spec": { + "display": { + "name": "Error Rate per Service" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {}, + "yAxis": { + "format": { + "unit": "percent-decimal" + } + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (service_name) (rate(traces_span_metrics_calls_total{service_name=~\"$service\",status_code=~\"STATUS_CODE_ERROR\"}[$__rate_interval])) / sum by (service_name) (rate(traces_span_metrics_calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "{{service_name}}" + } + } + } + } + ] + } + }, + "0_4": { + "kind": "Panel", + "spec": { + "display": { + "name": "Latency per Service" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {}, + "yAxis": { + "format": { + "unit": "milliseconds" + } + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "histogram_quantile(0.95, sum(rate(traces_span_metrics_duration_milliseconds_bucket{service_name=~\"$service\"}[$__rate_interval])) by (service_name,le))", + "seriesNameFormat": "{{service_name}}" + } + } + } + } + ] + } + }, + "0_5": { + "kind": "Panel", + "spec": { + "display": { + "name": "Stats" + }, + "plugin": { + "kind": "Table", + "spec": { + "columnSettings": [] + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (service_name)(rate(calls_total[$__rate_interval]))", + "seriesNameFormat": "" + } + } + } + }, + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "histogram_quantile(0.95, sum(rate(latency_bucket[5m])) by (service_name,le))", + "seriesNameFormat": "" + } + } + } + }, + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (service_name)(rate(calls_total{status_code=\"STATUS_CODE_ERROR\"}[$__rate_interval]))/sum by (service_name)(rate(calls_total[$__rate_interval]))", + "seriesNameFormat": "" + } + } + } + } + ] + } + }, + "1_0": { + "kind": "Panel", + "spec": { + "display": { + "name": "Total # of spans" + }, + "plugin": { + "kind": "StatChart", + "spec": { + "calculation": "sum", + "thresholds": { + "steps": [] + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum (rate(calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "{{service_name}}" + } + } + } + } + ] + } + }, + "1_1": { + "kind": "Panel", + "spec": { + "display": { + "name": "Latency per Operation" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {}, + "yAxis": { + "format": { + "unit": "milliseconds" + } + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "histogram_quantile(0.95, sum(rate(latency_bucket{service_name=~\"$service\"}[$__rate_interval])) by (operation,le))", + "seriesNameFormat": "{{operation}}" + } + } + } + } + ] + } + }, + "1_2": { + "kind": "Panel", + "spec": { + "display": { + "name": "Spans per service" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {} + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (operation) (rate(calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "{{operation}}" + } + } + } + } + ] + } + }, + "1_3": { + "kind": "Panel", + "spec": { + "display": { + "name": "Error Rate per Operation" + }, + "plugin": { + "kind": "TimeSeriesChart", + "spec": { + "visual": {}, + "yAxis": { + "format": { + "unit": "percent-decimal" + } + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum by (operation) (rate(calls_total{service_name=~\"$service\",status_code=~\"STATUS_CODE_ERROR\"}[$__rate_interval])) / sum by (operation) (rate(calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "{{operation}}" + } + } + } + } + ] + } + }, + "1_4": { + "kind": "Panel", + "spec": { + "display": { + "name": "Avg Error Rate" + }, + "plugin": { + "kind": "StatChart", + "spec": { + "calculation": "mean", + "format": { + "unit": "percent-decimal" + }, + "thresholds": { + "steps": [ + { + "color": "red", + "value": 0.2 + } + ] + } + } + }, + "queries": [ + { + "kind": "TimeSeriesQuery", + "spec": { + "plugin": { + "kind": "PrometheusTimeSeriesQuery", + "spec": { + "minStep": "", + "query": "sum (rate(calls_total{service_name=~\"$service\",status_code=~\"STATUS_CODE_ERROR\"}[$__rate_interval])) / sum (rate(calls_total{service_name=~\"$service\"}[$__rate_interval]))", + "seriesNameFormat": "" + } + } + } + } + ] + } + } + }, + "layouts": [ + { + "kind": "Grid", + "spec": { + "display": { + "title": "General information", + "collapse": { + "open": true + } + }, + "items": [ + { + "x": 0, + "y": 0, + "width": 3, + "height": 4, + "content": { + "$ref": "#/spec/panels/0_0" + } + }, + { + "x": 3, + "y": 0, + "width": 21, + "height": 8, + "content": { + "$ref": "#/spec/panels/0_1" + } + }, + { + "x": 0, + "y": 4, + "width": 3, + "height": 4, + "content": { + "$ref": "#/spec/panels/0_2" + } + }, + { + "x": 0, + "y": 8, + "width": 12, + "height": 8, + "content": { + "$ref": "#/spec/panels/0_3" + } + }, + { + "x": 12, + "y": 8, + "width": 12, + "height": 8, + "content": { + "$ref": "#/spec/panels/0_4" + } + }, + { + "x": 0, + "y": 16, + "width": 24, + "height": 7, + "content": { + "$ref": "#/spec/panels/0_5" + } + } + ] + } + }, + { + "kind": "Grid", + "spec": { + "display": { + "title": "$service - Stats per Service", + "collapse": { + "open": true + } + }, + "items": [ + { + "x": 0, + "y": 0, + "width": 2, + "height": 3, + "content": { + "$ref": "#/spec/panels/1_0" + } + }, + { + "x": 2, + "y": 0, + "width": 8, + "height": 6, + "content": { + "$ref": "#/spec/panels/1_1" + } + }, + { + "x": 10, + "y": 0, + "width": 8, + "height": 6, + "content": { + "$ref": "#/spec/panels/1_2" + } + }, + { + "x": 18, + "y": 0, + "width": 6, + "height": 6, + "content": { + "$ref": "#/spec/panels/1_3" + } + }, + { + "x": 0, + "y": 3, + "width": 2, + "height": 3, + "content": { + "$ref": "#/spec/panels/1_4" + } + } + ] + } + } + ], + "duration": "5m" + } +} diff --git a/docker-compose/monitor/perses/globaldatasources/prometheus.json b/docker-compose/monitor/perses/globaldatasources/prometheus.json new file mode 100644 index 00000000000..1fcd38fdcf2 --- /dev/null +++ b/docker-compose/monitor/perses/globaldatasources/prometheus.json @@ -0,0 +1,53 @@ +{ + "kind": "GlobalDatasource", + "metadata": { + "name": "prometheus", + "createdAt": "2024-11-01T10:31:22.358795716Z", + "updatedAt": "2024-11-01T10:31:22.358795716Z", + "version": 0 + }, + "spec": { + "default": true, + "plugin": { + "kind": "PrometheusDatasource", + "spec": { + "proxy": { + "kind": "HTTPProxy", + "spec": { + "allowedEndpoints": [ + { + "endpointPattern": "/api/v1/labels", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/series", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/metadata", + "method": "GET" + }, + { + "endpointPattern": "/api/v1/query", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/query_range", + "method": "POST" + }, + { + "endpointPattern": "/api/v1/label/([a-zA-Z0-9_-]+)/values", + "method": "GET" + }, + { + "endpointPattern": "/api/v1/parse_query", + "method": "POST" + } + ], + "url": "http://prometheus:9090" + } + } + } + } + } +} \ No newline at end of file diff --git a/docker-compose/monitor/perses/perses.yaml b/docker-compose/monitor/perses/perses.yaml new file mode 100644 index 00000000000..55a37ebdae5 --- /dev/null +++ b/docker-compose/monitor/perses/perses.yaml @@ -0,0 +1,32 @@ +database: + file: + extension: "json" + folder: "/perses" + case_sensitive: false +schemas: + panels_path: "/etc/perses/cue/schemas/panels" + queries_path: "/etc/perses/cue/schemas/queries" + datasources_path: "/etc/perses/cue/schemas/datasources" + variables_path: "/etc/perses/cue/schemas/variables" + interval: "5m" + + +provisioning: + interval: "12h" + folders: + - "/etc/perses/provisioning" + +frontend: + explorer: + enable: true + + important_dashboards: + - project: "jaeger" + dashboard: "spm" + + information: |- + # Welcome to the Demo instance of Perses! + + This public demo instance is here to show you what Perses looks like + and what's possible to do with it. You can have a look at the example + dashboards, or create your own ones! \ No newline at end of file diff --git a/docker-compose/monitor/perses/projects/jaeger.json b/docker-compose/monitor/perses/projects/jaeger.json new file mode 100644 index 00000000000..e72aa563d21 --- /dev/null +++ b/docker-compose/monitor/perses/projects/jaeger.json @@ -0,0 +1,14 @@ +{ + "kind": "Project", + "metadata": { + "name": "jaeger", + "createdAt": "2024-11-01T10:25:06.797226244Z", + "updatedAt": "2024-11-01T10:25:06.797226244Z", + "version": 0 + }, + "spec": { + "display": { + "name": "jaeger" + } + } +} \ No newline at end of file