mirror of
https://github.com/grafana/grafana.git
synced 2026-03-21 14:52:27 +00:00
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
alerting
analytics
business-intelligence
dashboard
data-visualization
elasticsearch
go
grafana
hacktoberfest
influxdb
metrics
monitoring
mysql
postgres
prometheus
* Provisioning: Handle _folder.json deletion in incremental sync When a _folder.json is deleted during incremental sync, the folder now transitions from a stable UID (metadata.name) back to a hash-derived UID. The sync detects the deletion, creates the folder with the new hash-based UID, re-parents all direct children, and deletes the old folder. This mirrors the UID-change handling added in the parent PR but is triggered by metadata file removal. Key changes: - planFolderMetadataChanges: also scans for FileActionDeleted on _folder.json files. When the directory still exists in git, computes the hash-based UID via ParseFolder and emits synthetic child updates for re-parenting. When the directory is gone, skips the transition (orphan cleanup handles it). - applyIncrementalChanges: extends the IsFolderMetadataFile guard to handle all actions (not just Created/Updated), so deleted metadata files are properly skipped instead of reaching RemoveResourceFromFile. - Unit tests cover planning (UID transition, directory gone, folder not in Grafana, same UID, dedup, List error) and full flow (re-parenting + old folder deletion, apply-phase skip). - Integration tests cover simple deletion, nested child folder, and combined deletion + dashboard update. Made-with: Cursor * Add integration test for re-parenting all direct children on metadata deletion Adds a test case that verifies multiple dashboards (3) and a sub-folder are all correctly re-parented from the old stable UID to the new hash-derived UID when _folder.json is deleted. The test explicitly asserts the grafana.app/folder annotation on both the child folder and every dashboard before and after the deletion. Made-with: Cursor * Fix gofmt alignment in integration test map literals Made-with: Cursor |
||
|---|---|---|
| .changelog-archive | ||
| .citools | ||
| .github | ||
| .husky | ||
| .vim | ||
| .vscode | ||
| .yarn | ||
| apps | ||
| conf | ||
| contribute | ||
| cue.mod | ||
| devenv | ||
| docs | ||
| e2e | ||
| e2e-playwright | ||
| emails | ||
| grafana-mixin | ||
| hack | ||
| kinds | ||
| kindsv2 | ||
| local | ||
| packages | ||
| packaging | ||
| pkg | ||
| public | ||
| scripts | ||
| tools | ||
| .air.toml | ||
| .bra.toml | ||
| .browserslistrc | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .golangci.yml | ||
| .ignore | ||
| .levignore.js | ||
| .madgerc | ||
| .nvmrc | ||
| .nxignore | ||
| .prettierignore | ||
| .prettierrc.js | ||
| .trivyignore | ||
| .vale.ini | ||
| .yarnrc.yml | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| crowdin.yml | ||
| cypress.config.js | ||
| Dockerfile | ||
| embed.go | ||
| eslint-suppressions.json | ||
| eslint.config.js | ||
| go.mod | ||
| go.sum | ||
| go.work | ||
| go.work.sum | ||
| GOVERNANCE.md | ||
| HALL_OF_FAME.md | ||
| i18next.config.ts | ||
| jest.config.codeowner.js | ||
| jest.config.js | ||
| latest.json | ||
| lefthook.rc | ||
| lefthook.yml | ||
| lerna.json | ||
| LICENSE | ||
| LICENSING.md | ||
| MAINTAINERS.md | ||
| Makefile | ||
| NOTICE.md | ||
| nx.json | ||
| package.json | ||
| playwright.config.ts | ||
| playwright.storybook.config.ts | ||
| project.json | ||
| README.md | ||
| relyance.yaml | ||
| ROADMAP.md | ||
| stylelint.config.js | ||
| SUPPORT.md | ||
| tsconfig.json | ||
| WORKFLOW.md | ||
| yarn.lock | ||
The open-source platform for monitoring and observability
Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data-driven culture:
- Visualizations: Fast and flexible client side graphs with a multitude of options. Panel plugins offer many different ways to visualize metrics and logs.
- Dynamic Dashboards: Create dynamic & reusable dashboards with template variables that appear as dropdowns at the top of the dashboard.
- Explore Metrics: Explore your data through ad-hoc queries and dynamic drilldown. Split view and compare different time ranges, queries and data sources side by side.
- Explore Logs: Experience the magic of switching from metrics to logs with preserved label filters. Quickly search through all your logs or streaming them live.
- Alerting: Visually define alert rules for your most important metrics. Grafana will continuously evaluate and send notifications to systems like Slack, PagerDuty, VictorOps, OpsGenie.
- Mixed Data Sources: Mix different data sources in the same graph! You can specify a data source on a per-query basis. This works for even custom datasources.
Get started
Unsure if Grafana is for you? Watch Grafana in action on play.grafana.org!
Documentation
The Grafana documentation is available at grafana.com/docs.
Contributing
If you're interested in contributing to the Grafana project:
- Start by reading the Contributing guide.
- Learn how to set up your local environment, in our Developer guide.
- Explore our beginner-friendly issues.
- Look through our style guide and Storybook.
Share your contributor experience in our feedback survey to help us improve.
Get involved
- Follow @grafana on X (formerly Twitter).
- Read and subscribe to the Grafana blog.
- If you have a specific question, check out our discussion forums.
- For general discussions, join us on the official Slack team.
This project is tested with BrowserStack.
License
Grafana is distributed under AGPL-3.0-only. For Apache-2.0 exceptions, see LICENSING.md.

