{"id":24387141,"url":"https://github.com/roadrunner-php/metrics","last_synced_at":"2025-04-11T03:51:30.792Z","repository":{"id":54429240,"uuid":"317827137","full_name":"roadrunner-php/metrics","owner":"roadrunner-php","description":":electric_plug: RoadRunner Metrics SDK","archived":false,"fork":false,"pushed_at":"2024-09-23T14:03:45.000Z","size":43,"stargazers_count":4,"open_issues_count":0,"forks_count":4,"subscribers_count":7,"default_branch":"3.x","last_synced_at":"2025-04-09T22:55:54.878Z","etag":null,"topics":["grafana","metrics","php","prometheus","prometheus-metrics","roadrunner"],"latest_commit_sha":null,"homepage":"https://roadrunner.dev","language":"PHP","has_issues":false,"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/roadrunner-php.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":"roadrunner-server"}},"created_at":"2020-12-02T10:31:33.000Z","updated_at":"2024-09-23T14:03:46.000Z","dependencies_parsed_at":"2023-11-14T12:50:17.043Z","dependency_job_id":null,"html_url":"https://github.com/roadrunner-php/metrics","commit_stats":null,"previous_names":["spiral/roadrunner-metrics"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roadrunner-php%2Fmetrics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roadrunner-php%2Fmetrics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roadrunner-php%2Fmetrics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roadrunner-php%2Fmetrics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roadrunner-php","download_url":"https://codeload.github.com/roadrunner-php/metrics/tar.gz/refs/heads/3.x","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248339262,"owners_count":21087214,"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":["grafana","metrics","php","prometheus","prometheus-metrics","roadrunner"],"created_at":"2025-01-19T12:22:03.118Z","updated_at":"2025-04-11T03:51:30.770Z","avatar_url":"https://github.com/roadrunner-php.png","language":"PHP","funding_links":["https://github.com/sponsors/roadrunner-server"],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://roadrunner.dev\" target=\"_blank\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/roadrunner-server/.github/assets/8040338/e6bde856-4ec6-4a52-bd5b-bfe78736c1ff\"\u003e\n    \u003cimg align=\"center\" src=\"https://github.com/roadrunner-server/.github/assets/8040338/040fb694-1dd3-4865-9d29-8e0748c2c8b8\"\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\n# RoadRunner Metrics Plugin\n\n[![PHP Version Require](https://poser.pugx.org/spiral/roadrunner-metrics/require/php)](https://packagist.org/packages/spiral/roadrunner-metrics)\n[![Latest Stable Version](https://poser.pugx.org/spiral/roadrunner-metrics/version)](https://packagist.org/packages/spiral/roadrunner-metrics)\n[![phpunit](https://github.com/spiral/roadrunner-metrics/actions/workflows/phpunit.yml/badge.svg)](https://github.com/spiral/roadrunner-metrics/actions)\n[![psalm](https://github.com/spiral/roadrunner-metrics/actions/workflows/psalm.yml/badge.svg)](https://github.com/spiral/roadrunner-metrics/actions)\n[![Total Downloads](https://poser.pugx.org/spiral/roadrunner-metrics/downloads)](https://packagist.org/packages/spiral/roadrunner-metrics)\n\nThis repository contains the codebase PHP bridge using RoadRunner Metrics plugin.\n\n## Installation:\n\nTo install RoadRunner extension:\n\n```bash\ncomposer require spiral/roadrunner-metrics\n```\n\nYou can use the convenient installer to download the latest available compatible version of RoadRunner assembly:\n\n```bash\ncomposer require spiral/roadrunner-cli --dev\nvendor/bin/rr get\n```\n\n## Configuration\n\nEnable metrics service in your `.rr.yaml` file:\n\n```yaml\nrpc:\n    listen: tcp://127.0.0.1:6001\n\nserver:\n    command: \"php worker.php\"\n\nhttp:\n    address: \"0.0.0.0:8080\"\n\nmetrics:\n    address: \"0.0.0.0:2112\"\n```\n\n## Usage\n\nTo publish metrics from your application worker:\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nuse Nyholm\\Psr7\\Factory;use Spiral\\Goridge;use Spiral\\RoadRunner;\n\ninclude \"vendor/autoload.php\";\n\n$worker = new RoadRunner\\Http\\PSR7Worker(\n    RoadRunner\\Worker::create(),\n    new Factory\\Psr17Factory(),\n    new Factory\\Psr17Factory(),\n    new Factory\\Psr17Factory()\n);\n\n# Create metrics client\n$metrics = new RoadRunner\\Metrics\\Metrics(\n    Goridge\\RPC\\RPC::create(RoadRunner\\Environment::fromGlobals()-\u003egetRPCAddress())\n);\n\n# Declare counter\n$metrics-\u003edeclare(\n    'http_requests',\n    RoadRunner\\Metrics\\Collector::counter()\n        -\u003ewithHelp('Collected HTTP requests.')\n        -\u003ewithLabels('status', 'method'),\n);\n\nwhile ($req = $worker-\u003ewaitRequest()) {\n    try {\n        $response = new \\Nyholm\\Psr7\\Response();\n        $response-\u003egetBody()-\u003ewrite(\"hello world\");\n\n        # Publish metrics for each request with labels (status, method)\n        $metrics-\u003eadd('http_requests', 1, [\n            $response-\u003egetStatusCode(),\n            $req-\u003egetMethod(),\n        ]);\n\n        $worker-\u003erespond($rsp);\n    } catch (\\Throwable $e) {\n        $worker-\u003egetWorker()-\u003eerror((string)$e);\n\n        $metrics-\u003eadd('http_requests', 1, [503,$req-\u003egetMethod(),]);\n    }\n}\n```\n\n\u003ca href=\"https://spiral.dev/\"\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/773481/220979012-e67b74b5-3db1-41b7-bdb0-8a042587dedc.jpg\" alt=\"try Spiral Framework\" /\u003e\n\u003c/a\u003e\n\n## License:\n\nThe MIT License (MIT). Please see [`LICENSE`](./LICENSE) for more information. Maintained\nby [Spiral Scout](https://spiralscout.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froadrunner-php%2Fmetrics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froadrunner-php%2Fmetrics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froadrunner-php%2Fmetrics/lists"}