https://github.com/emitter-io/stats
Metrics package used for monitoring emitter.io cluster
https://github.com/emitter-io/stats
emitter golang histogram metrics monitoring mqtt stats
Last synced: about 1 year ago
JSON representation
Metrics package used for monitoring emitter.io cluster
- Host: GitHub
- URL: https://github.com/emitter-io/stats
- Owner: emitter-io
- License: mit
- Created: 2018-05-21T14:50:40.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2020-02-11T02:20:14.000Z (over 6 years ago)
- Last Synced: 2024-06-21T06:41:05.130Z (almost 2 years ago)
- Topics: emitter, golang, histogram, metrics, monitoring, mqtt, stats
- Language: Go
- Size: 132 KB
- Stars: 7
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Emitter Stats
This golang package is used for monitoring [emitter.io](emitter.io) cluster. This provides a tight binary compression and a single histogram/counter abstraction in order to deal with various kinds of system monitoring. This package is compatible with GopherJS (snapshot-only) and hence can also be compiled to javascript. Documentation is available on [go doc](https://godoc.org/github.com/emitter-io/stats).
[](https://gitter.im/emitter-io/public?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://ci.appveyor.com/project/Kelindar/stats)
[](https://coveralls.io/github/emitter-io/stats?branch=master)
[](https://goreportcard.com/report/github.com/emitter-io/stats)
## Installation
```
go get -u github.com/emitter-io/stats
```
## Quick Start
The package itself provides a general-purpose monitoring capabilities, with tight encoding using our [binary codec](https://github.com/kelindar/binary). While it's primarily have been built for emitter, it can be used anywhere.
Typical usage consists of creating a metric container, measuring various metrics and sending snapshots over the wire.
```
rand.Seed(time.Now().UnixNano())
// Create a container
m := stats.New()
// Measure few metrics
m.Measure("my.metric.1", rand.Int31n(1000))
m.Measure("my.metric.2", rand.Int31n(1000))
// Create a snapshot which can be transferred over the wire
bytes := m.Snapshot()
// Restore a snapshot from binary
v, err := stats.Restore(bytes)
// Get the values back
percentiles := v[0].Quantile(50, 90, 95, 99)
average := v[0].Mean()
count := v[0].Count()
```