# 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-.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 | | `uptime` | System uptime | `secs` | ### 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: `{"jsonrpc":"2.0","result":"{\"secs\":840968}","id":1}` ### Licensing AGPL-3.0