{"id":15355529,"url":"https://github.com/mattipv4/monitors","last_synced_at":"2025-04-15T06:32:59.570Z","repository":{"id":52380312,"uuid":"328010484","full_name":"MattIPv4/monitors","owner":"MattIPv4","description":"Uptime monitoring (or really any monitoring that can throw an error) through Node.js \u0026 GitHub Actions.","archived":false,"fork":false,"pushed_at":"2025-02-25T19:53:59.000Z","size":337,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T17:11:08.390Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MattIPv4.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},"funding":{"github":"MattIPv4","patreon":"IPv4","ko_fi":"MattIPv4","custom":"https://paypal.me/MattIPv4Cowley"}},"created_at":"2021-01-08T20:56:10.000Z","updated_at":"2025-03-16T08:21:19.000Z","dependencies_parsed_at":"2024-04-19T03:28:28.479Z","dependency_job_id":"cca67a70-d61d-4286-8667-dfcca55e6e81","html_url":"https://github.com/MattIPv4/monitors","commit_stats":{"total_commits":120,"total_committers":1,"mean_commits":120.0,"dds":0.0,"last_synced_commit":"94dd8bc425314828354c93a15eb12c07115122bf"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MattIPv4%2Fmonitors","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MattIPv4%2Fmonitors/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MattIPv4%2Fmonitors/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MattIPv4%2Fmonitors/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MattIPv4","download_url":"https://codeload.github.com/MattIPv4/monitors/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249021756,"owners_count":21199759,"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-10-01T12:24:40.308Z","updated_at":"2025-04-15T06:32:59.545Z","avatar_url":"https://github.com/MattIPv4.png","language":"JavaScript","funding_links":["https://github.com/sponsors/MattIPv4","https://patreon.com/IPv4","https://ko-fi.com/MattIPv4","https://paypal.me/MattIPv4Cowley"],"categories":[],"sub_categories":[],"readme":"# monitors\n\n## About\n\nUptime monitoring (or really any monitoring that can throw an error) through Node.js \u0026 GitHub Actions.\n\nAdd files to the [`monitors`](monitors) directory and they'll be run every 5 minutes by GitHub Actions (triggered by Cloudflare Workers cron, as this is more reliable that Actions schedule).\nAny monitor that throws an error will fail and will be reported as a failed job in Actions.\n\nThe GitHub Actions workflow has two defined steps, though the second is dynamic and dictated by the output of the first.\n\nThe first workflow, called `locate`, establishes two real outputs -- the Node.js version to use (set in [`.nvmrc`](.nvmrc)) and the set of monitors to run as jobs (the files in [`monitors`](monitors)).\nIt also does a full install of Node.js and our dependencies itself, with the Cache action running, so that the latest version of our dependencies are cached before the monitors all run.\n\nThe script that locates the monitors and outputs them in a JSON format for the Actions workflow is [`src/locate.js`](src/locate.js).\n\nThe second job, `monitor`, is then run once for every monitor in the matrix output of the `locate` job.\nThis job uses the set Node.js version from the `locate` job as well, installing the cached NPM dependencies and running the monitor from the matrix.\n\nThe script that runs the specified monitor in the Actions job is [`src/monitor.js`](src/monitor.js).\nThis script will locate and execute the given monitor, outputting if it passed or failed, along with the appropriate exit code.\n\n*If you need to run all monitors locally, install `jq` and then use `npm run all`.\nA single monitor can be run in the same way the Actions workflow executes it, with `npm run monitor -- {{monitor_name}}`.*\n\n## License\n\nThis project is licensed under [Apache 2.0](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattipv4%2Fmonitors","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattipv4%2Fmonitors","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattipv4%2Fmonitors/lists"}