DEVELOPMENT ENVIRONMENT

~liljamo/emerwen

host and service monitoring solution
feat: move emerwen-proto crate out of here
docs: remove refernces to leptos ui
feat(master): implement webtomaster as ipc_server

refs

master
browse  log 

clone

read-only
https://git.src.quest/~liljamo/emerwen
read/write
git@git.src.quest:~liljamo/emerwen

You can also use your local clone with git send-email.

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