{"id":23705683,"url":"https://github.com/ccakes/trk","last_synced_at":"2026-02-03T02:30:18.926Z","repository":{"id":57670650,"uuid":"166997664","full_name":"ccakes/trk","owner":"ccakes","description":"Insanely simple time-series data tool for the CLI","archived":false,"fork":false,"pushed_at":"2019-07-03T07:07:45.000Z","size":837,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-01T23:04:53.406Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/ccakes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-22T13:19:58.000Z","updated_at":"2022-04-12T23:11:27.000Z","dependencies_parsed_at":"2022-09-07T17:34:43.560Z","dependency_job_id":null,"html_url":"https://github.com/ccakes/trk","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccakes%2Ftrk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccakes%2Ftrk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccakes%2Ftrk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccakes%2Ftrk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccakes","download_url":"https://codeload.github.com/ccakes/trk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239786254,"owners_count":19696772,"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-30T14:56:33.782Z","updated_at":"2026-02-03T02:30:18.841Z","avatar_url":"https://github.com/ccakes.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# trk\n\nReally, **really** simple terminal-based time-series data recorder and plotter.\n\nI have quite a few scripts which inject data into off-the-shelf apps, generate\nreports, compare data in various systems and more. All the usual fun things you do\nwhen you're working with a pile of legacy infrastructure (and cleaning it up).\n\nThis helps me track how many issues there are over time and quickly and easily identify\nwhen large changes happen.\n\n[![asciicast](https://asciinema.org/a/lP7JcL7lX6mZexFX8HM0Z2LqM.svg)](https://asciinema.org/a/lP7JcL7lX6mZexFX8HM0Z2LqM)\n\n## Usage\n\n```bash\n# Add a new series with specific units\n$ trk add-series -n inv.req.time -u ms\n$ trk add-series -n devices.alive\n\n# Or interactively\n$ trk add-series\nSeries Name: services.provisioned\nInput Unit (eg ms, bps): svc\nCreated services.valid\n\n# Then add some data points\n$ trk add -s inv.req.time 9\n$ trk add -s inv.req.time 8\n$ trk add -s inv.req.time 9\n\n# Or via the bulk command (for integrating with scripts)\n$ cat \u003c\u003cEOL \u003e points.txt\ninv.req.time=3\ndevices.alive=42\nservices.provisioned=100\nEOL\n\n$ cat points.txt | trk bulk\n\n# You can always use -c to auto-create the series if you don't want to pre-populate\n$ trk add -c -s new.series 20\n\n# trk stores files in $HOME/.trk by default, customise this if desired\n$ trk -d ~/my-metrics bulk -c \u003c points.txt\n\n# Or use different data files to keep things separate\n$ trk -f app1 add -c -s metric.a 33\n$ trk -f app2 add -c -s metric.a 983\n\n# And then plot the output (see screenshots below, the braille text doesn't space correctly here)\n$ trk plot -s inv.req.time\n\n# If you want the detail, add a table to\n$ trk plot -s inv.req.time -t\n\n# Or if you're not sure what you've been plotting, don't specify a series and use the interactive list\n$ trk plot\n```\n\n## Contributing\n\nSend a PR.\n\nI'm fairly new using Rust so I expect that there's a lot which could be\nfixed. Things which are at the top of my (low-priority) todo list:\n\n- Find a nice SQL generator (like Perl's SQL::Abstract or ...)\n- Support JSON maybe for bulk ingest?\n- Clean up module structure\n\n## LICENSE\n\nSee LICENSE file.\n\nCode under `src/textplots` is MIT licensed but (C) Alexey Suslov\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccakes%2Ftrk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccakes%2Ftrk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccakes%2Ftrk/lists"}