{"id":34788900,"url":"https://github.com/adamkirchberger/pingsheet","last_synced_at":"2026-05-26T04:03:55.481Z","repository":{"id":57539463,"uuid":"275623066","full_name":"adamkirchberger/pingsheet","owner":"adamkirchberger","description":"Pingsheet is a cloud based latency and packet loss monitoring platform built on top of Google Sheets.","archived":false,"fork":false,"pushed_at":"2020-07-10T14:36:10.000Z","size":261,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T06:28:42.011Z","etag":null,"topics":["endpoint-monitoring","icmp","latency-monitor","network","network-monitoring","ping"],"latest_commit_sha":null,"homepage":"","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/adamkirchberger.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2020-06-28T16:19:23.000Z","updated_at":"2020-11-06T15:49:29.000Z","dependencies_parsed_at":"2022-09-26T18:31:47.494Z","dependency_job_id":null,"html_url":"https://github.com/adamkirchberger/pingsheet","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/adamkirchberger/pingsheet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamkirchberger%2Fpingsheet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamkirchberger%2Fpingsheet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamkirchberger%2Fpingsheet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamkirchberger%2Fpingsheet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamkirchberger","download_url":"https://codeload.github.com/adamkirchberger/pingsheet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamkirchberger%2Fpingsheet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33503230,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T03:12:49.672Z","status":"ssl_error","status_checked_at":"2026-05-26T03:12:47.976Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["endpoint-monitoring","icmp","latency-monitor","network","network-monitoring","ping"],"created_at":"2025-12-25T09:53:10.940Z","updated_at":"2026-05-26T04:03:55.475Z","avatar_url":"https://github.com/adamkirchberger.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pingsheet\n\n![Pingsheet](images/pingsheet_screenshot.png)\n\n## Introduction\nPingsheet is a cloud based latency and packet loss monitoring platform built on\ntop of Google Sheets.\n\nA Google Sheet is used to configure a swarm of hosts with targets they should\nping, the hosts run the pings and add the results back into the Google Sheet.\n\nAs the data is in Google Sheets it makes it very simple and flexible to create\ndashboards using conditional formatting and charts.\n\nDue to limitations on how big a sheet can become this is best suited for short\nterm data.\n\n## Usage\n\n1. [Start by creating the required Google Sheets API credentials](#Create-Google-Credentials)\n2. [Then import the template sheet into Google Sheets](#Google-Sheet)\n3. [Configure your hosts, settings and targets in the Google Sheet](#Config)\n4. Download and install the latest executable for your host platform\n   * Mac OS\n     ```\n     wget https://github.com/adamkirchberger/pingsheet/releases/latest/download/pingsheet_Darwin_x86_64.tar.gz \u0026\u0026 \\\n     tar xvzf pingsheet_Darwin_x86_64.tar.gz pingsheet \u0026\u0026 \\\n     xattr -dr com.apple.quarantine pingsheet \u0026\u0026 \\\n     mv pingsheet /usr/local/sbin/\n     ```\n   * Linux\n     ```\n     wget https://github.com/adamkirchberger/pingsheet/releases/latest/download/pingsheet_Linux_x86_64.tar.gz \u0026\u0026 \\\n     tar xvzf pingsheet_Linux_x86_64.tar.gz pingsheet \u0026\u0026 \\\n     mv pingsheet /usr/local/sbin/\n     ```\n5. Run the tool\n   ```\n   pingsheet --credentials {{path-to-credentials}} --sheet {{sheet-ID}} --hostname {{hostname}} --secret {{secret}}\n   ```\n6. The tool will check for a config in the Google Sheet and run ping tests to the targets\n\n7. The tool will automatically create a worksheet to add all the results\n   * New results are added to the bottom as rows\n   * The 1st row contains the headers\n   * The 2nd row includes a formula to show the last metric\n\n## Setup\n\n### Create Google Credentials\n\n### Install\n\n#### Mac OS\n```\ncurl https://sdk.cloud.google.com | bash\n\nexec -l $SHELL\n```\n\n#### Other OS's\n* Follow the steps in https://cloud.google.com/storage/docs/gsutil_install\n\n### Instructions\n\n1. Run login init command\n```\ngcloud init\n```\n2. This will open a browser make sure to grant access\n\n4. Create a new project\n\n5. Enable Google Sheets API\n```\ngcloud services enable sheets.googleapis.com\n```\n\n6. Create new service account\n```\ngcloud iam service-accounts create pingsheet --display-name=pingsheet\nCreated service account [pingsheet].\n```\n\n7. Find the name of the newly created service account\n```\ngcloud iam service-accounts list\nNAME        EMAIL                                          DISABLED\npingsheet   pingsheet@testproj.iam.gserviceaccount.com  False\n```\n\n8. Create JSON key file using email from created service-account\n```\ngcloud iam service-accounts keys create credentials.json --iam-account=pingsheet@testproj.iam.gserviceaccount.com\n```\n\n### Google Sheet\n\n1. Create a Google Sheet from the template in the repo [`pingsheet_template.xls`](linkhere)\n\n2. Share the sheet with the email address from the key generated above\neg: `pingsheet@testproj.iam.gserviceaccount.com`\n\n3. Ensure that the user has `Editor/Write` permissions\n\n## Config\n\nYou should now have a Google Sheet created from the template and credentials\nready to use with sheet editing permissions.\n\n1. Add all the hosts where the `pingsheet` tool will run and initiate pings.\n   * Add a hostname to the `HOSTNAME` column\n   * Add a secret to the `SECRET` column\n\n2. Configure the `INTERVAL`, `COUNT` and `MAXROWS`\n   * `INTERVAL`: The amount of seconds between ping tests *(All targets are run in parallel)*\n   * `COUNT`: The amount of pings to send to each target\n   * `MAXROWS`: The maximum number of results to keep\n\n3. Configure ping targets for each host\n   * Add as many columns as necessary starting at `TARGET_1`, `TARGET_2`, etc...\n\n## FAQ\n\n### How often does the tool check for new targets?\nThe tool checks for new targets every 5 minutes. Any targets that have been removed will also be updated and no longer pinged.\n\n### What happens if the host running the tool loses Internet access?\nThe tool does not keep any results locally so any tests performed during this\ntime will be lost, however when the tool encounters an issue it will keep\nretrying every 60 seconds.\n\n### Are there any plans to test latency to TCP ports?\nThis is something that could be implemented in the future.\n\n## License\n\nThis project is licensed under the terms of the\n[MIT license](/LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamkirchberger%2Fpingsheet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadamkirchberger%2Fpingsheet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamkirchberger%2Fpingsheet/lists"}