sensu-go is a free, open source monitoring & observability project written in Go and released under MIT. It has 1,112 GitHub stars, 180 forks and 274 open issues, and was last pushed 26 hours ago. On this registry it ranks #214 of 271 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available.

What is sensu-go?

Sensu Go is an MIT-licensed, agent-based monitoring system written in Go for ephemeral infrastructure and distributed applications, built for DevOps, platform, and operations teams running cloud and multi-cloud environments.

What it is

Sensu Go is an open source monitoring tool for ephemeral infrastructure and distributed applications, and it is a complete rewrite of Sensu in Go. It is agent based and ships with built-in auto-discovery, which the README identifies as the reason it suits cloud environments well. Service checks monitor service health and collect telemetry data, and the project exposes well defined APIs for configuration, external data input, and access to Sensu's own data. Because it is highly extensible, the README notes that it is commonly called "the monitoring router."

The concrete problem it solves is the operational overhead of the original Sensu. That version required external services such as Redis or RabbitMQ before it would run. Sensu Go can instead rely on an embedded etcd datastore for persistence, and it can also use an external etcd service if one is already deployed. It replaces the original Ruby expressions with JavaScript filter expressions by embedding a JavaScript interpreter, and it changes event semantics: unlike the original Sensu, events are always handled unless they are explicitly filtered. The specific stack it replaces is therefore the original Sensu deployment with its Redis and RabbitMQ dependencies.

Key capabilities

  • Agent-based monitoring with built-in auto-discovery, aimed at ephemeral infrastructure and cloud environments.
  • Service checks that monitor service health and collect telemetry data.
  • Embedded etcd datastore for persistence, with an external etcd service as an alternative when one already exists.
  • JavaScript filter expressions through an embedded JavaScript interpreter, replacing the Ruby expressions of the original Sensu.
  • Events always handled unless explicitly filtered, which differs from the original Sensu behaviour.
  • Three components built from this repository: sensu-agent, sensu-backend, and sensuctl, each under ./cmd/ and each writable to bin/ with go build.
  • Well defined APIs for configuration, external data input, and data access.

Who uses it and how

  • Cloud and multi-cloud teams running ephemeral infrastructure, where auto-discovery avoids manually registering hosts that appear and disappear.
  • Operations teams that already run etcd and can point Sensu Go at the existing cluster instead of using the embedded datastore.
  • Owners of distributed applications that need service health checks and telemetry collection handled by one agent-based system.
  • Contributors and integrators building from source with Go 1.18 or later, cloning the repository outside GOPATH and building with Go Modules.
  • Since version 6.0, operators deploy the web UI as a standalone product built from the separate sensu/web repository rather than receiving it with the backend.

Getting started

The easiest route is the official Docker image, sensu/sensu, with installer packages also available for platforms such as Debian/Ubuntu and RHEL/CentOS. Building from source requires Go 1.18 or later and runs with go run ./cmd/sensu-backend, alongside ./cmd/sensu-agent and ./cmd/sensuctl.

How it compares

The facts provided list no paid products that this project replaces, and the README names no comparable monitoring tool. On the evidence available, Sensu Go stands alone in this registry.

When to use it — and when not to

A self-hoster must operate a backend, its agents, and an etcd datastore, and since version 6.0 must obtain the web UI separately from sensu/web, which adds a deployment step. Teams that want a single bundled install with the interface included, or that do not want to run etcd at all, should look elsewhere. The repository shows 274 open issues, and the README documents installation and build paths while delegating operational detail to external documentation.

project readme (upstream, from github) — read inline

Sensu Go

CircleCI: CircleCI Build Status

Sensu is an open source monitoring tool for ephemeral infrastructure and distributed applications. It is an agent based monitoring system with built-in auto-discovery, making it very well-suited for cloud environments. Sensu uses service checks to monitor service health and collect telemetry data. It also has a number of well defined APIs for configuration, external data input, and to provide access to Sensu's data. Sensu is extremely extensible and is commonly referred to as "the monitoring router".

