Canary checker is a kubernetes-native platform for monitoring health across application and infrastructure using both passive and active (synthetic) mechanisms.
- Batteries Included - 35+ built-in check types
- Kubernetes Native - Health checks (or canaries) are CRD's that reflect health via the
statusfield, 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
- Install canary checker:
helm repo add flanksource https://flanksource.github.io/charts
helm repo update
helm install canary-checker- Create a new check:
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/5002a. Run the check locally (Optional)
canary-checker run canary.yamlkubectl apply -f canary.yaml- Check the status of the health check:
kubectl get canaryNAME INTERVAL STATUS LAST CHECK UPTIME 1H LATENCY 1H LAST TRANSITIONED
http-check. 30 Passed 13s 18/18 (100.0%) 480ms 13s
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!
| 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 |
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