{"id":13651202,"url":"https://github.com/ferd/vmstats","last_synced_at":"2025-05-16T16:07:47.823Z","repository":{"id":2582772,"uuid":"3563867","full_name":"ferd/vmstats","owner":"ferd","description":"tiny Erlang app to generate information on the Erlang VM","archived":false,"fork":false,"pushed_at":"2020-12-31T07:27:30.000Z","size":336,"stargazers_count":253,"open_issues_count":1,"forks_count":39,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-05-13T05:25:32.604Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ferd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-02-27T19:36:13.000Z","updated_at":"2025-03-23T02:07:35.000Z","dependencies_parsed_at":"2022-08-29T04:52:40.312Z","dependency_job_id":null,"html_url":"https://github.com/ferd/vmstats","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferd%2Fvmstats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferd%2Fvmstats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferd%2Fvmstats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferd%2Fvmstats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ferd","download_url":"https://codeload.github.com/ferd/vmstats/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254564127,"owners_count":22092122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T02:00:46.435Z","updated_at":"2025-05-16T16:07:47.799Z","avatar_url":"https://github.com/ferd.png","language":"Erlang","readme":"# vmstats\n\n[![CircleCI](https://circleci.com/gh/ferd/vmstats.svg?style=svg)](https://circleci.com/gh/ferd/vmstats)\n\nvmstats is a tiny Erlang app that gathers metrics on the Erlang VM and sends them to a configurable sink (e.g., StatsD).\n\n## Features\n\nThe different metrics that vmstats gathers include:\n - the `error_logger` queue length\n - the number of modules loaded\n - the number of processes\n - the process limit\n - the length of the run queue\n - the scheduler usage as a percentage (disabled by default)\n - memory used for ETS tables, atoms, processes, binaries and the total memory\n - garbage collection count per interval\n - words reclaimed in garbage collections per interval\n - reduction increment count per interval\n - IO data (bytes in and out) per interval\n - global amount of messages in queues on a node\n - the VM uptime\n\n## Usage\n\nvmstats can be built using `rebar3`:\n\n```sh\n$ rebar3 compile\n```\n\nOnce you have vmstats set up, just add it to the list of applications to start\nin order to start gathering data. You'll need a sink (a module that implements\nthe `vmstats_sink` behaviour) to send metrics to.\n\n### Configuration\n\nThe following is a list of the possible options for the configuration of the\n`vmstats` app:\n\n  * `sink` - (module) a module that implements the `vmstats_sink` behaviour; vmstats metrics will be collected through this module.\n  * `base_key` - (string) every metric name is prepended with this base key. Defaults to `\"vmstats\"`.\n  * `key_separator` - (char) used as a separator between the parts of metric keys. Defaults to `$.`.\n  * `interval` - (integer) the time (in milliseconds) between metric gatherings. Defaults to `1000` (1s).\n  * `sched_time` - (boolean) whether to gather statistics about scheduler wall time. Defaults to `true`.\n  * `memory_metrics` - (proplist of metric and key) what fields to collect statistics for.\n                       Available fields can be found [here](http://erlang.org/doc/man/erlang.html#memory-1).\n                       Default list is `[{total, total}, {processes_used, procs_used}, {atom_used, atom_used}, {binary, binary}, {ets, ets}]`.\n\n### `vmstats_sink` behaviour\n\nvmstats sinks must implement the `vmstats_sink` behaviour. This behaviour only\nspecifies one function:\n\n```erlang\n-callback collect(Type :: counter | gauge | timing,\n                  Key :: iodata(),\n                  Value :: term()) -\u003e ok.\n```\n\n## I was basing myself on 'master' and stuff started breaking!\n\nThat's because you should use tags for stable versions instead! The [changelog](CHANGELOG.md) should let you know what to expect.\n\n## Contributing\n\nMake changes and be sure to test them (`$ rebar3 eunit`).\n\n## Changelog\n\nSee the [CHANGELOG.md file](CHANGELOG.md).\n\n## License\n\nSee the [license file](LICENSE).\n","funding_links":[],"categories":["Monitoring","Metrics"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferd%2Fvmstats","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fferd%2Fvmstats","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferd%2Fvmstats/lists"}