To learn more about Sensu, please visit the website and read the documentation.

What is Sensu Go?

Sensu Go is a complete rewrite of Sensu in Go, with new capabilities and reduced operational overhead. It eliminates several sources of friction for new and experienced Sensu users.

The original Sensu required external services like Redis or RabbitMQ. Sensu Go can rely on an embedded etcd datastore for persistence, making the product easier to get started with. External etcd services can also be used, in the event that you already have them deployed.

Sensu Go replaces Ruby expressions with JavaScript filter expressions, by embedding a JavaScript interpreter.

Unlike the original Sensu, Sensu Go events are always handled, unless explicitly filtered.

Installation

Sensu Go installer packages are available for a number of computing platforms (e.g. Debian/Ubuntu, RHEL/Centos, etc), but the easiest way to get started is with the official Docker image, sensu/sensu.

See the installation documentation to get started with one of Sensu's supported packages.

NOTE: Starting with Sensu Go version 6.0, for instances built from source, the web UI is now a standalone product — it is no longer included with the Sensu backend. To build the web UI from source, use the installation instructions in the Sensu Go Web repository.

Building from source

The various components of Sensu Go can be manually built from this repository. You will first need Go >= 1.18 installed. Then, you should clone this repository outside of the GOPATH since Sensu Go uses Go Modules:

$ git clone https://github.com/sensu/sensu-go.git
$ cd sensu-go

To compile and then run Sensu Go within a single step:

$ go run ./cmd/sensu-agent
$ go run ./cmd/sensu-backend
$ go run ./cmd/sensuctl

To build Sensu Go binaries and save them into the bin/ directory:

$ go build -o bin/sensu-agent ./cmd/sensu-agent
$ go build -o bin/sensu-backend ./cmd/sensu-backend
$ go build -o bin/sensuctl ./cmd/sensuctl

To build Sensu Go binaries with the version information:

# sensu-agent
$ go build -ldflags '-X "github.com/sensu/sensu-go/version.Version=5.14.0" -X "github.com/sensu/sensu-go/version.BuildDate=2019-10-08" -X "github.com/sensu/sensu-go/version.BuildSHA='`git rev-parse HEAD`'"' -o bin/sensu-agent ./cmd/sensu-agent

# sensu-backend
$ go build -ldflags '-X "github.com/sensu/sensu-go/version.Version=5.14.0" -X "github.com/sensu/sensu-go/version.BuildDate=2019-10-08" -X "github.com/sensu/sensu-go/version.BuildSHA='`git rev-parse HEAD`'"' -o bin/sensu-backend ./cmd/sensu-backend

# sensuctl
$ go build -ldflags '-X "github.com/sensu/sensu-go/version.Version=5.14.0" -X "github.com/sensu/sensu-go/version.BuildDate=2019-10-08" -X "github.com/sensu/sensu-go/version.BuildSHA='`git rev-parse HEAD`'"' -o bin/sensuctl ./cmd/sensuctl

Contributing

For guidelines on how to contribute to this project, how to hack on Sensu, and information about what we require from project contributors, please see CONTRIBUTING.md.

Sensu is and always will be open source, and we continue to highly value community contribution. The packages we’re releasing for new versions are from our Enterprise repo; Sensu Go is the upstream for Sensu Enterprise (as they’d say in the Go community: Sensu Go is vendored into the Sensu Enterprise Go repo). We encourage you to download new versions, as the functionality will be identical to what you find in the public repo, and access to the enterprise-only features can be unlocked with a license key. Because these releases are in our Enterprise repo, there may be times that you don’t see the actual work being done on an issue you open, but that doesn’t mean we’re not working on it! Our team is committed to updating progress on open issues in the sensu-go repo, even if that work is being done in our Enterprise repo.

Frequently asked questions

Is sensu-go free to use?

sensu-go is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does sensu-go do?

Simple. Scalable. Multi-cloud monitoring.

What is sensu-go written in?

sensu-go is primarily written in Go. Its source is publicly available at https://github.com/sensu/sensu-go, and it has 1,112 GitHub stars.