Skip to content

AlexGustafsson/upmon

Repository files navigation

Logo

Go Version Latest Release
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 iotas
  • 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.