{"id":18953022,"url":"https://github.com/walkure/pushproxy-light","last_synced_at":"2025-07-11T16:07:21.144Z","repository":{"id":145003048,"uuid":"367896429","full_name":"walkure/pushproxy-light","owner":"walkure","description":null,"archived":false,"fork":false,"pushed_at":"2021-05-16T14:01:42.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-01T22:36:38.138Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/walkure.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":"2021-05-16T14:01:33.000Z","updated_at":"2021-05-21T13:49:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"1e9de7d6-25a6-4329-868e-134d986851a4","html_url":"https://github.com/walkure/pushproxy-light","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/walkure/pushproxy-light","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walkure%2Fpushproxy-light","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walkure%2Fpushproxy-light/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walkure%2Fpushproxy-light/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walkure%2Fpushproxy-light/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/walkure","download_url":"https://codeload.github.com/walkure/pushproxy-light/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/walkure%2Fpushproxy-light/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264849941,"owners_count":23673225,"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-11-08T13:35:42.795Z","updated_at":"2025-07-11T16:07:21.093Z","avatar_url":"https://github.com/walkure.png","language":"Go","readme":"# pushproxy-light\n\nA primitive proxy implementation to transverse NAT for [Prometheus](https://prometheus.io/) like [PushProx](https://github.com/prometheus-community/PushProx) and [Pushgateway](https://github.com/prometheus/pushgateway).\n\n# Difference from PushProx / Pushgateway\n\n## PushProx\n - Push metrics from client exporting program directly.\n\n\n## Pushgateway\n- Metrics data has lifetime.\n\n# Motivation\n\nI tried to use PushProx to monitor a Raspberry Pi Model B that was doing environmental observations of the room and executing dump1090/rtl-sdr. However I could not execute PushProx client due to limitation of computing resouces(dump1090 is so heavy). ;(.\n\n# Usage\n `pushprox-light --preSharedKey=hogehoge ...`\n\n- `--preSharedKey` (mandatory)\n  - Pre-Shared Key to sign metrics data.\n- `--metricsLifetime` default=5\n  - Metrics Lifetime in minutes.\n- `--httpListener`  default=`:8080`\n  - Listening Address/Port\n- `--proxyMetricsPath` default=`/metrics`\n  - Path URI of Metrics where Prometheus scapes.\n- `--pushURIPrefix`\n  - Path Prefix of retrieving metrics URI(e.g. behind reverse proxy)\n\n# Push Protocol\nPushProx-light accepts JSON text as metrics data(body).\n\nSend signature with pre-shared key for tamper detection and authentication.\n\n## HTTP Methods\n- GET\n  - `URL?signature=SIGNATURE\u0026body=BODY`\n- POST as Form data (`application/x-www-form-urlencoded`).\n  - `signature=SIGNATURE\u0026body=BODY`\n- POST JSON (`application/json`)\n  - `X-Signature` Header shows signature.\n  - body is POST body.\n\n## Push URL Path\n\n`/push/{{hostname}}`\n\n{{hostname}} is the same as the hostname in the Prometheus configuration.\n\n## body\nMetrics data expressed as JSON.\n\n```json\n{\n\t\"name of metrics\": {\n\t\t\"type\": \"gauge/counter\",\n\t\t\"help\": \"description of metrics\",\n\t\t\"metrics\": [{\n\t\t\t\"value\": \"11.1\",\n\t\t\t\"labels\": {\n\t\t\t\t\"key1\": \"value1\",\n\t\t\t\t\"key2\": \"value2\"\n\t\t\t}\n\t\t}]\n\t}\n}\n```\n\n## signature\n\n`alg := '1'(md5),'5'(sha256)','6'(sha512)`\n\n`signature :=  fmt.Sprintf(\"%c%x\",alg, md5/sha256/sha512.Sum(body+preSharedKey))`\n\n# Dependeicies\n- [github.com/gorilla/mux](https://github.com/gorilla/mux)\n- [github.com/patrickmn/go-cache](https://github.com/patrickmn/go-cache)\n\n# Author\nwalkure ","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwalkure%2Fpushproxy-light","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwalkure%2Fpushproxy-light","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwalkure%2Fpushproxy-light/lists"}