Quick Start | Documentation | Contribute
Upmon
A cloud-native, distributed uptime monitor written in Go
⚠️ Upmon is currently being actively developed. Until it reaches v1.0.0 breaking changes may occur in minor versions.
Upmon is a service for monitoring uptime. It is distributed and built around a gossip mechanism, providing eventual consistency. By easily creating a cluster of uptime monitors, a failure-tolerant uptime monitoring service may be deployed in minutes.
Quickstart
Upcoming.
Table of contents
Quickstart
Features
Contributing
Features
- Deployable as a single node or an entire cluster
- Support for monitoring via pings, TCP sockets, HTTP requests and more
- Easily extensible to provide new monitoring capabilities
- Simple (optional) API for monitoring the status of services
Documentation
Please view the docs on GitHub pages or see them in the docs
folder.
To view them offline in your browser, first install docsify by executing npm install --global docsify-cli
and then run docsify serve docs
in the project's folder.
Contributing
Any help with the project is more than welcome. The project is still in its infancy and not recommended for production.
Development
Dependencies beyond Go and Make:
- Go tools (installed by running
make install-tools
)
- stringer - used to generate the
String()
method for iota
s
- Other
# Clone the repository
https://github.com/AlexGustafsson/upmon.git && cd upmon
# Show available commands
make help
## Dependencies
# Install tools such as stringer
make install-tools
## Building
# Build the server
make build
# Generate API clients etc.
make generate
## Code quality
# Format code
make format
# Lint code
make lint
# Vet the code
make vet
# Check the code for security issues
make gosec
## Testing
# Run tests
make test
To simplify development, vet
, gosec
and test
are all run by executing make check
.
Note: due to a bug (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93082, https://bugs.llvm.org/show_bug.cgi?id=44406, https://openradar.appspot.com/radar?id=4952611266494464), clang is required when building for macOS. GCC cannot be used.