# peach-jsonrpc-server A JSON-RPC server for the PeachCloud system which exposes an API over HTTP. Currently includes peach-stats capability (system statistics). ## 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 is currently hardcoded to run on "127.0.0.1:5110". Address and port configuration settings will later be exposed via CLI arguments and possibly an environment variable. Logging is made available with `env_logger`: `export RUST_LOG=info` Other logging levels include `debug`, `warn` and `error`. ## Setup Clone the peach-workspace repo: `git clone https://git.coopcloud.tech/PeachCloud/peach-workspace` Move into the repo peaach-jsonrpc-server directory and compile a release build: `cd peach-jsonrpc-server` `cargo build --release` Run the binary: `./peach-workspace/target/release/peach-jsonrpc-server` ## Debian Packaging TODO. ## 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:5110` 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:5110` Server responds with: `{"jsonrpc":"2.0","result":"{\"secs\":840968}","id":1}` ### Licensing AGPL-3.0