2021-08-06 17:58:40 +00:00
# peach-stats
[![Build Status ](https://travis-ci.com/peachcloud/peach-stats.svg?branch=master )](https://travis-ci.com/peachcloud/peach-stats) ![Generic badge ](https://img.shields.io/badge/version-0.1.3-<COLOR>.svg )
System statistics microservice module for PeachCloud. Provides a JSON-RPC wrapper around the [probes ](https://crates.io/crates/probes ) and [systemstat ](https://crates.io/crates/systemstat ) crates.
### JSON-RPC API
| Method | Description | Returns |
| --- | --- | --- |
| `cpu_stats` | CPU statistics | `user` , `system` , `nice` , `idle` |
| `cpu_stats_percent` | CPU statistics as percentages | `user` , `system` , `nice` , `idle` |
| `disk_usage` | Disk usage statistics (array of disks) | `filesystem` , `one_k_blocks` , `one_k_blocks_used` , `one_k_blocks_free` , `used_percentage` , `mountpoint` |
| `load_average` | Load average statistics | `one` , `five` , `fifteen` |
| `mem_stats` | Memory statistics | `total` , `free` , `used` |
| `ping` | Microservice status | `success` if running |
2021-10-30 10:17:14 +00:00
| `uptime` | System uptime | `secs` |
2021-08-06 17:58:40 +00:00
### Environment
The JSON-RPC HTTP server address and port can be configured with the `PEACH_STATS_SERVER` environment variable:
`export PEACH_STATS_SERVER=127.0.0.1:5000`
When not set, the value defaults to `127.0.0.1:5113` .
Logging is made available with `env_logger` :
`export RUST_LOG=info`
Other logging levels include `debug` , `warn` and `error` .
### Setup
Clone this repo:
`git clone https://github.com/peachcloud/peach-stats.git`
Move into the repo and compile a release build:
`cd peach-stats`
`cargo build --release`
Run the binary:
`./target/release/peach-stats`
### Debian Packaging
A `systemd` service file and Debian maintainer scripts are included in the `debian` directory, allowing `peach-stats` to be easily bundled as a Debian package (`.deb`). The `cargo-deb` [crate ](https://crates.io/crates/cargo-deb ) can be used to achieve this.
Install `cargo-deb` :
`cargo install cargo-deb`
Move into the repo:
`cd peach-stats`
Build the package:
`cargo deb`
The output will be written to `target/debian/peach-stats_0.1.0_arm64.deb` (or similar).
Build the package (aarch64):
`cargo deb --target aarch64-unknown-linux-gnu`
Install the package as follows:
`sudo dpkg -i target/debian/peach-stats_0.1.0_arm64.deb`
The service will be automatically enabled and started.
Uninstall the service:
`sudo apt-get remove peach-stats`
Remove configuration files (not removed with `apt-get remove` ):
`sudo apt-get purge peach-stats`
### Example Usage
**Get CPU Statistics**
With microservice running, open a second terminal window and use `curl` to call server methods:
`curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "cpu_stats", "id":1 }' 127.0.0.1:5113`
Server responds with:
`{"jsonrpc":"2.0","result":"{\"user\":4661083,\"system\":1240371,\"idle\":326838290,\"nice\":0}","id":1}`
**Get System Uptime**
With microservice running, open a second terminal window and use `curl` to call server methods:
`curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "uptime", "id":1 }' 127.0.0.1:5113`
Server responds with:
2021-10-30 10:17:14 +00:00
`{"jsonrpc":"2.0","result":"{\"secs\":840968}","id":1}`
2021-08-06 17:58:40 +00:00
### Licensing
AGPL-3.0