Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
806cf6e
PMM-14837 Migrate grafana-dashboards to the monorepo
ademidoff Mar 17, 2026
5312e34
PMM-14837 Fix a typo
ademidoff Mar 17, 2026
b13e70e
PMM-14837 Update the Contributing guide
ademidoff Mar 22, 2026
dbf36c0
PMM-14837 Fix the token name
ademidoff Mar 22, 2026
90c04ea
PMM-14837 Provide meaningful error messages
ademidoff Mar 22, 2026
2e1fbb0
PMM-14837 Fix the script exec path
ademidoff Mar 22, 2026
eb6bc64
PMM-14837 Rename the jobs
ademidoff Mar 22, 2026
60408bd
PMM-14837 Force NodeJS v24 on the labels workflow
ademidoff Mar 22, 2026
2ddf870
PMM-14837 Remove snyk from ignored jobs
ademidoff Mar 22, 2026
2644a2c
PMM-14837 Extract plugin versions and arch to variables
ademidoff Mar 22, 2026
76f029d
PMM-14837 Add Valkey dashboards to README
ademidoff Mar 22, 2026
7f88101
PMM-14837 Remove build timestamp as redundant
ademidoff Mar 22, 2026
6ecc74f
Merge branch 'v3' into PMM-14837-move-dashboards-to-monorepo
ademidoff Mar 23, 2026
007ddbd
Merge branch 'v3' into PMM-14837-move-dashboards-to-monorepo
matejkubinec Mar 23, 2026
6fb0eda
PMM-14837 Update the contributing guide
ademidoff Mar 23, 2026
0ac9f47
Merge branch 'PMM-14837-move-dashboards-to-monorepo' of ssh://github.…
ademidoff Mar 23, 2026
0c8802a
PMM-14837 Fix the panels directory path
ademidoff Mar 24, 2026
3c98241
PMM-14837 Fix dir attributes
ademidoff Mar 24, 2026
47a0e18
PMM-14837 Remove redundant spec directives
ademidoff Mar 24, 2026
d5c9062
PMM-14837 Sync updates with grafana-dashboards
ademidoff Apr 2, 2026
1cfb415
PMM-14837 Fix the API test
ademidoff Apr 2, 2026
29b79e0
Merge branch 'v3' into PMM-14837-move-dashboards-to-monorepo
ademidoff Apr 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 5 additions & 6 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
* @percona/pmm-review-be
/docs/ @percona/pmm-docs
/docs/ @percona/pmm-docs @percona/pmm-review-be
/documentation/ @percona/pmm-docs
/ui/ @percona/pmm-review-fe
/agent/agents/postgres/ @JiriCtvrtka @percona/pmm-review-be
/dashboards/ @nailya @percona/pmm-review-fe
/api/ @percona/pmm-review-be
/managed/services/checks/ @idoqo @percona/pmm-review-be
**/go.mod @percona/pmm-review-dependency @percona/pmm-review-be
**/Dockerfile @percona/pmm-review-dependency @percona/pmm-review-be
/.github/ @percona/pmm-review-dependency @percona/pmm-review-be
/agent/agents/postgres/ @JiriCtvrtka @percona/pmm-review-be
**/go.mod @percona/pmm-review-be
/.github/ @percona/pmm-review-be
6 changes: 3 additions & 3 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ PMM-0
Link to the Feature Build: SUBMODULES-0


