{"id":23129815,"url":"https://github.com/detro/go-checkit","last_synced_at":"2025-06-13T20:33:04.077Z","repository":{"id":66967175,"uuid":"217588617","full_name":"detro/go-checkit","owner":"detro","description":null,"archived":false,"fork":false,"pushed_at":"2019-10-25T18:01:38.000Z","size":7,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-23T11:04:14.290Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/detro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-25T18:01:23.000Z","updated_at":"2019-10-28T00:46:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"ec668657-d30f-4aa9-95b2-3ad60175f111","html_url":"https://github.com/detro/go-checkit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detro%2Fgo-checkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detro%2Fgo-checkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detro%2Fgo-checkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detro%2Fgo-checkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/detro","download_url":"https://codeload.github.com/detro/go-checkit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247135125,"owners_count":20889420,"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":[],"created_at":"2024-12-17T10:10:58.982Z","updated_at":"2025-04-04T06:41:03.618Z","avatar_url":"https://github.com/detro.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# (Go) check it\n\n`checkit` is a command line tool (written in Go, obviously), that runs a sequence of HTTP GET against a given\nHTTP(S) endpoint, for a configurable duration and frequency. It supports `HTTP/1.x` and `/2`, over IPv4 and IPv6,\nbecause Go `net/http` does.\n\n## How does it \"check\"\n\nFor every HTTP GET we _currently_ measure:\n- time to establish the connection\n- time to send request, wait, receive the response\n- round trip time from the moment the request is submitted to the moment it comes back\n- the \"total\" HTTP GET execution as seen by the application\n\n**NOTE:** The word _currently_ above stands to signify that we could evolve this to instrument the `net/http` library further,\nand gather more precise metrics (like _DNS resolution time_ or separating _send,wait,receive_ times). Those are\ncurrently left as TODOs.\n\n### Connection reuse?\n\nAll HTTP connection reuse is disabled. On purpose.\nThe aim of this tool is not to optimize for speed nor efficiency: is to collect accurate data.\nAnd so connection reuse would definitely skew the results if left in place.\n\nFor details, take a look at the `KeepAlive` options in `transport.go` module.\n\n## How do we measure\n\nWe track the time measurements using the Histogram implementation by the [go-metrics](https://github.com/rcrowley/go-metrics)\nproject. This allows to produce as final result:\n\n* Min, Mean and Max\n* 75 and 99 Percentiles\n\nAllowing to spot outliers and ensure that the final numbers are not skewed in any way.\n\n## Usage\n\nJust use `-h` flag to print it out:\n\n```\n$ checkit -h\n\nUsage of ./bin/checkit:\n  -duration float\n    \tHow long to run the check for (in minutes) (default 5)\n  -frequency int\n    \tFrequency at which to run the checks (in milliseconds (default 500)\n  -h\tPrint usage\n  -url string\n    \tURL to check (default \"https://gitlab.com\")\n```\n\n## Example output\n\nLaunch against the default URL, run for 1 minute at a 500 milliseconds frequency:\n\n```\n$ checkit -duration=1 -frequency=500\n\n2017/04/28 12:18:28 Checking URL 'https://gitlab.com'\n2017/04/28 12:18:28 Running for 1.0 minute(s) at a 500 millisecond(s) frequency\n2017/04/28 12:18:28 \n2017/04/28 12:18:28 Beginning checks at 2017-04-28 12:18:28.511723766 +0100 BST\n..........................................\n2017/04/28 12:19:29 Ending checks at 2017-04-28 12:19:29.662597002 +0100 BST\n2017/04/28 12:19:29 \n2017/04/28 12:19:29 *** RESULTS (in milliseconds) ***\n2017/04/28 12:19:29 Performed 42 checks\n2017/04/28 12:19:29 Establish connection  \t Min 88 \t Mean 90.05 \t Max 103 \t P75 91.00 \t P99 103.00 (ms)\n2017/04/28 12:19:29 Send, wait, receive   \t Min 444 \t Mean 451.74 \t Max 516 \t P75 452.00 \t P99 516.00 (ms)\n2017/04/28 12:19:29 Round trip            \t Min 533 \t Mean 542.38 \t Max 605 \t P75 544.00 \t P99 605.00 (ms)\n2017/04/28 12:19:29 HTTP GET (i.e. total) \t Min 921 \t Mean 952.00 \t Max 1123 \t P75 952.75 \t P99 1123.00 (ms)\n```\n\nLaunch against `https://youtube.com`, run for 2 minutes at a 300 milliseconds frequency:\n\n```\n$ checkit -url https://youtube.com -duration 2 -frequency 300\n\n2017/04/28 13:12:50 Checking URL 'https://youtube.com'\n2017/04/28 13:12:50 Running for 2.0 minute(s) at a 300 millisecond(s) frequency\n2017/04/28 13:12:50 \n2017/04/28 13:12:50 Beginning checks at 2017-04-28 13:12:50.108452272 +0100 BST\n....................................................................................................................................................................................................................................................................................\n2017/04/28 13:14:50 Ending checks at 2017-04-28 13:14:50.430113974 +0100 BST\n2017/04/28 13:14:50 \n2017/04/28 13:14:50 *** RESULTS (in milliseconds) ***\n2017/04/28 13:14:50 Performed 276 checks\n2017/04/28 13:14:50 Establish connection  \t Min 10 \t Mean 12.52 \t Max 23 \t P75 13.00 \t P99 22.23 (ms)\n2017/04/28 13:14:50 Send, wait, receive   \t Min 51 \t Mean 61.44 \t Max 85 \t P75 64.00 \t P99 81.92 (ms)\n2017/04/28 13:14:50 Round trip            \t Min 63 \t Mean 74.58 \t Max 100 \t P75 78.00 \t P99 93.69 (ms)\n2017/04/28 13:14:50 HTTP GET (i.e. total) \t Min 115 \t Mean 132.41 \t Max 244 \t P75 136.00 \t P99 156.46 (ms)\n```\n\n## License\n\n**MIT**. Please see `LICENSE` file on top of the repository.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdetro%2Fgo-checkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdetro%2Fgo-checkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdetro%2Fgo-checkit/lists"}