Skip to main content

Overview

Canary Checker Canary Checker

Canary checker is a kubernetes-native platform for monitoring health across application and infrastructure using both passive and active (synthetic) mechanisms.

Features

  • Batteries Included - 35+ built-in check types
  • Kubernetes Native - Health checks (or canaries) are CRD's that reflect health via the status field, making them compatible with GitOps, Flux Health Checks, Argo, Helm, etc..
  • Secret Management - Leverage K8S secrets and configmaps for authentication and connection details
  • Prometheus - Prometheus compatible metrics are exposed at /metrics. A Grafana Dashboard is also available.
  • Dependency Free - Runs an embedded postgres instance by default, can also be configured to use an external database.
  • JUnit Export (CI/CD) - Export health check results to JUnit format for integration into CI/CD pipelines
  • JUnit Import (k6/newman/puppeter/etc) - Use any container that creates JUnit test results
  • Scriptable - Go templates, Javascript and Expr can be used to:
    • Evaluate whether a check is passing and severity to use when failing
    • Extract a user friendly error message
    • Transform and filter check responses into individual check results
  • Multi-Modal - While designed as a Kubernetes Operator, canary checker can also run as a CLI and a server without K8s

Use Cases

  • Synthetic Monitoring

  • Unified Alerting

Getting Started

  1. Install canary checker:

    helm repo add flanksource https://flanksource.github.io/charts
    helm repo update
    helm install canary-checker
  2. Create a new check:

    canary.yaml
    apiVersion: canaries.flanksource.com/v1
    kind: Canary
    metadata:
    name: http-check
    spec:
    interval: 30
    http:
    - name: basic-check
    url: https://httpbin.demo.aws.flanksource.com/status/200
    - name: failing-check
    url: https://httpbin.demo.aws.flanksource.com/status/500

2a. Run the check locally (Optional)

canary-checker run canary.yaml

asciicast

kubectl apply -f canary.yaml
  1. Check the status of the health check:
kubectl get canary

asciicast

  1. Check the Dashboard

Getting Help

If you have any questions about canary checker:

Your feedback is always welcome!

License

Canary Checker core (the code in this repository) is licensed under Apache 2.0 and accepts contributions via GitHub pull requests after signing a CLA.

The UI (Dashboard) is free to use with canary checker under a license exception of Flanksource UI

Check Types

ProtocolStatusChecks
HTTP(s)GAResponse body, headers and duration
DNSGAResponse and duration
Ping/ICMPGADuration and packet loss
TCPGAPort is open and connectable
Data Sources
SQL (MySQL, Postgres, SQL Server)GAAbility to login, results, duration, health exposed via stored procedures
LDAPGAAbility to login, response time
ElasticSearch / OpensearchGAAbility to login, response time, size of search results
MongoBetaAbility to login, results, duration,
RedisGAAbility to login, results, duration,
PrometheusGAAbility to login, results, duration,
AlertsPrometheus
Prometheus Alert ManagerGAPending and firing alerts
AWS Cloudwatch AlarmsGAPending and firing alarms
Dynatrace ProblemsBetaProblems deteced
DevOps
GitGAQuery Git and Github repositories via SQL
Azure Devops
Integration Testing
JMeterBetaRuns and checks the result of a JMeter test
JUnit / BYOBetaRun a pod that saves Junit test results
File Systems / Batch
Local Disk / NFSGACheck folders for files that are: too few/many, too old/new, too small/large
S3GACheck contents of AWS S3 Buckets
GCSGACheck contents of Google Cloud Storage Buckets
SFTPGACheck contents of folders over SFTP
SMB / CIFSGACheck contents of folders over SMB/CIFS
Config
AWS ConfigGAQuery AWS config using SQL
AWS Config RuleGAAWS Config Rules that are firing, Custom AWS Config queries
Config DBGACustom config queries for Mission Control Config D
Kubernetes ResourcesGAKubernetes resources that are missing or are in a non-ready state
Backups
GCP DatabasesGABackup freshness
ResticBetaBackup freshness and integrity
Infrastructure
EC2GAAbility to launch new EC2 instances
Kubernetes IngressGAAbility to schedule and then route traffic via an ingress to a pod
Docker/ContainerdDeprecatedAbility to push and pull containers via docker/containerd
HelmDeprecatedAbility to push and pull helm charts
S3 ProtocolGAAbility to read/write/list objects on an S3 compatible object store