Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/upscalesoftware/swoole-newrelic
New Relic APM and Browser monitoring of Swoole web-server
https://github.com/upscalesoftware/swoole-newrelic
Last synced: 3 months ago
JSON representation
New Relic APM and Browser monitoring of Swoole web-server
- Host: GitHub
- URL: https://github.com/upscalesoftware/swoole-newrelic
- Owner: upscalesoftware
- License: apache-2.0
- Created: 2019-05-23T19:50:21.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-18T04:02:20.000Z (almost 2 years ago)
- Last Synced: 2024-07-21T06:23:41.851Z (4 months ago)
- Language: PHP
- Homepage:
- Size: 936 KB
- Stars: 15
- Watchers: 4
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-swoole - upscale/swoole-newrelic - New Relic APM and Browser monitoring of Swoole web-server. (Logging)
README
New Relic Monitoring of Swoole
==============================This library enables monitoring of PHP applications powered by [Swoole](https://www.swoole.co.uk/) web-server via [New Relic](https://newrelic.com/) products.
**Features:**
- New Relic APM integration
- New Relic Browser integration## Demo
![New Relic APM dashboard](docs/img/newrelic_apm_swoole.png)
## Installation
The library is to be installed via [Composer](https://getcomposer.org/) as a dependency:
```bash
composer require upscale/swoole-newrelic
```## Usage
### Production
Monitoring of requests from start to finish can be activated by adding a few lines of code to the server entry point.
The monitoring instrumentation is by design completely transparent to an application running on the server.Install the monitoring instrumentation for all requests:
```php
use Upscale\Swoole\Newrelic;$page = <<
Example pageServed by Swoole server
HTML;
$server = new \Swoole\Http\Server('127.0.0.1', 8080);
$server->on('request', function ($request, $response) use ($page) {
// PHP processing within request boundary...
usleep(1000 * rand(100, 300));
// Send response
$response->end($page);
// PHP processing outside of request boundary...
usleep(1000 * rand(50, 150));
});// Real user monitoring (RUM)
$rum = new Newrelic\Browser(new Newrelic\Browser\TransactionFactory());
$rum->instrument($server);// Application performnce monitoring (APM)
$apm = new Newrelic\Apm(new Newrelic\Apm\TransactionFactory());
$apm->instrument($server);unset($rum, $apm);
$server->start();
```APM can be standalone or used in conjunction with the real user monitoring. RUM must be instrumented first.
Browser instrumentation is applied to non-AJAX requests having `text/html` response MIME type (the default).
### Development
Having to install the New Relic PHP extension locally may be inconvenient and outright undesirable for developers.
The workaround is to replace the New Relic reporting functionality with the "stub" implementation doing nothing:
```json
{
"require": {
"upscale/swoole-newrelic": "^1.0",
"killmails/polyfill-newrelic": "^1.0"
},
"replace": {
"ext-newrelic": "*"
}
}
```The PHP extension is used when installed and substituted with the [polyfill](https://github.com/killmails/polyfill-newrelic) otherwise.
## Limitations
Concurrent requests subject to [coroutine](https://www.swoole.co.uk/coroutine) multi-tasking are reported as part of the first in-flight transaction.
## Contributing
Pull Requests with fixes and improvements are welcome!
## License
Copyright © Upscale Software. All rights reserved.
Licensed under the [Apache License, Version 2.0](https://github.com/upscalesoftware/swoole-newrelic/blob/master/LICENSE.txt).