{"id":22911985,"url":"https://github.com/opencoff/latmon","last_synced_at":"2025-04-01T10:47:43.607Z","repository":{"id":255710165,"uuid":"853011342","full_name":"opencoff/latmon","owner":"opencoff","description":"Ping latency plotter","archived":false,"fork":false,"pushed_at":"2025-01-20T18:53:04.000Z","size":127,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-07T06:15:12.436Z","etag":null,"topics":["dns-latency","golang","http-latency","http-latency-monitor","latency-charts","latency-mo","tls-latency"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opencoff.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":"2024-09-05T20:26:16.000Z","updated_at":"2025-01-20T18:53:06.000Z","dependencies_parsed_at":"2024-09-06T20:42:48.754Z","dependency_job_id":"f2972f52-bb5d-470e-bb2a-55ac0707528b","html_url":"https://github.com/opencoff/latmon","commit_stats":null,"previous_names":["opencoff/pinglat","opencoff/latmon"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencoff%2Flatmon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencoff%2Flatmon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencoff%2Flatmon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencoff%2Flatmon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opencoff","download_url":"https://codeload.github.com/opencoff/latmon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246628418,"owners_count":20808106,"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":["dns-latency","golang","http-latency","http-latency-monitor","latency-charts","latency-mo","tls-latency"],"created_at":"2024-12-14T04:19:28.957Z","updated_at":"2025-04-01T10:47:43.573Z","avatar_url":"https://github.com/opencoff.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# latmon\n\n`latmon` is a http/https latency monitor that saves dns, tcp, tls\nand http latencies to one or more sites.\n\nFeatures:\n\n* outputs latencies as a csv file\n* generates interactive charts (`go-echarts`)\n* http and https support\n* customizable ping interval\n* always generates an 24-hour report (csv + charts)\n* by default saves intermediate results every 3600 samples\n\n## How to build it\nPre-requisites:\n\n    * go toolchain 1.22+\n    * bash 4.x+\n    * (optional) make or GNU Make\n\nIf you have GNU Make: `make` will build the binary\n\nIf you don't have GNU Make, `./build -s` will build the binary\n\nIn either case, the binary will be in the directory `./bin/$machine/`\nwhere `$machine` is of the form `$OS-$ARCH`. eg if you are building\nthis on an linux-amd64 host - the binary will be in\n`./bin/linux-amd64`.\n\n## Usage\n    latmon [options] HOST [HOST..]\n\n    Where HOST is of the form:\n\n        https:hostname:port\n\n    hostname - can be either an IP address or hostname.\n\n    Options:\n      -b, --batch-size int   Collect 'B' samples per measurement run (default 3600)\n      -i, --every I          Send pings every I interval apart (default 2s)\n      -h, --help             Show this help message and exit\n      -L, --log L            Send logs to destination L (default \"SYSLOG\")\n          --log-level P      Log at priority P (default \"INFO\")\n      -d, --output-dir D     Put charts in directory D (default \".\")\n      -t, --timeout T        Set rx deadline to T seconds (default 2s)\n          --version          Show program version and exit\n\nExample invocation:\n\n    latmon -i 3s -d /tmp/latmon -L /tmp/latmon/latmon.log \\\n            --log-level DEBUG https:www.google.com\n\nLatmon puts charts for each host in a subdir named after\nthe host. The csv files are stored in the `csv` subdir of each host dir\nand the charts are stored in the `html` subdir of each host dir.\nDaily stats and charts are stored in files with the format\n*YYYY-MM-DD.csv* and *YY-MM-DD.html* respectively.\n\n# TODO\n1. Add support for quic/http\n2. Add support for icmp (maybe)\n\n# Guide to Source\n* latmon uses a simple http client in `internal/http`\n* the plotting aspect is in `internal/plot`\n* `src/http.go` periodically pings a host and sends latency\n  measurements via chan. Each monitored host will have an instance\n  of `hping`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencoff%2Flatmon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopencoff%2Flatmon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencoff%2Flatmon/lists"}