Built-in metrics for monitoring AnyCable RPC server out of the box! Part of the Yabeda suite.
See AnyCable architecture on details on what AnyCable RPC server is. For monitoring of AnyCable websocket server you will need to use monitoring capabilities built in anycable-go itself.
Get sample Grafana dashboard from Grafana.com #14793 or from grafana-dashboard.json
file.
Installation
gem 'yabeda-anycable'
# Then add monitoring system adapter, e.g.:
# gem 'yabeda-prometheus'
# If you're using Rails, don't forget to add plugin for it:
# gem 'yabeda-rails'
# But if not then you should run `Yabeda.configure!` manually when your app is ready.
And then execute:
$ bundle
And that is it! AnyCable metrics are being collected!
Additionally, depending on your adapter, you may want to setup metrics export. E.g. for yabeda-prometheus:
# config/initializers/anycable.rb or elsewhere
AnyCable.configure_server do
Yabeda::Prometheus::Exporter.start_metrics_server!
end
Metrics
- Counter of total number of RPC calls:
anycable_rpc_call_count
(segmented bymethod
,command
, andstatus
) - Histogram of RPC call duration:
anycable_rpc_call_runtime
(seconds per RPC call execution, segmented bymethod
,command
, andstatus
)
status
label may be one of SUCCESS
(all is good), FAILURE
(e.g. connection rejected), or ERROR
(exception raised).
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/yabeda-rb/yabeda-anycable.
Releasing
-
Bump version number in
lib/yabeda/anycable/version.rb
In case of pre-releases keep in mind rubygems/rubygems#3086 and check version with command like
Gem::Version.new(Yabeda::AnyCable::VERSION).to_s
-
Fill
CHANGELOG.md
with missing changes, add header with version and date. -
Make a commit:
git add lib/yabeda/anycable/version.rb CHANGELOG.md version=$(ruby -r ./lib/yabeda/anycable/version.rb -e "puts Gem::Version.new(Yabeda::AnyCable::VERSION)") git commit --message="${version}: " --edit
-
Create annotated tag:
git tag v${version} --annotate --message="${version}: " --edit --sign
-
Fill version name into subject line and (optionally) some description (list of changes will be taken from changelog and appended automatically)
-
Push it:
git push --follow-tags
-
GitHub Actions will create a new release, build and push gem into RubyGems! You're done!
License
The gem is available as open source under the terms of the MIT License.