solana/metrics
Pavel Strakhov 65227f44dc
Optimize RPC pubsub for multiple clients with the same subscription (#18943)
* reimplement rpc pubsub with a broadcast queue

* update tests for new pubsub implementation

* fix: fix review suggestions

* chore(rpc): add additional pubsub metrics

* integrate max subscriptions check into SubscriptionTracker to reduce locking

* separate subscription control from tracker

* limit memory usage of items in pubsub broadcast queue, improve error handling

* add more pubsub metrics

* add final count metrics to pubsub

* add metric for total number of subscriptions

* fix small review suggestions

* remove by_params from SubscriptionTracker and add node_progress_watchers map instead

* add subscription tracker tests

* add metrics for number of pubsub notifications as a counter

* ignore clippy lint in TokenCounter

* fix underflow in token counter

* reduce queue capacity in pubsub tests

* fix(rpc): fix test timeouts

* fix race in account subscription test

* Add RpcSubscriptions::new_for_tests

Co-authored-by: Pavel Strakhov <p.strakhov@iconic.vc>
Co-authored-by: Nikita Podoliako <n.podoliako@zubr.io>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2021-09-17 13:40:14 -06:00
..
scripts Merge pull request from GHSA-8v47-8c53-wwrc 2021-04-13 00:28:08 -06:00
src Optimize RPC pubsub for multiple clients with the same subscription (#18943) 2021-09-17 13:40:14 -06:00
.gitignore tmp dirs target to farf (#5079) 2019-07-12 18:28:42 -07:00
Cargo.toml chore: bump env_logger from 0.8.4 to 0.9.0 (#18690) 2021-07-15 17:49:59 +00:00
README.md Rework cluster metrics dashboard to support the modern clusters 2020-03-11 14:14:56 -07:00
grafcli.conf
publish-metrics-dashboard.sh Rework cluster metrics dashboard to support the modern clusters 2020-03-11 14:14:56 -07:00

README.md

Metrics

Testnet Grafana Dashboard

There are three versions of the testnet dashboard, corresponding to the three release channels:

The dashboard for each channel is defined from the metrics/scripts/grafana-provisioning/dashboards/cluster-monitor.json source file in the git branch associated with that channel, and deployed by automation running ci/publish-metrics-dashboard.sh.

A deploy can be triggered at any time via the New Build button of https://buildkite.com/solana-labs/publish-metrics-dashboard.

Modifying a Dashboard

Dashboard updates are accomplished by modifying metrics/scripts/grafana-provisioning/dashboards/cluster-monitor.json, manual edits made directly in Grafana will be overwritten.

  • Check out metrics to add at https://metrics.solana.com:8888/ in the data explorer.
  • When editing a query for a dashboard graph, use the "Toggle Edit Mode" selection behind the hamburger button to use raw SQL and copy the query into the text field. You may have to fixup the query with the dashboard variables like $testnet or $timeFilter, check other functioning fields in the dashboard for examples.
  1. Open the desired dashboard in Grafana
  2. Create a development copy of the dashboard by selecting Save As.. in the Settings menu for the dashboard
  3. Edit dashboard as desired
  4. Extract the JSON Model by selecting JSON Model in the Settings menu. Copy the JSON to the clipboard and paste into metrics/scripts/grafana-provisioning/dashboards/cluster-monitor.json,
  5. Delete your development dashboard: Settings => Delete

Deploying a Dashboard Manually

If you need to immediately deploy a dashboard using the contents of cluster-monitor.json in your local workspace,

$ export GRAFANA_API_TOKEN="an API key from https://metrics.solana.com:3000/org/apikeys"
$ metrics/publish-metrics-dashboard.sh (edge|beta|stable)

Note that automation will eventually overwrite your manual deploy.