{"id":15697203,"url":"https://github.com/cirocosta/slirunner","last_synced_at":"2025-05-08T22:40:28.881Z","repository":{"id":54854745,"uuid":"191961996","full_name":"cirocosta/slirunner","owner":"cirocosta","description":"Concourse SLI probes runner","archived":false,"fork":false,"pushed_at":"2021-01-25T15:53:34.000Z","size":76,"stargazers_count":6,"open_issues_count":8,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-20T09:39:43.264Z","etag":null,"topics":["concourse","observability","prometheus"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cirocosta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-14T15:00:00.000Z","updated_at":"2023-03-22T06:07:12.000Z","dependencies_parsed_at":"2022-08-14T04:50:34.935Z","dependency_job_id":null,"html_url":"https://github.com/cirocosta/slirunner","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fslirunner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fslirunner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fslirunner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cirocosta%2Fslirunner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cirocosta","download_url":"https://codeload.github.com/cirocosta/slirunner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253160727,"owners_count":21863624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concourse","observability","prometheus"],"created_at":"2024-10-03T19:13:54.117Z","updated_at":"2025-05-08T22:40:28.863Z","avatar_url":"https://github.com/cirocosta.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sli runner\n\n\u003e probes your [Concourse][concourse] installation, generating \n\u003e [Service Level Indicators][slis] (SLIs)\n\n![sample dashboard](https://user-images.githubusercontent.com/3574444/59943990-a8559480-9431-11e9-8a0e-0ffefa157cce.png)\n\n\n[concourse]: https://concourse-ci.org \n[slis]: https://landing.google.com/sre/sre-book/chapters/service-level-objectives/\n\n\n## why\n\nEven tough Concourse emits many metrics that are useful for an operator, it\nmight still be hard to have a quick grasp of how high-level funcitionality is\nperforming.\n\nWith SLIs , one is able to better reason about what's broken on user-facing\nfunctionality that the service exposes.\n\n\n\t\n## prior\n\nBefore `slirunner`, [oxygen-mask][oxygen-mask] was the solution for running\nhigh-level probes against Concourse installation.\n\nIt has a few quirks that I don't think are necessary to have:\n\n- requires another Concourse installation to run those probes\n- tightly coupled to datadog\n- performs UI testing\n\n\n[oxygen-mask]: https://github.com/concourse/oxygen-mask\n\n\n\n## what\n\n`slirunner` is a single [Go][go] binary that, once \"installed\" (run somewhere),\nperiodically executes several probes against Concourse, keeping track of the\nsuccesses and failures.\n\nA consumer of `slirunner` can consume the reports from two mediums:\n\n- [Prometheus][prometheus] exposed metrics\n- structured logs\n\n\nIt also supports:\n\n- single runs\n- TODO: worker-related probing against multiple tags and teams\n\n\n[go]: https://golang.org/\n[prometheus]: https://prometheus.io/\n\n\n## usage\n\nThere are several ways of running `slirunner`.\n\nIn the end, it's always the `slirunner` being run with some flags set.\n\n```\nUsage:\n  slirunner [OPTIONS] \u003conce | start\u003e\n\nHelp Options:\n  -h, --help  Show this help message\n\nAvailable commands:\n  once   performs a single run of the SLIs suite\n  start  initiates the periodic run of the SLIs suite\n```\n\nThe binary can either be built using `go`:\n\n```console\n$ go get -u github.com/cirocosta/slirunner\n```\n\nor fetched from the releases page:\n\n```console\n$ curl -SL https://github.com/cirocosta/slirunner/releases/download/v0.1.0/slirunner.tgz | tar xvzf -\nfly slirunner\n```\n\nWith that done, it's all about having it running:\n\n```bash\nslirunner start \\\n  --target $TARGET_TO_GENERATE \\\n  --username $CONCOURSE_BASIC_AUTH_USERNAME \\\n  --password $CONCOURSE_BASIC_AUTH_PASSWORD \\\n  --concourse-url $URL_OF_THE_CONCOURSE_INSTALLATION\n```\n\n\n### using docker / kubernetes\n\nA container image `cirocosta/slirunner` is continuously pushed to\nhttps://hub.docker.com/r/cirocosta/slirunner.\n\ne.g., using `docker-compose`:\n\n```yaml\nversion: '3'\nservices:\n  slirunner:\n    image: cirocosta/slirunner\n    command:\n      - start\n      - --target=test\n      - --concourse-url=http://web:8080\n      - --password=test\n      - --username=test\n```\n\nFor kubernetes, check out the example under\n[`./examples/kubernetes.yaml`](./examples/kubernetes.yaml).\n\n\n## license\n\nSee [./LICENSE](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcirocosta%2Fslirunner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcirocosta%2Fslirunner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcirocosta%2Fslirunner/lists"}