{"id":13827446,"url":"https://github.com/messagebird/pushprom","last_synced_at":"2026-01-24T09:31:37.209Z","repository":{"id":9088861,"uuid":"60785615","full_name":"messagebird/pushprom","owner":"messagebird","description":"Pushprom is a proxy to the Prometheus Go client.","archived":false,"fork":false,"pushed_at":"2022-12-06T11:30:28.000Z","size":1816,"stargazers_count":80,"open_issues_count":8,"forks_count":13,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-11-20T06:34:26.573Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.messagebird.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/messagebird.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-09T15:29:36.000Z","updated_at":"2024-01-03T14:13:47.000Z","dependencies_parsed_at":"2023-01-11T17:32:39.094Z","dependency_job_id":null,"html_url":"https://github.com/messagebird/pushprom","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/messagebird/pushprom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/messagebird%2Fpushprom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/messagebird%2Fpushprom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/messagebird%2Fpushprom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/messagebird%2Fpushprom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/messagebird","download_url":"https://codeload.github.com/messagebird/pushprom/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/messagebird%2Fpushprom/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28723233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T08:27:05.734Z","status":"ssl_error","status_checked_at":"2026-01-24T08:27:01.197Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":[],"created_at":"2024-08-04T09:01:57.394Z","updated_at":"2026-01-24T09:31:37.192Z","avatar_url":"https://github.com/messagebird.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\n# Pushprom\n\n[![Build Status](https://travis-ci.org/messagebird/pushprom.svg?branch=master)](https://travis-ci.org/messagebird/pushprom)\n\nPushprom is a proxy (HTTP/UDP) to the [Prometheus](https://prometheus.io/) Go client.\n\nPrometheus doesn't offer a PHP client and PHP clients are hard to implement because they would need to keep track of state and PHP setups generally don't encourage that. That's why we built Pushprom.\n\n## Dependencies\n\n- [make](https://www.gnu.org/software/make/)\n- [golang](https://go.dev/)\n- [docker](https://www.docker.com/)\n- [github-release](https://cli.github.com/manual/gh_release_create)\n\n## Installing\n\nExecute the following command:\n\n```bash\ngo get -u github.com/messagebird/pushprom\n```\n\nTo build amd64/linux binary:\n```bash\nmake release_linux\n```\n\nTo build os \u0026 platform dependent native binary:\n```bash\nmake native\n```\n\nTo build using Docker container:\n\n```bash\nmake container\n```\n\n## Release\n\n```bash\nVERSION=1.0.9 ./release.sh\n```\n\n## Usage\n\nRunning Pushprom is as easy as executing `pushprom` on the command line.\n\n```\n$ pushprom\n2016/08/25 10:43:32 http.go:36: exposing metrics on http://0.0.0.0:9091/metrics\n2016/08/25 10:43:32 udp.go:10: listening for stats UDP on port :9090\n2016/08/25 10:43:32 http.go:39: listening for stats on http://0.0.0.0:9091\n```\n\nUse the `-h` flag to get help information.\n\n```\n$ pushprom -h\nUsage of bin/pushprom:\n  -http-listen-address string\n        The address to listen on for http stat and telemetry requests. (default \":9091\")\n  -udp-listen-address string\n        The address to listen on for udp stats requests. (default \":9090\")\n```\n\nPushprom accepts HTTP and UDP requests. The payloads are in JSON. Here is a full example:\n\n```json\n{\n      \"type\": \"gauge\",\n      \"name\": \"trees\",\n      \"help\": \"the amount of trees in the forest.\",\n      \"method\": \"add\",\n      \"value\": 3002,\n      \"labels\": {\n            \"species\": \"araucaria angustifolia\",\n            \"job\": \"tree-counter-bot\"\n      }\n}\n```\n\nWhen Pushprom receives this payload (from now on called Delta) it tries to register the metric with type **Gauge** named **trees** and then apply the operation **add** with value **3002** on it.\n\n## Protocol support\n\nYou can use HTTP requests and UDP packages to push deltas to Pushprom.\n\n### HTTP\n\nWhen using HTTP you should do a `POST /`.\n\nExample:\n\n```bash\ncurl -H \"Content-type: application/json\" -X POST -d '{\"type\": \"counter\", \"name\": \"gophers\", \"help\": \"little burrowing rodents\", \"method\": \"inc\"}' http://127.0.0.1:9091/\n```\n\n### UDP\n\n*You move fast and break things.*\n\nExample:\n\n```bash\necho \"{\\\"type\\\": \\\"counter\\\", \\\"name\\\": \\\"gophers\\\", \\\"help\\\": \\\"little burrowing rodents\\\", \\\"method\\\": \\\"inc\\\"}\" | nc -u -w1 127.0.0.1 9090\n```\n\n## Caveats\n\nIn the Prometheus Go client you can not register a metric with the same **name** and different **help** or **labels**. For example: you register a metric with name `gophers` and with help `little rodents` and a little later you think \"but they are also burrowing animals!\". When you change the help string and push the same metric it won't work: you need to reboot Pushprom.\n\n## Clients\n\nWe currently offer two flavors of PHP clients for Pushprom:\n* [PHP](https://github.com/messagebird/pushprom-php-client)\n* [Yii 2](https://github.com/messagebird/pushprom-yii2-client)\n\n## Alternatives\n\n### Pushgateway\n\n[Pushgateway](https://github.com/prometheus/pushgateway) is a metrics cache for Prometheus. It's explicitly not an aggregator, which is the most distinct difference with Pushprom.\n\n# Tests\n\n```bash\ngo test ./...\n```\n\n## License\n\nPushprom is licensed under [The BSD 2-Clause License](http://opensource.org/licenses/BSD-2-Clause). Copyright (c) 2022, MessageBird\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmessagebird%2Fpushprom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmessagebird%2Fpushprom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmessagebird%2Fpushprom/lists"}