DEVELOPMENT ENVIRONMENT

~liljamo/emerwen

ref: abcdf0d3b170901445527942b0a06d74cf4e46fc emerwen/README.md -rw-r--r-- 1.7 KiB
abcdf0d3Jonni Liljamo feat(master): hello i succeeded in async 11 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.

#What's next (short-term TODO)

  • Master web UI (leptos + leptos_oidc) for configuring workers.

#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.