Peephole is a web-based events explorer of SaltStack transactions.
It can be used to watch for events on several SaltStack master nodes by GETting from the /events
API endpoint.
As soon as events are watched, they get persisted into a local (auto-expiring and configurable) cache that allows to explore, filter and correlate events for a variable time interval.
Either install using Docker:
docker pull ghcr.io/immobiliare/peephole:latest
Or build it yourself:
git clone https://github.com/immobiliare/peephole.git
cd peephole
make build
First off, create a configuration file config.yml
accordingly.
The sample example.yml file can be used as a reference.
Either run it with Docker:
docker run -v ${PWD}/config.yml:/etc/peephole \
-p 8080:8080 ghcr.io/immobiliare/peephole:latest
Or using the manually built binary file:
./peephole -c config.yml
Clearly, for each SaltMaster defined in the configuration file, ensure to enable salt-api
capabilities.
See changelog.
See contributing.
You found a bug or need a new feature? Please open an issue.
What led to the use of Go as the engine for Peephole is mainly the flow of the app itself: fetching data externally from possibily several sources concurrently, to feed a cache with, as well as a pool of several clients. Go's flexibility on intra-process channel-based communication between goroutines is a very solid paradigm to base the whole app flow on. That is very crucial in the context for which it's been designed, which is huge.
In fact, Peephole is currently used internally in the SRE / systems teams at Immobiliare to keep an eye on and soften the burden of administering a pool of servers of the order of thousands, fetching events from tens of Salt masters.
If you feel like using it as well, please, let us know!