diff --git a/0002-add-uwsgi-dashboard.patch b/0002-add-uwsgi-dashboard.patch new file mode 100644 index 0000000..4b85815 --- /dev/null +++ b/0002-add-uwsgi-dashboard.patch @@ -0,0 +1,197 @@ +From e27f6d2954201734d30713a870d279de87fadd2d Mon Sep 17 00:00:00 2001 +From: Sam Feifer +Date: Tue, 2 Jul 2024 12:01:39 -0400 +Subject: [PATCH] uwsgi dashboard patch + +--- + .../pcp-vector-uwsgi-overview.jsonnet | 160 ++++++++++++++++++ + src/datasources/vector/plugin.json | 5 + + 2 files changed, 165 insertions(+) + create mode 100644 src/datasources/vector/dashboards/pcp-vector-uwsgi-overview.jsonnet + +diff --git a/src/datasources/vector/dashboards/pcp-vector-uwsgi-overview.jsonnet b/src/datasources/vector/dashboards/pcp-vector-uwsgi-overview.jsonnet +new file mode 100644 +index 0000000..2c9d2a4 +--- /dev/null ++++ b/src/datasources/vector/dashboards/pcp-vector-uwsgi-overview.jsonnet +@@ -0,0 +1,160 @@ ++local grafana = import 'grafonnet/grafana.libsonnet'; ++ ++grafana.dashboard.new( ++ 'PCP Vector: UWSGI Overview', ++ tags=['pcp-vector', 'uwsgi'], ++ time_from='now-5m', ++ time_to='now', ++ refresh='5s', ++) ++.addTemplate( ++ grafana.template.datasource( ++ 'datasource', ++ 'performancecopilot-vector-datasource', ++ 'PCP Vector', ++ ) ++) ++.addPanel( ++ grafana.graphPanel.new( ++ 'Total Worker Count', ++ datasource='$datasource', ++ decimals=0, ++ min=0 ++ ) ++ .addTargets([ ++ { expr: 'uwsgi.summary.total_workers', format: 'time_series', legendFormat: '$metric' }, ++ ]), gridPos={ ++ x: 0, ++ y: 0, ++ w: 12, ++ h: 8, ++ } ++) ++.addPanel( ++ grafana.graphPanel.new( ++ 'Pause Worker Count', ++ datasource='$datasource', ++ decimals=0, ++ min=0, ++ ) ++ .addTargets([ ++ { expr: 'uwsgi.summary.total_pause_worker_count', format: 'time_series', legendFormat: '$metric' }, ++ ]), gridPos={ ++ x: 12, ++ y: 0, ++ w: 12, ++ h: 8, ++ } ++) ++.addPanel( ++ grafana.graphPanel.new( ++ 'Idle Worker Count', ++ datasource='$datasource', ++ decimals=0, ++ min=0, ++ ) ++ .addTargets([ ++ { expr: 'uwsgi.summary.total_idle_worker_count', format: 'time_series', legendFormat: '$metric' }, ++ ]), gridPos={ ++ x: 0, ++ y: 8, ++ w: 12, ++ h: 8, ++ } ++) ++.addPanel( ++ grafana.graphPanel.new( ++ 'Busy Worker Count', ++ datasource='$datasource', ++ decimals=0, ++ min=0, ++ ) ++ .addTargets([ ++ { expr: 'uwsgi.summary.total_busy_worker_count', format: 'time_series', legendFormat: '$metric' }, ++ ]), gridPos={ ++ x: 12, ++ y: 8, ++ w: 12, ++ h: 8, ++ } ++) ++.addPanel( ++ grafana.graphPanel.new( ++ 'Harakiri Count', ++ datasource='$datasource', ++ decimals=0, ++ min=0, ++ ) ++ .addTargets([ ++ { expr: 'uwsgi.summary.total_harakiri_count', format: 'time_series', legendFormat: '$metric' }, ++ ]), gridPos={ ++ x: 0, ++ y: 16, ++ w: 12, ++ h: 8, ++ } ++) ++.addPanel( ++ grafana.graphPanel.new( ++ 'Total Exceptions', ++ datasource='$datasource', ++ decimals=0, ++ min=0, ++ ) ++ .addTargets([ ++ { expr: 'uwsgi.summary.total_exceptions', format: 'time_series', legendFormat: '$metric' }, ++ ]), gridPos={ ++ x: 12, ++ y: 16, ++ w: 12, ++ h: 8, ++ } ++) ++.addPanel( ++ grafana.graphPanel.new( ++ 'Total Workers Acceptions Requests', ++ datasource='$datasource', ++ decimals=0, ++ min=0, ++ ) ++ .addTargets([ ++ { expr: 'uwsgi.summary.total_workers_accepting_requests', format: 'time_series', legendFormat: '$metric' }, ++ ]), gridPos={ ++ x: 0, ++ y: 24, ++ w: 12, ++ h: 8, ++ } ++) ++.addPanel( ++ grafana.graphPanel.new( ++ 'Total Requests Served', ++ datasource='$datasource', ++ decimals=0, ++ min=0, ++ ) ++ .addTargets([ ++ { expr: 'uwsgi.summary.total_requests_served', format: 'time_series', legendFormat: '$metric' }, ++ ]), gridPos={ ++ x: 12, ++ y: 24, ++ w: 12, ++ h: 8, ++ } ++) ++.addPanel( ++ grafana.graphPanel.new( ++ 'Average Response Time (msec)', ++ datasource='$datasource', ++ decimals=0, ++ min=0, ++ ) ++ .addTargets([ ++ { expr: 'uwsgi.summary.avg_response_time_msec', format: 'time_series', legendFormat: '$metric' }, ++ ]), gridPos={ ++ x: 0, ++ y: 32, ++ w: 12, ++ h: 8, ++ } ++) +\ No newline at end of file +diff --git a/src/datasources/vector/plugin.json b/src/datasources/vector/plugin.json +index a28e3f4..277c8c9 100644 +--- a/src/datasources/vector/plugin.json ++++ b/src/datasources/vector/plugin.json +@@ -45,6 +45,11 @@ + "type": "dashboard", + "name": "PCP Vector: Microsoft SQL Server", + "path": "dashboards/pcp-vector-mssql-server.json" ++ }, ++ { ++ "type": "dashboard", ++ "name": "PCP Vector: UWSGI Overview", ++ "path": "dashboards/pcp-vector-uwsgi-overview.json" + } + ] + } +-- +2.45.2 + diff --git a/create_bundles.sh b/create_bundles.sh index 278046b..ddc81ea 100755 --- a/create_bundles.sh +++ b/create_bundles.sh @@ -26,6 +26,9 @@ go mod vendor awk '$2 ~ /^v/ && $4 != "indirect" {print "Provides: bundled(golang(" $1 ")) = " substr($2, 2)}' go.mod | \ sed -E 's/=(.*)-(.*)-(.*)/=\1-\2.\3/g' > "../${VENDOR_TAR}.manifest" +# patch in uwsgi dashboard before webpack compilation +patch -p1 --fuzz=0 < ../0002-add-uwsgi-dashboard.patch + # Vendor Node.js dependencies patch -p1 --fuzz=0 < ../0001-remove-unused-frontend-crypto.patch yarn install --frozen-lockfile diff --git a/grafana-pcp.spec b/grafana-pcp.spec index 49df673..2637ee7 100644 --- a/grafana-pcp.spec +++ b/grafana-pcp.spec @@ -16,20 +16,20 @@ end} Name: grafana-pcp Version: 5.1.1 -Release: 3%{?dist} +Release: 8%{?dist} Summary: Performance Co-Pilot Grafana Plugin License: ASL 2.0 URL: https://github.com/performancecopilot/grafana-pcp Source0: https://github.com/performancecopilot/grafana-pcp/archive/v%{version}/%{name}-%{version}.tar.gz -Source1: grafana-pcp-vendor-%{version}-1.tar.xz +Source1: grafana-pcp-vendor-%{version}-8.tar.xz # Note: In case there were no changes to this tarball, the NVR of this tarball # lags behind the NVR of this package. %if %{compile_frontend} == 0 # Source2 contains the precompiled frontend and dashboards # Note: In case there were no changes to this tarball, the NVR of this tarball # lags behind the NVR of this package. -Source2: grafana-pcp-webpack-%{version}-1.tar.gz +Source2: grafana-pcp-webpack-%{version}-8.tar.gz %endif Source3: create_bundles.sh Source4: build_frontend.sh @@ -37,6 +37,7 @@ Source5: list_bundled_nodejs_packages.py Source6: create_bundles_in_container.sh Patch1: 0001-remove-unused-frontend-crypto.patch +Patch2: 0002-add-uwsgi-dashboard.patch # Intersection of go_arches and nodejs_arches ExclusiveArch: %{grafanapcp_arches} @@ -131,7 +132,7 @@ bpftrace scripts from pmdabpftrace(1), as well as several dashboards. %endif %patch -P 1 -p1 - +%patch -P 2 -p1 %build # Build frontend data sources @@ -190,6 +191,9 @@ yarn test %changelog +* Mon Jul 8 2024 Sam Feifer - 5.1.1-8 +- Add a premade uwsgi dashboard for the vector datasource + * Tue May 7 2024 Sam Feifer 5.1.1-3 - bump release number diff --git a/sources b/sources index 0bf8c9f..604ed7c 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ SHA512 (grafana-pcp-5.1.1.tar.gz) = 697dfbe1e5cd5d66080197dab2798af0965747a4460d15e62c3497f64674bcc77fc776ac5c95cb7043dcf534e8e0eae47afd7500a5851a0d35ad1062e8d4ac2e -SHA512 (grafana-pcp-webpack-5.1.1-1.tar.gz) = 0c71a9c1fc87a58273a5b4d06c0482e2e059bd9aee1dfb200f5a1e8c52f82af1394bdccfbf5c25d20b021e58db7c2185d0c14f85d77f00a51926f80dfa0dade5 -SHA512 (grafana-pcp-vendor-5.1.1-1.tar.xz) = 8a10a72ef9dd3622d02f7418c98b8e34eb1c978bfac9c0e29bd3099a1c1fc80b61375d6947d29a85256614ce4e01021af38a8d0f4f735daf594e6789169a32bf +SHA512 (grafana-pcp-webpack-5.1.1-8.tar.gz) = 77e9e6f306425983808f414662cbb2db9077e7c9fcca36a33033e56b527b339d40415df54fb63465ddd701861f89da19b7f1524eb5aa05c1425f3870e017d467 +SHA512 (grafana-pcp-vendor-5.1.1-8.tar.xz) = 239eab5405d42769c8f77f408de06588c299ee0df7ea22c5509a32274380670dad560279cff27ebf2b1814bf293dda27c772989b3f6a0777c591397a07583f04