If this PR adds, removes or alters one or more API endpoints, please review and add or update the relevant [API documentation](https://github.com/percona/pmm/tree/v3/docs/api) as well:
If this PR adds, removes or alters one or more API endpoints, please review and update the relevant [API documentation](https://github.com/percona/pmm/tree/v3/docs/api) as well:

- [ ] API Docs updated

If this PR is related to some other PRs in this or other repositories, please provide links to those PRs:
If this PR is related to other PRs, contributions, or ongoing work in this or other repositories, please reference them here:

- Links to related pull requests (optional).
- Links to related work items (optional).
1 change: 1 addition & 0 deletions .github/workflows/admin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ on:
- v[0-9]+.[0-9]+.[0-9]+*
paths-ignore:
- "documentation/**"
- "dashboards/**"

pull_request:
paths-ignore:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/agent.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ on:
- v[0-9]+.[0-9]+.[0-9]+*
paths-ignore:
- "documentation/**"
- "dashboards/**"

pull_request:
paths-ignore:
Expand Down
153 changes: 153 additions & 0 deletions .github/workflows/dashboards.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
name: Dashboards
on:
pull_request:
paths:
- "dashboards/**"

permissions:
contents: read

jobs:
build:
name: Build
runs-on: ubuntu-latest
permissions:
actions: write

steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install NodeJS
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: "22"
cache: "yarn"
cache-dependency-path: dashboards/pmm-app/yarn.lock

- name: Install deps
run: make -C dashboards install

- name: Build Grafana Dashboards
run: make -C dashboards build

- name: Upload the build artefacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: build-dist
path: dashboards/pmm-app/dist/
if-no-files-found: error

tests:
name: Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install NodeJS
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: "22"
cache: "yarn"
cache-dependency-path: dashboards/pmm-app/yarn.lock

- name: Install deps
run: make -C dashboards install

- name: Run lint
run: cd dashboards/pmm-app && yarn lint:check

- name: Run unit tests
run: cd dashboards/pmm-app && yarn test:ci

- name: Upload unit test coverage
if: github.event.pull_request.head.repo.full_name == github.repository
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
with:
fail_ci_if_error: true
flags: unittests # optional
name: codecov-umbrella
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true

check:
name: Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

- name: Get changed dashboard files
id: changed
run: |
git diff --name-only ${{ github.event.pull_request.base.sha }} HEAD \
| grep -E '^dashboards/dashboards/.*\.json$' \
| sort -u > changed_dashboards.txt || true
echo "count=$(wc -l < changed_dashboards.txt | tr -d ' ')" >> $GITHUB_OUTPUT

- name: Run cleanup check per dashboard
if: steps.changed.outputs.count != '0'
run: |
# Ensure we don't exit immediately on the python check
echo "## 📊 Dashboard cleanup results" >> $GITHUB_STEP_SUMMARY
echo "| Dashboard | Status | Action |" >> $GITHUB_STEP_SUMMARY
echo "|-----------|--------|--------|" >> $GITHUB_STEP_SUMMARY

has_failed=0
# The [ -n "$f" ] ensures the last line is read even if it lacks a newline
while IFS= read -r f || [ -n "$f" ]; do
[ -z "$f" ] && continue

if python3 dashboards/misc/cleanup-dash.py --check-only "$f"; then
echo "| \`$f\` | ✅ OK | - |" >> $GITHUB_STEP_SUMMARY
else
echo "| \`$f\` | ❌ Requires cleanup | \`python3 dashboards/misc/cleanup-dash.py $f\` |" >> $GITHUB_STEP_SUMMARY
echo "::error file=$f,title=Cleanup required::Dashboard needs cleanup. Run: python3 dashboards/misc/cleanup-dash.py $f"
has_failed=1
fi
done < changed_dashboards.txt

if [ "$has_failed" -ne 0 ]; then
echo "" >> $GITHUB_STEP_SUMMARY
echo "> [!CAUTION]" >> $GITHUB_STEP_SUMMARY
echo "> Some dashboards require cleanup. See table above." >> $GITHUB_STEP_SUMMARY
exit 1
fi

workflow_success:
needs: [tests, build]
name: Slack Notification success
runs-on: ubuntu-latest
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_TOKEN }}
SLACK_CHANNEL: "pmm-ci"
SLACK_USERNAME: "PR bot"
SLACK_ICON_EMOJI: ":octocat:"
SLACK_COLOR: "#00FF00"
SLACK_MESSAGE: "Workflow succeded: ${{ github.event.inputs.repo || github.repository }}:${{ github.event.inputs.branch || github.head_ref }}"
SLACK_FOOTER: "Please check the Actions URL ^"

steps:
- name: Slack Notification
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3

workflow_failure:
if: ${{ failure() }}
needs: [tests, build]
name: Slack Notification failure
runs-on: ubuntu-latest
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_TOKEN }}
SLACK_CHANNEL: "pmm-ci"
SLACK_USERNAME: "PR bot"
SLACK_ICON_EMOJI: ":octocat:"
SLACK_COLOR: "#FF0000"
SLACK_MESSAGE: "Workflow failed: ${{ github.event.inputs.repo || github.repository }}:${{ github.event.inputs.branch || github.head_ref }}"
SLACK_FOOTER: "Please check the Actions URL ^"

steps:
- name: Slack Notification
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3
4 changes: 4 additions & 0 deletions .github/workflows/labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ permissions:
jobs:
label:
runs-on: ubuntu-latest

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

steps:
- name: Add documentation label
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,14 @@ on:
- pmm-*
tags:
- v[0-9]+.[0-9]+.[0-9]+*
paths-ignore:
- "documentation/**"
- "dashboards/**"

