Peephole

pipeline status

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.

Peephole homepage

Peephole detail

Table of Contents

Install

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

Usage

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.

Changelog

See changelog.

Contributing

See contributing.

Issues

You found a bug or need a new feature? Please open an issue.

Powering

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!

GitHub

View Github