A Kubernetes operator for running synthetic checks as pods. Works great with Prometheus!
Note: Kuberhealthy is currently undergoing a total rewrite in the v3
branch.
Kuberhealthy is a Kubernetes operator for synthetic monitoring and continuous process verification. Write your own tests in any language and Kuberhealthy will run them for you. Automatically creates metrics for Prometheus. Includes simple JSON status page. Now part of the CNCF!
Kuberhealthy lets you continuously verify that your applications and Kubernetes clusters are working as expected. By creating a custom resource (a KuberhealthyCheck
) in your cluster, you can easily enable various synthetic tests and get Prometheus metrics for them.
Kuberhealthy comes with lots of useful checks already available to ensure the core functionality of Kubernetes, but checks can be used to test anything you like. We encourage you to write your own check container in any language to test your own applications. It really is quick and easy!
Kuberhealthy serves the status of all checks on a simple JSON status page, a Prometheus metrics endpoint (at /metrics
), and supports InfluxDB metric forwarding for integration into your choice of alerting solution.
Kuberhealthy requires Kubernetes 1.16 or above. You can install it with plain YAML manifests or with Helm.
Here is an illustration of how Kuberhealthy provisions and operates checker pods. The following process is illustrated:
KuberhealthyCheck
resource that calls for a synthetic Kubernetes daemonset to be deployed and tested every 15 minutes. This will ensure that all nodes in the Kubernetes cluster can provision containers properly.KuberhealthyCheck
resource.Ready
You can use any of the pre-made checks by simply enabling them. By default Kuberhealthy comes with several checks to test Kubernetes deployments, daemonsets, and DNS.
You can easily create synthetic tests to check your applications and APIs with real world use cases. This is a great way to be confident that your application functions as expected in the real world at all times.
Here is a full check example written in go
. Just implement doCheckStuff
and you’re off!
package main
import (
"github.com/kuberhealthy/kuberhealthy/v2/pkg/checks/external/checkclient"
)
func main() {
ok := doCheckStuff()
if !ok {
checkclient.ReportFailure([]string{"Test has failed!"})
return
}
checkclient.ReportSuccess()
}
You can read more about how checks are configured and learn how to create your own check container. Checks can be written in any language and helpful clients for checks not written in Go can be found in the clients directory.
Kuberhealthy serves a simple JSON status page and Prometheus metrics endpoint. See the status page guide for output examples and details.
If you’re interested in contributing to this project:
good first issue
tag.While working on Kuberhealthy, you can take advantage of the included Hermit dev environment to get Go & other tooling without having to install them separately on your local machine.
Just use the following command to activate the environment, and you’re good to go:
. ./bin/activate-hermit
If you would like to talk directly to the core maintainers to discuss ideas, code reviews, or other complex issues, we have a monthly Zoom meeting on the 24th day of every month at 04:30 PM Pacific Time.