pull_request:
pull_request:
paths-ignore:
- "documentation/**"
- "dashboards/**"

permissions:
contents: read
Expand Down Expand Up @@ -151,7 +157,7 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
interval: 45
timeout: 1200
ignored: "license/snyk (Percona Github Org), security/snyk (Percona Github Org), linkspector"
ignored: "linkspector"
ref: ${{ github.event.pull_request.head.sha || github.sha }}

workflow_success:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/managed.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ on:
- v[0-9]+.[0-9]+.[0-9]+*
paths-ignore:
- "documentation/**"
- "dashboards/**"

pull_request:
paths-ignore:
Expand All @@ -17,6 +18,7 @@ on:
- 'api-tests/**'
- 'docs/**'
- "documentation/**"
- "dashboards/**"
- 'qan-api2/**'
- 'update/**'
- 'vmproxy/**'
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/qan-api2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ on:
- v[0-9]+.[0-9]+.[0-9]+*
paths-ignore:
- "documentation/**"
- "dashboards/**"

pull_request:
paths-ignore:
Expand All @@ -18,6 +19,7 @@ on:
- "api-tests/**"
- "docs/**"
- "documentation/**"
- "dashboards/**"
- "managed/**"
- "update/**"
- "vmproxy/**"
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/ui.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ on:
- v[0-9]+.[0-9]+.[0-9]+*
paths-ignore:
- "documentation/**"
- "dashboards/**"

pull_request:
paths-ignore:
Expand All @@ -18,8 +19,8 @@ on:
- "api-tests/**"
- "docs/**"
- "documentation/**"
- "dashboards/**"
- "managed/**"
- "managed-dev/**"
- "qan-api2/**"
- "vmproxy/**"
- "update/**"
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/vmproxy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ on:
- v[0-9]+.[0-9]+.[0-9]+*
paths-ignore:
- "documentation/**"
- "dashboards/**"

pull_request:
paths-ignore:
Expand All @@ -18,6 +19,7 @@ on:
- "api-tests/**"
- "docs/**"
- "documentation/**"
- "dashboards/**"
- "managed/**"
- "qan-api2/**"
- "update/**"
Expand Down
32 changes: 16 additions & 16 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,26 +23,29 @@ This project is built from several repositories:

#### Backends

