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.
Go to file
Kristin Laemmert 50244ed4a1
Experimental Feature Toggle: databaseReadReplica (#89232)
This adds a version of the SQLStore that includes a ReadReplica. The primary DB can be accessed directly - from the caller's standpoint, there is no difference between the SQLStore and ReplStore unless they wish to explicitly call the ReadReplica() and use that for the DB sessions.

Currently only the stats service GetSystemStats and GetAdminStats are using the ReadReplica(); if it's misconfigured or if the databaseReadReplica feature flag is not turned on, it will fall back to the usual (SQLStore) behavior.

Testing requires a database and read replica - the replication should already be configured. I have been testing this locally with a docker mysql setup (https://medium.com/@vbabak/docker-mysql-master-slave-replication-setup-2ff553fceef2) and the following config:

[feature_toggles]
databaseReadReplica = true

[database]
type = mysql
name = grafana
user = grafana
password = password
host = 127.0.0.1:3306

[database_replica]
type = mysql
name = grafana
user = grafana
password = password
host = 127.0.0.1:3307
2024-06-18 11:07:15 -04:00
.bingo ci(chore): Lint all Go code, upgrade golangci-lint action (#89221) 2024-06-14 15:42:09 +03:00
.changelog-archive Update links to default Grafana branch (#83025) 2024-02-29 17:08:45 +02:00
.github Move RecentlyDeleted into browse-dashboards (#89214) 2024-06-14 17:25:19 +03:00
.husky Chore: Remove colours from old husky cleanup pre-commit hook (#73395) 2023-08-18 13:10:18 +00:00
.vim Chore: Upgrade yarn and editor sdks (#42847) 2021-12-08 14:40:24 +01:00
.vscode Ensure running server from VSCode enables dev mode (#88986) 2024-06-10 10:30:03 -05:00
.yarn Storybook: Bump to 8.1.6 (#88899) 2024-06-07 14:31:31 +02:00
conf Alerting: Configure recording rule writer from config.ini (#89056) 2024-06-12 16:04:46 -04:00
contribute Plugin extensions: Add e2e tests (#89048) 2024-06-14 13:41:17 +02:00
cue.mod Introduce "scuemata" system for CUE-based specification of Grafana objects (#32527) 2021-04-08 01:11:11 -07:00
devenv Tooltip: Add tooltip support to Histogram (#89196) 2024-06-14 11:23:25 -05:00
docs Experimental Feature Toggle: databaseReadReplica (#89232) 2024-06-18 11:07:15 -04:00
e2e E2E: Add SMTP tester (#88392) 2024-06-18 14:32:19 +02:00
emails Refactor: Email verification (#84393) 2024-03-14 13:25:28 +01:00
grafana-mixin DashboardSchema: Remove old unused legacy props style and timepicker.enable (#73879) 2023-08-28 12:18:17 +02:00
hack QueryService: Use types from sdk (#84029) 2024-03-08 18:12:59 +02:00
kinds fix: set schemaVersion on dashboard schema (CUE) (#87712) 2024-05-28 16:16:20 +02:00
local Packaging: Dockerfile copy local folder (#64766) 2023-03-14 14:44:11 -05:00
packages Experimental Feature Toggle: databaseReadReplica (#89232) 2024-06-18 11:07:15 -04:00
packaging Docker: Fix renderer plugin in custom Dockerfile (#88223) 2024-05-30 10:27:26 +02:00
pkg Experimental Feature Toggle: databaseReadReplica (#89232) 2024-06-18 11:07:15 -04:00
plugins-bundled Chore: Delete Input Datasource (#83163) 2024-03-18 09:48:19 +01:00
public Scenes: Setting default_home_dashboard_path returns blank page and no controls (#89304) 2024-06-18 16:17:59 +02:00
scripts Fix typo in dashboard-variables destinations and also use Grafana Cloud docs if they exist (#89244) 2024-06-14 17:27:22 +01:00
tools Image Rendering: Remove PhantomJS support (#23460) 2020-04-15 22:17:41 +02:00
.betterer.results Scenes: Be able to show/hide dashboard controls in Kiosk mode (#88920) 2024-06-17 17:58:48 +02:00
.betterer.results.json Table Panel: Move inspector into drawer component (#88196) 2024-05-30 03:33:05 +07:00
.betterer.ts Chore: Add no-untranslated-strings rule to betterer (#88479) 2024-05-30 12:45:22 +02:00
.bra.toml Make: Speed up make run by removing redundant make go-gen in .bra (#84827) 2024-03-20 16:39:49 +01:00
.browserslistrc Babel: Target more modern browsers, updates browserlistrc (#32573) 2021-04-01 10:32:00 +02:00
.dockerignore copy .github folder into golang build container since we rely on codeowners (#62122) 2023-01-25 10:31:16 -05:00
.drone.star Chore: Upgrade Go to 1.21.5 (#79329) 2023-12-15 10:36:49 +01:00
.drone.yml CI: Trigger release pr workflow when a release is completed (#89062) 2024-06-12 08:48:50 -05:00
.editorconfig Chore: Enable PR testing in Drone (#26189) 2020-07-10 16:09:21 +02:00
.eslintignore Plugin extensions: Add e2e tests (#89048) 2024-06-14 13:41:17 +02:00
.eslintrc Chore: Enable no-unreduced-motion and fix errors (#86572) 2024-04-29 13:12:36 +01:00
.gitattributes CRLF (#28822) 2020-11-05 17:20:40 +01:00
.gitignore Chore: Allow using the Go race detector locally (#88380) 2024-05-29 20:34:16 -03:00
.golangci.toml chore(perf): Pre-allocate where possible (enable prealloc linter) (#88952) 2024-06-14 14:16:36 -04:00
.levignore.js Adds levitate levignore configuration file to prevent breaking change notifications from expected typescript symbols (#74371) 2023-09-05 15:00:13 +02:00
.nvmrc Chore: Update to node 20 (#76097) 2023-10-26 09:34:50 +02:00
.pa11yci-pr.conf.js Pa11y: Decrease error thresholds for PRs (#85178) 2024-03-27 12:29:54 +01:00
.pa11yci.conf.js Login: Improve accessibility of Login form (#78652) 2023-11-28 10:22:20 +00:00
.prettierignore I18n: Support for Enterprise translations (#86215) 2024-04-18 16:25:27 +01:00
.prettierrc.js Toolkit: Remove deprecated plugin:build (#67485) 2023-04-28 14:33:16 +02:00
.trivyignore CI: Add Trivy GitHub Action (#88987) 2024-06-10 16:53:48 -04:00
.yarnrc.yml Chore: Remove msagl related config in yarnrc (#88292) 2024-05-24 17:32:46 +02:00
build.go Chore: move build command to importable package (#38726) 2021-09-03 11:24:21 -05:00
CHANGELOG.md Changelog: Updated changelog for 10.4.4 (#89173) 2024-06-13 18:08:26 +03:00
CODE_OF_CONDUCT.md Fixing typos (#70487) 2023-06-22 09:43:38 +01:00
CONTRIBUTING.md Docs: Fix link to developing plugins (#75816) 2023-10-03 09:57:53 -05:00
crowdin.yml I18n: Fix path for Crowdin upload (#81733) 2024-02-05 13:33:37 +01:00
cypress.config.js E2E: Add SMTP tester (#88392) 2024-06-18 14:32:19 +02:00
Dockerfile Chore: bump Go to 1.22.4 (#88794) 2024-06-05 14:29:27 -04:00
embed.go Core: Remove thema and kindsys dependencies (#84499) 2024-03-21 11:11:29 +01:00
go.mod Zanzana: Initial work to run openFGA as embedded or standalone service (#89211) 2024-06-18 10:04:18 +02:00
go.sum Zanzana: Initial work to run openFGA as embedded or standalone service (#89211) 2024-06-18 10:04:18 +02:00
go.work CI: Make pkg/build its own module, remove unused Grafana modules in go.mo… (#89243) 2024-06-14 19:35:30 +03:00
go.work.sum Experimental Feature Toggle: databaseReadReplica (#89232) 2024-06-18 11:07:15 -04:00
GOVERNANCE.md Сorrection of spelling errors (#83565) 2024-03-01 11:00:15 +01:00
HALL_OF_FAME.md Docs: Update HALL_OF_FAME.md (#79775) 2024-02-26 15:04:58 +01:00
jest.config.js NodeGraph: Add msagl and the layered layout code (#88375) 2024-05-28 17:04:03 +02:00
latest.json Release: Deprecate latest.json and replace with api call to grafana.com (#80537) 2024-01-16 11:19:32 +00:00
lefthook.rc Chore: Replace Husky/Lint-staged with Lefthook (#66608) 2023-08-17 09:56:52 +00:00
lefthook.yml Chore: Remove i18n psuedo precommit hook (#86840) 2024-04-24 13:08:19 +02:00
lerna.json Release: Bump version to 11.2.0-pre (#89184) 2024-06-13 15:08:07 -05:00
LICENSE Re-license Grafana to AGPLv3 (#33184) 2021-04-20 19:03:30 +02:00
LICENSING.md Grafana packages: Remove E2E workspace (#86416) 2024-04-25 07:12:43 +02:00
MAINTAINERS.md Update codeowners (#73159) 2023-09-28 11:31:26 -07:00
Makefile AuthZ: embed an authorization server (#89018) 2024-06-13 11:41:35 +02:00
NOTICE.md Prettier: Fix all markdown files and add markdown files to CI verify step (#39776) 2021-09-29 14:34:40 +02:00
nx.json Chore: Bump Nx to 18.1.x (#85185) 2024-03-28 09:36:35 +01:00
package.json E2E: Add SMTP tester (#88392) 2024-06-18 14:32:19 +02:00
playwright.config.ts E2E: Rewrite mysql tests to playwright (#83424) 2024-03-19 23:07:48 +01:00
project.json Build: Set Nx inputs for theme-generate (#84761) 2024-05-22 17:07:50 +02:00
README.md Docs: Invert logo color for dark theme in README (#76012) 2023-11-07 09:54:12 +00:00
ROADMAP.md Prettier: Fix all markdown files and add markdown files to CI verify step (#39776) 2021-09-29 14:34:40 +02:00
SECURITY.md Docs: Update SECURITY.md (#67985) 2023-06-21 07:34:42 +01:00
stylelint.config.js Update dependency stylelint to v16 (#83252) 2024-02-23 11:56:38 +02:00
SUPPORT.md Prettier: Fix all markdown files and add markdown files to CI verify step (#39776) 2021-09-29 14:34:40 +02:00
tsconfig.json Simplify import logic for test utils 2024-04-16 12:23:50 +01:00
WORKFLOW.md Minor correction done in WORKFLOW.md (#80505) 2024-04-12 17:56:10 +02:00
yarn.lock Bump ws from 7.5.6 to 7.5.10 (#89362) 2024-06-18 17:05:43 +02:00

Grafana Logo (Light) Grafana Logo (Dark)

The open-source platform for monitoring and observability

License Drone Go Report Card

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:

Get involved

This project is tested with BrowserStack

License

Grafana is distributed under AGPL-3.0-only. For Apache-2.0 exceptions, see LICENSING.md.