{"id":19158761,"url":"https://github.com/kerollmops/spo2","last_synced_at":"2025-08-24T11:42:07.499Z","repository":{"id":37179417,"uuid":"205898403","full_name":"Kerollmops/spo2","owner":"Kerollmops","description":"SpO₂ is oxygen saturation and is used in medical person monitoring.","archived":false,"fork":false,"pushed_at":"2024-06-29T08:24:07.000Z","size":854,"stargazers_count":19,"open_issues_count":7,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-06T19:05:09.750Z","etag":null,"topics":["monitoring","reqwest","rust","sled","tide","websocket"],"latest_commit_sha":null,"homepage":"","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/Kerollmops.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-09-02T16:43:28.000Z","updated_at":"2024-12-17T08:50:52.000Z","dependencies_parsed_at":"2024-06-29T09:31:34.714Z","dependency_job_id":"8f12e9fa-f317-400a-bbb1-72357de0f4b7","html_url":"https://github.com/Kerollmops/spo2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kerollmops/spo2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kerollmops%2Fspo2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kerollmops%2Fspo2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kerollmops%2Fspo2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kerollmops%2Fspo2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kerollmops","download_url":"https://codeload.github.com/Kerollmops/spo2/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kerollmops%2Fspo2/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264821438,"owners_count":23669220,"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":["monitoring","reqwest","rust","sled","tide","websocket"],"created_at":"2024-11-09T08:44:54.540Z","updated_at":"2025-07-11T13:34:02.574Z","avatar_url":"https://github.com/Kerollmops.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpO₂\n\nSpO₂ is a monitor for any program using the HTTP protocol. For more detail and background, see the [blog post announcing the release of the project](https://blog.meilisearch.com/spo2-the-little-dynamic-monitoring-tool/). \n\n(In medicine, SpO₂ refers to oxygen saturation levels in blood and is used as a measure of a person's health. O₂ is the scientific designation for an oxygen atom.) \n\nThis project uses [sled](https://github.com/spacejam/sled) to permanently save the health checked URLs.\nIt provides a websocket API that returns the changing status of the health checked URLs.\n\nSpO₂ doesn't support SSL out of the box, if you need [you can setup an Nginx server as we do][1].\n\n[1]: /enable-ssl.md\n\n![SpO2 dashboard screenshot](/misc/screenshot.png)\n\n## Usage\n\nYou must have [installed Rust](https://rustup.rs/) on your computer first.\n\n```bash\n# to try it in debug mode\ncargo run\n\n# or in release mode\ncargo run --release\n\n# you can also change the listen addrs with env variables\nexport HTTP_LISTEN_ADDR='127.0.0.1:8000'\nexport WS_LISTEN_ADDR='127.0.0.1:8001'\ncargo run --release\n\n# with the previous settings the HTTP and the WebSocket server will be\n# available on http://127.0.0.1:8000/ and ws://127.0.0.1:8001/ respectively\n\n# to enable the slack notifier you must set the corresponding env variable\nexport SLACK_HOOK_URL='Your Slack Webhook URL'\ncargo run --release\n```\n\n### Add or Update a new URL to health check\n\nCalling this route is \"kind of\" idenpotent, it means that it will not run another health checker on this URL but the custom json data will be updated.\n\n```bash\ncurl -i -X PUT 'http://127.0.0.1:8000/?url=http%3A%2F%2Flocalhost%2Fhealth' -d '\"your custom json data\"'\n\n# Note that 'http%3A%2F%2Flocalhost%2Fhealth' is the url to health check\n# but it is url encoded and correspond to 'http://localhost/health'\n```\n\n### Remove an health checked URL\n\nCalling this route will remove the URL from the health check pool and return you the custom json data associated with it.\n\n```bash\ncurl -i -X DELETE 'http://127.0.0.1:8000/?url=http%3A%2F%2Flocalhost%2Fhealth'\n```\n\n### Get an health checked URL data\n\nWill return the associated data of an already health checked URL.\n\n```bash\ncurl -i -X GET 'http://127.0.0.1:8000/?url=http%3A%2F%2Flocalhost%2Fhealth'\n```\n\n### Get all the health checked URLs\n\nWill return the list of all the health checked URLs aloang with the data associated with them.\n\n```bash\ncurl -i -X GET 'http://127.0.0.1:8000/all'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkerollmops%2Fspo2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkerollmops%2Fspo2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkerollmops%2Fspo2/lists"}