Observer
Observer is a lightweight Rust agent that collects metrics and streams them to Watch-Tower, our backend. For Questions or our community please join our Discord server and ask questions there.
What it monitors
- CPU, RAM, disk, and network usage
- System info (hostname, OS, uptime, IP)
- Docker container CPU and memory
- Network speed (download, upload, latency)
- Component health state changes
How it works
Observer runs as a background service, periodically collecting metrics and POSTing them to a backend endpoint. It authenticates with an API key and can poll the backend for remote commands to execute.
This is a early access version
As this is an early access version you application on you server shouldn’t fail. It is more likely that our Watch-Tower backend fails. There is a mechanism which shuts down you backend if it cant connect after x amount of retries to our server. If you dont get metrics in the frontend. This is a likely cause. So please go ahead and just restart observer on your server.
systemctl restart observer
Installation
One-liner installer
curl -fsSL https://install.observe.vision | sudo bash
This script detects your init system (systemd or OpenRC) and installs Observer as a managed service.
Manual installation
Download the latest binary from the releases page and place it in /usr/local/bin/observer or a directory
of your choice.
Then place the config file at /etc/observer/observer.toml or any other dir if you want:
Example:
# download and place the bin in there
mkdir -p /usr/local/bin/observer
Create the config dir
mkdir -p /etc/observer
touch /etc/observer/observer.toml
chmod 600 /etc/observer/observer.toml
In this file you can now place the config:
[server]
base_metrics_url = "https://watch-tower.observe.vision/v1/ingest"
base_commands_url = "https://watch-tower.observe.vision/v1/commands"
base_docker_url = "https://watch-tower.observe.vision/v1/ingest/docker"
base_notifier_url = "https://watch-tower.observe.vision/v1/ingest/notification"
api_key = "<api-key>"
[intervals]
metric_secs = 2 # 2–60 seconds
command_poll_secs = 10 # 1–60 seconds
speedtest_secs = 3600 # 60–86400 seconds (1 hour)
enable_docker_socket = true
docker_secs = 10 # 10–60 seconds
Then it is only a matter of inserting the api key and starting the application with the env for the config file.
OBSERVER_CONFIG=/etc/observer/observer.toml /usr/local/bin/observer
Compile from source
Requires Rust (edition 2024, stable toolchain).
git clone https://github.com/ObServe-Your-Server/observer.git
cd observer
cargo build --release
cp target/release/observer /usr/local/bin/observer
Then the rest of the setup from above also works.
Useful infos
After installation, you can edit the configuration file and start the service. If you run through the installer over the shell script then all should be set and ready to go.
If you need to edit the config file it is under /etc/observer/observer.toml.
IMPORTANT
If you need to reconfigure or update observer you can do this via the provided shellcript on our repo or webseite.
For starting the service or other information (this is all for systemd you can search the correspoding commands for you system or if you have an own config it may be different):
# get the status of observer
systemctl status observer
# restart
sytemctl restart observer
# see and follow the logs
journalctl -u observer -f
# show the last 20 log lines
journalctl -u observer -n 20
Pre-release builds
We also offer pre-release versions of the observer backend. They are considered less stable though all our observer builds have a current proud error rate of 0%. It never once had an irrecoverable issue in the software. That said the pre-releases are the ones we are actively working on and have the newest features. This said you should be aware of issues which can happen.
Out of the way with the warnings. Here you can install them:
curl -fsSL https://raw.githubusercontent.com/ObServe-Your-Server/observer/main/setup/deploy-pre.sh | sudo bash
Contributing
We are actively looking for developers to join the project — both for Observer (this agent) and Watch-Tower, the backend that collects and serves metrics to the dashboard. All skill levels are welcome.
Ways to contribute
- Bug reports — open an issue on GitHub with steps to reproduce
- Feature requests — open an issue describing the use case
- Pull requests — fork the repo, make your changes, and submit a PR against
main - Documentation — improvements to these docs are always appreciated
Getting in touch
Join our Discord for questions, ideas, or just to follow along with development. You can also reach us directly at mail@observe.vision.