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
Install canary checker:
helm repo add flanksource https://flanksource.github.io/charts
helm repo update
helm install canary-checkerCreate a new check:
canary.yamlapiVersion: 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
kubectl apply -f canary.yaml
- Check the status of the health check:
kubectl get canary
- Check the Dashboard
Getting Help
If you have any questions about canary checker:
- Read the docs
- Invite yourself to the CNCF community slackand join the #canary-checker channel.
- Check out the Youtube Playlist.
- File an issue - (We do provide user support via Github Issues, so don't worry if your issue a real bug or not)
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
Protocol | Status | Checks |
---|---|---|
HTTP(s) | GA | Response body, headers and duration |
DNS | GA | Response and duration |
Ping/ICMP | GA | Duration and packet loss |
TCP | GA | Port is open and connectable |
Data Sources | ||
SQL (MySQL, Postgres, SQL Server) | GA | Ability to login, results, duration, health exposed via stored procedures |
LDAP | GA | Ability to login, response time |
ElasticSearch / Opensearch | GA | Ability to login, response time, size of search results |
Mongo | Beta | Ability to login, results, duration, |
Redis | GA | Ability to login, results, duration, |
Prometheus | GA | Ability to login, results, duration, |
Alerts | Prometheus | |
Prometheus Alert Manager | GA | Pending and firing alerts |
AWS Cloudwatch Alarms | GA | Pending and firing alarms |
Dynatrace Problems | Beta | Problems deteced |
DevOps | ||
Git | GA | Query Git and Github repositories via SQL |
Azure Devops | ||
Integration Testing | ||
JMeter | Beta | Runs and checks the result of a JMeter test |
JUnit / BYO | Beta | Run a pod that saves Junit test results |
File Systems / Batch | ||
Local Disk / NFS | GA | Check folders for files that are: too few/many, too old/new, too small/large |
S3 | GA | Check contents of AWS S3 Buckets |
GCS | GA | Check contents of Google Cloud Storage Buckets |
SFTP | GA | Check contents of folders over SFTP |
SMB / CIFS | GA | Check contents of folders over SMB/CIFS |
Config | ||
AWS Config | GA | Query AWS config using SQL |
AWS Config Rule | GA | AWS Config Rules that are firing, Custom AWS Config queries |
Config DB | GA | Custom config queries for Mission Control Config D |
Kubernetes Resources | GA | Kubernetes resources that are missing or are in a non-ready state |
Backups | ||
GCP Databases | GA | Backup freshness |
Restic | Beta | Backup freshness and integrity |
Infrastructure | ||
EC2 | GA | Ability to launch new EC2 instances |
Kubernetes Ingress | GA | Ability to schedule and then route traffic via an ingress to a pod |
Docker/Containerd | Deprecated | Ability to push and pull containers via docker/containerd |
Helm | Deprecated | Ability to push and pull helm charts |
S3 Protocol | GA | Ability to read/write/list objects on an S3 compatible object store |