DEVELOPMENT ENVIRONMENT

~liljamo/emerwen

ref: 1b8eda0a49f5fa733c699116c16f51898f5f06b4 emerwen/README.md -rw-r--r-- 1.6 KiB
1b8eda0aJonni Liljamo feat: move emerwen-proto crate out of here 4 days ago

#emerwen

emerwen is a WIP host and service monitoring solution.

emerwen stands for shepherdess in Quenya.

It's architected as one Master server, which configures Workers who notify the Master about the status of their targets.

gRPC is used for the Master<->Worker connection. A custom TCP protocol was planned and experimented with, but scrapped due to me not having done it before and not wanting to deal with the burden of managing all the connections manually etc, etc. tldr: gRPC was easier lmao.

#Future (non-critical TODO)

  • TLS
  • Graceful shutdown for Workers when SIGINT is received.
    • Send Master a message that you're exiting, and close the connection.
    • Exit with 0 after all tasks are killed.
  • Master should notify if a Worker becomes unreachable...
    • ...without sending the message described above, "graceful shutdown".

#Development

  • There's a flake.nix which defines a development shell with the Rust toolchain and all the required dependencies ready to go.
    • Also configures pre-commit hooks.
  • There's a justfile which defines common commands. Requires just.
  • x86_64-unknown-linux-gnu builds use mold as the default linked, defined in .cargo/config.toml.
  • When using the trace feature, you need --cfg tokio_unstable, which is also set in .cargo/config.toml for x86_64-unknown-linux-gnu builds.
    • Otherwise, you can set RUSTFLAGS="--cfg tokio_unstable".

#License

This project is licensed under GNU General Public License v3.0 or later.