* [percona/pmm-managed](https://github.com/percona/pmm/tree/main/managed) manages configuration of PMM server components (VictoriaMetrics, Grafana, etc.) and exposes API for that. APIs are used by [pmm-admin](https://github.com/percona/pmm/tree/main/admin)
* [percona/qan-api](https://github.com/percona/pmm/tree/main/qan-api2) query analytics API
* [percona/pmm-managed](https://github.com/percona/pmm/tree/v3/managed) manages configuration of PMM server components (VictoriaMetrics, Grafana, etc.) and exposes API for that. APIs are used by [pmm-admin](https://github.com/percona/pmm/tree/v3/admin)
* [percona/qan-api](https://github.com/percona/pmm/tree/v3/qan-api2) query analytics API

#### Frontends

* [percona/grafana-dashboards](https://github.com/percona/grafana-dashboards) PMM dashboards for database monitoring
* [percona/grafana](https://github.com/percona/grafana) user interface for PMM
* [percona/grafana](https://github.com/percona/grafana) user interface for PMM (Grafana-based)
* [percona/ui](https://github.com/percona/pmm/tree/v3/ui) user interface for PMM (own)
* [percona/dashboards](https://github.com/percona/pmm/tree/v3/dashboards) PMM dashboards for database monitoring

### PMM Client

* [percona/pmm-agent](https://github.com/percona/pmm/tree/main/agent) monitoring agent for PMM. Runs exporters, and VMAgent that collects data from exporters and send to VictoriaMetrics
* [percona/pmm-admin](https://github.com/percona/pmm/tree/main/admin) admin tool for PMM to manage service that should be monitored by PMM
* [percona/pmm-agent](https://github.com/percona/pmm/tree/v3/agent) monitoring agent for PMM. Runs exporters, and VMAgent that collects data from exporters and send to VictoriaMetrics
* [percona/pmm-admin](https://github.com/percona/pmm/tree/v3/admin) admin tool for PMM to manage service that should be monitored by PMM
* [percona/node_exporter](https://github.com/percona/node_exporter) exports machine's metrics
* [percona/mysqld_exporter](https://github.com/percona/mysqld_exporter) exports MySQL server's metrics
* [percona/mongodb_exporter](https://github.com/percona/mongodb_exporter) exports MongoDB server's metrics
* [percona/postgres_exporter](https://github.com/percona/postgres_exporter) exports PostgreSQL server's metrics
* [percona/valkey_exporter](https://github.com/oliver006/redis_exporter) exports Valkey server's metrics
* [percona/proxysql_exporter](https://github.com/percona/proxysql_exporter) exports ProxySQL server's metrics
* [percona/rds_exporter](https://github.com/percona/rds_exporter) exports metrics from RDS
* [percona/azure_exporter](https://github.com/percona/azure_metrics_exporter) exports metrics from Azure
* [percona/percona-toolkit](https://github.com/percona/percona-toolkit) is a collection of advanced command-line tools to perform a variety of MySQL and system tasks that are too difficult or complex to perform manually
* [nomad](https://github.com/hashicorp/nomad) is a flexible cluster scheduler used to orchestrate PMM Client components on the monitored nodes


### Building and Packaging
Expand All @@ -53,19 +56,18 @@ This project is built from several repositories:
### QA, Testing and Documentation
* [percona/pmm-ui-tests](https://github.com/percona/pmm-ui-tests)
* [percona/pmm-qa](https://github.com/percona/pmm-qa)
* [percona/documentation](https://github.com/percona/pmm/tree/main/documentation)

## API Reference Documentation

You can review the PMM API definition [here](https://percona-pmm.readme.io/).

It is generated from our `.proto` [files](./api/) using a special [OpenAPI v2 tool](https://github.com/grpc-ecosystem/grpc-gateway/tree/master/protoc-gen-openapiv2) and additional API
documentation source files which are located in the `docs/api/` directory. The
content and structure of these is formatted using [Markdown markup
language](https://www.markdownguide.org/) and published on the
[ReadMe.com](https://readme.com/) service.
It is generated from our `.proto` [files](./api/) using a special [OpenAPI v2 tool](https://github.com/grpc-ecosystem/grpc-gateway/tree/master/protoc-gen-openapiv2) and additional API documentation source files which are located in the `docs/api/` directory. The
content and structure of these is formatted using [Markdown markup language](https://www.markdownguide.org/) and published on
[ReadMe.com](https://readme.com/).

You can edit the content using your favorite editor (ideally one that supports
previewing MarkDown content, e.g. Microsoft Visual Studio Code).
previewing Markdown content, e.g. Microsoft Visual Studio Code).

If you need to create a new file, copy one of the existing `*.md` documents in
the folder to maintain the overall structure and format.
Expand All @@ -77,7 +79,7 @@ letters and dashes).
Make sure to create a unique `slug` for your file, for example: `slug:
authentication`.

**Header rules**: in Markdown, the level of a header line is defined by the
**Header rules**: in Markdown, the level of the header line is defined by the
number of hash signs, example: `###` would be equivalent to an H3 header. Please
avoid using H1 headers. Your first-level header must be H2. The rest of the
headers can by anything between H3 and H6.
Expand Down Expand Up @@ -135,7 +137,7 @@ Exporters by themselves are independent applications, so each of them contains i

### UI

See [Grafana Dashboards Contribution Guide](https://github.com/percona/grafana-dashboards/blob/main/CONTRIBUTING.md).
See [Grafana Dashboards Contribution Guide](https://github.com/percona/pmm/tree/v3/dashboards/CONTRIBUTING.md).

## Tests

Expand Down Expand Up @@ -209,15 +211,13 @@ To make the review process effective, we use a mixed approach:
* for repos that don't have CODEOWNERS
* add reviewers as follows:
* add `pmm-review-fe` for UI/UX reviews
* add `pmm-review-exporters` for exporter reviews [see PMM Client](#pmm-client)
* add `pmm-review-be` for backend reviews
* if you know exactly who should review your code, add them to the review


| Team | Description | Members |
| -------------------- | -------------------------------------------------------------- | ------- |
| pmm-review-fe | UI reviewers of PRs to [FrontEnd repos](#frontends) | [FE team](https://github.com/orgs/percona/teams/pmm-review-fe/members) |
| pmm-review-exporters | exporter reviewers of PRs to [PMM Client](#pmm-client) | [Exporters team](https://github.com/orgs/percona/teams/pmm-review-exporters/members) |
| pmm-review-be | reviewers of backend (Go) PRs | [BE team](https://github.com/orgs/percona/teams/pmm-review-be/members) |
| PMM Admins | reviewers that could use admins rights to force merge or change repo settings | [PMM Admin team](https://github.com/orgs/percona/teams/pmm-admins/members) |

Expand Down
Loading
Loading