napp / xray-laravel Goto Github PK
View Code? Open in Web Editor NEWAWS X-Ray tracing for Laravel apps
License: MIT License
AWS X-Ray tracing for Laravel apps
License: MIT License
When eager loading a large set of nested relations it may happen that the backtracer does not find a frame in the first 50 that is not filtered out. As a consequence, when the sql-segment tries to get the caller class it crashes because $backtrace[0]
is undefined.
A solution is probably to be more defensive when determining the class name and provide a default in case the class name was not found in the first 50 stack frames.
So I'm using the daemon and most of my requests are not being logged, only some of my GET requests are working.
Looking through the Daemon logs, there are a bunch of these errors.
It looks to me like it's failing because there are invalid characters being set for the sub segment names, in my case my best guess is the '?' in "name": "mysql at RouteBinding:?", below. If I disable the Database query traces it appears to be working.
Is it possible to remove non supported characters from the segment names to match the supported ones?
2023-01-18T18:05:40Z [Error] Unprocessed trace 1-63c834f4-107c98a429f50b1a561f013a, segment: { xray_1 | ErrorCode: "InvalidName", xray_1 | Id: "ca2a3dfacbb4db1d", xray_1 | Message: "Invalid subsegment. ErrorCode: InvalidName, Cause: null" xray_1 | }
This is an example of the trace it's trying to submit
{ "id": "ca2a3dfacbb4db1d", "trace_id": "1-63c834f4-107c98a429f50b1a561f013a", "name": "APP HTTP", "start_time": 1674065140.307433, "end_time": 1674065140.44286, "subsegments": [ { "id": "2273081f032ba796", "name": "laravel boot", "start_time": 1674065140.294943, "end_time": 1674065140.316362 }, { "id": "ad292b6331b4980c", "name": "mysql at AuthDomain:33", "start_time": 1674065140.413419, "end_time": 1674065140.5058491, "metadata": { "backtrace": [ "App\\AuthDomain:33", "App\\AuthDomain:44", "App\\AuthDomain:132", "Illuminate\\Auth\\SessionGuard:124", "Illuminate\\Auth\\SessionGuard:336", "Illuminate\\Auth\\AuthManager:25", "App\\Scopes\\DomainScope:1170", "Illuminate\\Auth\\EloquentUserProvider:42", "Laravel\\Passport\\PassportUserProvider:229", "Laravel\\Passport\\Guards\\TokenGuard:112" ] }, "namespace": "remote", "sql": { "database_type": "mysql", "sanitized_query": "select * from
domainswhere
sub_domain= 'dev' and
domains.
deleted_atis null limit 1" } }, { "id": "329d707c49dba220", "name": "mysql at EloquentUserProvider:42", "start_time": 1674065140.416229, "end_time": 1674065140.417839, "metadata": { "backtrace": [ "Illuminate\\Auth\\EloquentUserProvider:42", "Laravel\\Passport\\PassportUserProvider:229", "Laravel\\Passport\\Guards\\TokenGuard:112", "Laravel\\Passport\\Guards\\TokenGuard:309", "Laravel\\Passport\\PassportServiceProvider:?", "Illuminate\\Auth\\RequestGuard:60", "Illuminate\\Auth\\RequestGuard:63", "Illuminate\\Auth\\Middleware\\Authenticate:42", "Illuminate\\Auth\\Middleware\\Authenticate:167", "Illuminate\\Pipeline\\Pipeline:103" ] }, "namespace": "remote", "sql": { "database_type": "mysql", "sanitized_query": "select * from
userswhere
id= 'c642ff79-1d03-40d1-9094-7885fa7033da' and
users.
deleted_atis null and
users.
domain_id= '19d49344-1173-4ae1-b2fd-500632db0ec6' limit 1" } }, { "id": "72d3fc0e1ac03e30", "name": "mysql at RouteBinding:?", "start_time": 1674065140.42018, "end_time": 1674065140.42206, "metadata": { "backtrace": [ "Illuminate\\Routing\\RouteBinding:?", "Illuminate\\Routing\\Router:842", "Illuminate\\Routing\\Router:39", "Illuminate\\Routing\\Middleware\\SubstituteBindings:167", "Illuminate\\Pipeline\\Pipeline:65", "Illuminate\\Routing\\Middleware\\ThrottleRequestsWithRedis:63", "Illuminate\\Routing\\Middleware\\ThrottleRequests:167", "Illuminate\\Pipeline\\Pipeline:44", "Illuminate\\Auth\\Middleware\\Authenticate:167", "Illuminate\\Pipeline\\Pipeline:103" ] }, "namespace": "remote", "sql": { "database_type": "mysql", "sanitized_query": "select * from
domainswhere
sub_domain= 'dev' and
domains.
deleted_atis null limit 1" } }, { "id": "41ee2cb8b5eb623e", "name": "mysql at CmsFolder:34", "start_time": 1674065140.429208, "end_time": 1674065140.433018, "metadata": { "backtrace": [ "App\\Models\\CmsFolder:34", "App\\Models\\CmsFolder:1475", "App\\Models\\CmsFolder:20", "App\\Models\\CmsFolder:1475", "App\\Services\\CmsFolderService:45", "App\\Http\\Controllers\\Api\\CmsFolderController:54", "Illuminate\\Routing\\Controller:45", "Illuminate\\Routing\\ControllerDispatcher:262", "Illuminate\\Routing\\Route:205", "Illuminate\\Routing\\Route:721" ] }, "namespace": "remote", "sql": { "database_type": "mysql", "sanitized_query": "select * from
cms_folderswhere
parent_idis null and
cms_folders.
domain_id= '19d49344-1173-4ae1-b2fd-500632db0ec6' and
cms_folders.
deleted_atis null limit 1" } }, { "id": "bd2f1abe49e2e804", "name": "mysql at CmsFolderService:45", "start_time": 1674065140.433237, "end_time": 1674065140.436227, "metadata": { "backtrace": [ "App\\Services\\CmsFolderService:45", "App\\Http\\Controllers\\Api\\CmsFolderController:54", "Illuminate\\Routing\\Controller:45", "Illuminate\\Routing\\ControllerDispatcher:262", "Illuminate\\Routing\\Route:205", "Illuminate\\Routing\\Route:721", "Illuminate\\Routing\\Router:128", "Illuminate\\Pipeline\\Pipeline:47", "App\\Http\\Middleware\\SetLocale:167", "Illuminate\\Pipeline\\Pipeline:50" ] }, "namespace": "remote", "sql": { "database_type": "mysql", "sanitized_query": "select count(*) as aggregate from
cms_folderswhere
parent_idis not null and
parent_id= 'cab2b68f-d6bd-457f-9a21-cb8e9ed8abf3' and
cms_folders.
domain_id= '19d49344-1173-4ae1-b2fd-500632db0ec6' and
cms_folders.
deleted_atis null" } }, { "id": "0c4985a4754d397e", "name": "mysql at CmsFolderService:45", "start_time": 1674065140.43718, "end_time": 1674065140.4404101, "metadata": { "backtrace": [ "App\\Services\\CmsFolderService:45", "App\\Http\\Controllers\\Api\\CmsFolderController:54", "Illuminate\\Routing\\Controller:45", "Illuminate\\Routing\\ControllerDispatcher:262", "Illuminate\\Routing\\Route:205", "Illuminate\\Routing\\Route:721", "Illuminate\\Routing\\Router:128", "Illuminate\\Pipeline\\Pipeline:47", "App\\Http\\Middleware\\SetLocale:167", "Illuminate\\Pipeline\\Pipeline:50" ] }, "namespace": "remote", "sql": { "database_type": "mysql", "sanitized_query": "select * from
cms_folderswhere
parent_idis not null and
parent_id= 'cab2b68f-d6bd-457f-9a21-cb8e9ed8abf3' and
cms_folders.
domain_id= '19d49344-1173-4ae1-b2fd-500632db0ec6' and
cms_folders.
deleted_atis null order by
nameasc,
updated_at desc limit 100 offset 0" } } ], "annotations": { "Framework": "Laravel 8.80.0", "PHP Version": "8.1.10" }, "http": { "request": { "url": "https://dev.mydomain.com/api/cms-folders", "method": "GET", "client_ip": "10.1.0.248" }, "response": { "status": 200 } } }
Is there a convenience method to insert annotations for the entire app (all requests should have them)?
Right now seems like needing to customise SegmentCollector.php
public function initHttpTracer(Request $request): void
{
if (! $this->isTracerEnabled()) {
return;
}
$this->segments = [];
$tracer = $this->tracer()
->setTraceHeader($_SERVER['HTTP_X_AMZN_TRACE_ID'] ?? null)
->setName(config('app.name'))
->setClientIpAddress($request->getClientIp())
->addAnnotation('Framework', 'Laravel ' . app()->version())
->addAnnotation('PHP Version', PHP_VERSION)
// EXTRA ANNONTATION TO DEFINE SYSTEM BOUNDARY
->addAnnotation("System", "SYSTEM NAME TO DIFFERENTIATE FROM OTHERS")
->setUrl($request->url())
->setMethod($request->method());
$tracer->begin(100);
}
Get the error from AWS client.
Do you have any idea about my error message?
AWS Client return error
"UnprocessedTraceSegments": [ { "Id": "c2a0319811ccbc58", "ErrorCode": "MissingEndTime", "Message": "Invalid subsegment. ErrorCode: MissingEndTime, Cause: null" } ], "@metadata": { "statusCode": 200, "effectiveUri": "https:\/\/xray.ap-east-1.amazonaws.com\/TraceSegments", "headers": { "date": "Sat, 15 May 2021 10:56:22 GMT", "content-type": "application\/json", "content-length": "156", "connection": "keep-alive", "x-amzn-requestid": "022d118f-b269-448c-b895-ae8e195d8962" }, "transferStats": { "http": [ [] ] } }
Submit data
{ "id": "c2a0319811ccbc58", "trace_id": "1-609fa8d4-1fad76e1dd7f69f43beb0695", "name": "***", "start_time": 1621076180.124956, "end_time": 1621076181.859172, "subsegments": [...] } ], "annotations": { "Framework": "Laravel 5.8.38", "PHP Version": "7.4.2" }, "http": { "request": { "url": "***", "method": "GET", "client_ip": "::1" }, "response": { "status": 200 } } }
Hi,
I have had encountered an issue while installing this package on Lumen.
Steps to reproduce:
Stack Trace:
{
"message": "Target class [Illuminate\\Foundation\\Application] does not exist.",
"exception": "Illuminate\\Contracts\\Container\\BindingResolutionException",
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/Container.php",
"line": 914,
"trace": [
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/Container.php",
"line": 795,
"function": "build",
"class": "Illuminate\\Container\\Container",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/Container.php",
"line": 731,
"function": "resolve",
"class": "Illuminate\\Container\\Container",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/laravel/lumen-framework/src/Application.php",
"line": 327,
"function": "make",
"class": "Illuminate\\Container\\Container",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/Container.php",
"line": 1066,
"function": "make",
"class": "Laravel\\Lumen\\Application",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/Container.php",
"line": 982,
"function": "resolveClass",
"class": "Illuminate\\Container\\Container",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/Container.php",
"line": 943,
"function": "resolveDependencies",
"class": "Illuminate\\Container\\Container",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/Container.php",
"line": 795,
"function": "build",
"class": "Illuminate\\Container\\Container",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/Container.php",
"line": 731,
"function": "resolve",
"class": "Illuminate\\Container\\Container",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/laravel/lumen-framework/src/Application.php",
"line": 327,
"function": "make",
"class": "Illuminate\\Container\\Container",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/laravel/lumen-framework/src/helpers.php",
"line": 42,
"function": "make",
"class": "Laravel\\Lumen\\Application",
"type": "->"
},
{
"file": "/var/www/open-source/libs/xray-laravel/src/XrayServiceProvider.php",
"line": 60,
"function": "app"
},
{
"file": "/var/www/open-source/libs/xray-laravel/src/XrayServiceProvider.php",
"line": 51,
"function": "registerCollectors",
"class": "Napp\\Xray\\XrayServiceProvider",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/BoundMethod.php",
"line": 36,
"function": "boot",
"class": "Napp\\Xray\\XrayServiceProvider",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/Util.php",
"line": 41,
"function": "Illuminate\\Container\\{closure}",
"class": "Illuminate\\Container\\BoundMethod",
"type": "::"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/BoundMethod.php",
"line": 93,
"function": "unwrapIfClosure",
"class": "Illuminate\\Container\\Util",
"type": "::"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/BoundMethod.php",
"line": 37,
"function": "callBoundMethod",
"class": "Illuminate\\Container\\BoundMethod",
"type": "::"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/illuminate/container/Container.php",
"line": 662,
"function": "call",
"class": "Illuminate\\Container\\BoundMethod",
"type": "::"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/laravel/lumen-framework/src/Application.php",
"line": 304,
"function": "call",
"class": "Illuminate\\Container\\Container",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/laravel/lumen-framework/src/Application.php",
"line": 289,
"function": "bootProvider",
"class": "Laravel\\Lumen\\Application",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php",
"line": 165,
"function": "boot",
"class": "Laravel\\Lumen\\Application",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php",
"line": 112,
"function": "dispatch",
"class": "Laravel\\Lumen\\Application",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/public/index.php",
"line": 28,
"function": "run",
"class": "Laravel\\Lumen\\Application",
"type": "->"
}
]
}{
"message": "Call to undefined function Napp\\Xray\\Submission\\now()",
"exception": "Error",
"file": "/var/www/open-source/libs/xray-laravel/src/Submission/APISegmentSubmitter.php",
"line": 21,
"trace": [
{
"file": "/var/www/open-source/libs/xray-laravel/src/Collectors/SegmentCollector.php",
"line": 142,
"function": "__construct",
"class": "Napp\\Xray\\Submission\\APISegmentSubmitter",
"type": "->"
},
{
"file": "/var/www/open-source/libs/xray-laravel/src/Xray.php",
"line": 81,
"function": "submitHttpTracer",
"class": "Napp\\Xray\\Collectors\\SegmentCollector",
"type": "->"
},
{
"file": "/var/www/open-source/libs/xray-laravel/src/Middleware/RequestTracing.php",
"line": 32,
"function": "submitHttpTracer",
"class": "Napp\\Xray\\Xray",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php",
"line": 149,
"function": "terminate",
"class": "Napp\\Xray\\Middleware\\RequestTracing",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php",
"line": 121,
"function": "callTerminableMiddleware",
"class": "Laravel\\Lumen\\Application",
"type": "->"
},
{
"file": "/var/www/open-source/lumen-oss/public/index.php",
"line": 28,
"function": "run",
"class": "Laravel\\Lumen\\Application",
"type": "->"
}
]
}
Currently, all the incoming request are recorded. This can be problematic since they might have some request we wish not to be recorded. For example, we have a health check path that is used to determine whether the application is running correctly or not. This url is called once every 10 seconds or so, which creates a lot of noise in AWS X-Ray.
There should have a way to do some sort of request filtering. Maybe by adding a callback that is used to check if the current request should be recorded or not. This callback could take the incoming request as an argument and return true
or false
.
Note. I will attempt to fix this problem and submit a pull request for review.
The "PHP Version" annotation never actually gets set, it's rejected due to having a space which AWS doesn't permit
Hello,
This package fails to install on Laravel 8 giving the following error output
`Your requirements could not be resolved to an installable set of packages.
Problem 1
- Conclusion: remove laravel/framework v8.20.1
- Conclusion: don't install laravel/framework v8.20.1
- napp/xray-laravel 1.1.0 requires illuminate/console ^5.5|^6.0|^7.0 -> satisfiable by illuminate/console[5.5.x-dev, 5.6.x-dev, 5.7.17, 5.7.18, 5.7.19, 5.7.x-dev, 5.8.x-dev, 6.x-dev, 7.x-dev, v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.39, v5.5.40, v5.5.41, v5.5.43, v5.5.44, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.32, v5.6.33, v5.6.34, v5.6.35, v5.6.36, v5.6.37, v5.6.38, v5.6.39, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9, v5.7.0, v5.7.1, v5.7.10, v5.7.11, v5.7.15, v5.7.2, v5.7.20, v5.7.21, v5.7.22, v5.7.23, v5.7.26, v5.7.27, v5.7.28, v5.7.3, v5.7.4, v5.7.5, v5.7.6, v5.7.7, v5.7.8, v5.7.9, v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9, v6.0.0, v6.0.1, v6.0.2, v6.0.3, v6.0.4, v6.1.0, v6.10.0, v6.11.0, v6.12.0, v6.13.0, v6.13.1, v6.14.0, v6.15.0, v6.15.1, v6.16.0, v6.17.0, v6.17.1, v6.18.0, v6.18.1, v6.18.10, v6.18.11, v6.18.12, v6.18.13, v6.18.14, v6.18.15, v6.18.16, v6.18.17, v6.18.18, v6.18.19, v6.18.2, v6.18.20, v6.18.21, v6.18.22, v6.18.23, v6.18.24, v6.18.25, v6.18.26, v6.18.27, v6.18.28, v6.18.29, v6.18.3, v6.18.30, v6.18.31, v6.18.32, v6.18.33, v6.18.34, v6.18.35, v6.18.36, v6.18.37, v6.18.38, v6.18.39, v6.18.4, v6.18.40, v6.18.41, v6.18.42, v6.18.43, v6.18.5, v6.18.6, v6.18.7, v6.18.8, v6.18.9, v6.19.0, v6.19.1, v6.2.0, v6.20.0, v6.20.1, v6.20.2, v6.20.3, v6.20.4, v6.20.5, v6.20.6, v6.20.7, v6.20.8, v6.20.9, v6.3.0, v6.4.1, v6.5.0, v6.5.1, v6.5.2, v6.6.0, v6.6.1, v6.6.2, v6.7.0, v6.8.0, v7.0.0, v7.0.1, v7.0.2, v7.0.3, v7.0.4, v7.0.5, v7.0.6, v7.0.7, v7.0.8, v7.1.0, v7.1.1, v7.1.2, v7.1.3, v7.10.0, v7.10.1, v7.10.2, v7.10.3, v7.11.0, v7.12.0, v7.13.0, v7.14.0, v7.14.1, v7.15.0, v7.16.0, v7.16.1, v7.17.0, v7.17.1, v7.17.2, v7.18.0, v7.19.0, v7.19.1, v7.2.0, v7.2.1, v7.2.2, v7.20.0, v7.21.0, v7.22.0, v7.22.1, v7.22.2, v7.22.3, v7.22.4, v7.23.0, v7.23.1, v7.23.2, v7.24.0, v7.25.0, v7.26.0, v7.26.1, v7.27.0, v7.28.0, v7.28.1, v7.28.2, v7.28.3, v7.28.4, v7.29.0, v7.29.1, v7.29.2, v7.29.3, v7.3.0, v7.30.0, v7.30.1, v7.4.0, v7.5.0, v7.5.1, v7.5.2, v7.6.0, v7.6.1, v7.6.2, v7.7.0, v7.7.1, v7.8.0, v7.8.1, v7.9.0, v7.9.1, v7.9.2].
- napp/xray-laravel 1.1.1 requires illuminate/console ^5.5|^6.0|^7.0 -> satisfiable by illuminate/console[5.5.x-dev, 5.6.x-dev, 5.7.17, 5.7.18, 5.7.19, 5.7.x-dev, 5.8.x-dev, 6.x-dev, 7.x-dev, v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.39, v5.5.40, v5.5.41, v5.5.43, v5.5.44, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.32, v5.6.33, v5.6.34, v5.6.35, v5.6.36, v5.6.37, v5.6.38, v5.6.39, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9, v5.7.0, v5.7.1, v5.7.10, v5.7.11, v5.7.15, v5.7.2, v5.7.20, v5.7.21, v5.7.22, v5.7.23, v5.7.26, v5.7.27, v5.7.28, v5.7.3, v5.7.4, v5.7.5, v5.7.6, v5.7.7, v5.7.8, v5.7.9, v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9, v6.0.0, v6.0.1, v6.0.2, v6.0.3, v6.0.4, v6.1.0, v6.10.0, v6.11.0, v6.12.0, v6.13.0, v6.13.1, v6.14.0, v6.15.0, v6.15.1, v6.16.0, v6.17.0, v6.17.1, v6.18.0, v6.18.1, v6.18.10, v6.18.11, v6.18.12, v6.18.13, v6.18.14, v6.18.15, v6.18.16, v6.18.17, v6.18.18, v6.18.19, v6.18.2, v6.18.20, v6.18.21, v6.18.22, v6.18.23, v6.18.24, v6.18.25, v6.18.26, v6.18.27, v6.18.28, v6.18.29, v6.18.3, v6.18.30, v6.18.31, v6.18.32, v6.18.33, v6.18.34, v6.18.35, v6.18.36, v6.18.37, v6.18.38, v6.18.39, v6.18.4, v6.18.40, v6.18.41, v6.18.42, v6.18.43, v6.18.5, v6.18.6, v6.18.7, v6.18.8, v6.18.9, v6.19.0, v6.19.1, v6.2.0, v6.20.0, v6.20.1, v6.20.2, v6.20.3, v6.20.4, v6.20.5, v6.20.6, v6.20.7, v6.20.8, v6.20.9, v6.3.0, v6.4.1, v6.5.0, v6.5.1, v6.5.2, v6.6.0, v6.6.1, v6.6.2, v6.7.0, v6.8.0, v7.0.0, v7.0.1, v7.0.2, v7.0.3, v7.0.4, v7.0.5, v7.0.6, v7.0.7, v7.0.8, v7.1.0, v7.1.1, v7.1.2, v7.1.3, v7.10.0, v7.10.1, v7.10.2, v7.10.3, v7.11.0, v7.12.0, v7.13.0, v7.14.0, v7.14.1, v7.15.0, v7.16.0, v7.16.1, v7.17.0, v7.17.1, v7.17.2, v7.18.0, v7.19.0, v7.19.1, v7.2.0, v7.2.1, v7.2.2, v7.20.0, v7.21.0, v7.22.0, v7.22.1, v7.22.2, v7.22.3, v7.22.4, v7.23.0, v7.23.1, v7.23.2, v7.24.0, v7.25.0, v7.26.0, v7.26.1, v7.27.0, v7.28.0, v7.28.1, v7.28.2, v7.28.3, v7.28.4, v7.29.0, v7.29.1, v7.29.2, v7.29.3, v7.3.0, v7.30.0, v7.30.1, v7.4.0, v7.5.0, v7.5.1, v7.5.2, v7.6.0, v7.6.1, v7.6.2, v7.7.0, v7.7.1, v7.8.0, v7.8.1, v7.9.0, v7.9.1, v7.9.2].
- don't install illuminate/console 6.x-dev|don't install laravel/framework v8.20.1
- don't install illuminate/console 7.x-dev|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.0.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.0.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.0.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.0.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.0.4|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.1.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.10.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.11.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.12.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.13.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.13.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.14.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.15.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.15.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.16.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.17.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.17.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.10|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.11|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.12|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.13|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.14|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.15|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.16|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.17|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.18|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.19|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.20|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.21|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.22|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.23|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.24|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.25|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.26|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.27|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.28|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.29|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.30|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.31|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.32|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.33|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.34|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.35|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.36|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.37|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.38|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.39|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.4|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.40|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.41|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.42|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.43|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.5|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.6|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.7|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.8|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.18.9|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.19.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.19.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.2.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.20.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.20.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.20.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.20.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.20.4|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.20.5|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.20.6|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.20.7|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.20.8|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.20.9|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.3.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.4.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.5.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.5.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.5.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.6.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.6.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.6.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.7.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v6.8.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.0.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.0.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.0.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.0.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.0.4|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.0.5|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.0.6|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.0.7|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.0.8|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.1.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.1.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.1.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.1.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.10.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.10.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.10.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.10.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.11.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.12.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.13.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.14.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.14.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.15.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.16.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.16.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.17.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.17.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.17.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.18.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.19.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.19.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.2.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.2.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.2.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.20.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.21.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.22.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.22.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.22.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.22.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.22.4|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.23.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.23.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.23.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.24.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.25.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.26.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.26.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.27.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.28.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.28.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.28.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.28.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.28.4|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.29.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.29.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.29.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.29.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.3.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.30.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.30.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.4.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.5.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.5.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.5.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.6.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.6.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.6.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.7.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.7.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.8.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.8.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.9.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.9.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v7.9.2|don't install laravel/framework v8.20.1
- don't install illuminate/console 5.5.x-dev|don't install laravel/framework v8.20.1
- don't install illuminate/console 5.6.x-dev|don't install laravel/framework v8.20.1
- don't install illuminate/console 5.7.17|don't install laravel/framework v8.20.1
- don't install illuminate/console 5.7.18|don't install laravel/framework v8.20.1
- don't install illuminate/console 5.7.19|don't install laravel/framework v8.20.1
- don't install illuminate/console 5.7.x-dev|don't install laravel/framework v8.20.1
- don't install illuminate/console 5.8.x-dev|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.16|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.17|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.28|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.33|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.34|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.35|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.36|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.37|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.39|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.40|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.41|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.43|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.5.44|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.10|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.11|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.12|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.13|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.14|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.15|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.16|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.17|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.19|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.20|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.21|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.22|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.23|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.24|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.26|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.27|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.28|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.29|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.30|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.31|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.32|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.33|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.34|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.35|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.36|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.37|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.38|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.39|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.4|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.5|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.6|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.7|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.8|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.6.9|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.1|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.10|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.11|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.15|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.20|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.21|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.22|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.23|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.26|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.27|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.28|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.4|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.5|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.6|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.7|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.8|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.7.9|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.0|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.11|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.12|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.14|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.15|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.17|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.18|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.19|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.2|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.20|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.22|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.24|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.27|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.28|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.29|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.3|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.30|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.31|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.32|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.33|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.34|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.35|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.36|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.4|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.8|don't install laravel/framework v8.20.1
- don't install illuminate/console v5.8.9|don't install laravel/framework v8.20.1
- Installation request for laravel/framework (locked at v8.20.1, required as ^8.12) -> satisfiable by laravel/framework[v8.20.1].
- Installation request for napp/xray-laravel ^1.1 -> satisfiable by napp/xray-laravel[1.1.0, 1.1.1].`
How should this library be set up to apply a pre-defined sampling rule from X-Ray console?
Furthermore, the sampling rate should also be passed down to back-end tiers when making HTTP requests to them. Which probably means determining whether to apply the Sampled=1 parameter in the X-Amzn-Trace-Id HTTP header.
Would be nice to have a more granular control over what it's traced. Basically expanding on the current options.
Nice package.
It's much appreciated.
I tested using Laravel's recommended Guzzle HTTP client request pattern to a traced back-end API tier. It does not look like the trace ID in Laravel is being handed down to the back-end.
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Http;
use Napp\Xray\Facades\Xray;
class XRayController extends Controller
{
public function trace()
{
Xray::addSegment('XRayController');
// HTTP call to back-end tier.
$apiUrl = "http://localhost:8081/api/Tier";
$response = Http::get($apiUrl);
$delayTime = $response->body();
Xray::endSegment('XRayController');
return view('traceapi', ['timing' => $delayTime]);
}
}
Where can the client get the trace ID to forward into the X-Amzn-Trace-Id header?
\Xray\Submission\DaemonSegmentSubmitter::__construct(): Argument #1 ($host) must be of type string, null given, called in /vendor/napp/xray-laravel/src/Submission/DaemonSegmentSubmitter.php on line 44
I gave the hostname and port of the X-Ray daemon from two environment variables, _AWS_XRAY_DAEMON_ADDRESS
and _AWS_XRAY_DAEMON_PORT
respectively before passing them to this library as well.
I gave the env variables as
....
XRAY_ENABLED=true
_AWS_XRAY_DAEMON_ADDRESS="127.0.0.1"
_AWS_XRAY_DAEMON_PORT=2000
....
Hey there,
Great package, thank you! I noticed it looked like your screenshots were running in Vapor. I cannot seem to get DaemonSegmentSubmitter
working inside Vapor. Have you by chance gotten that to work?
I'm using the env vars _AWS_XRAY_DAEMON_ADDRESS
and _AWS_XRAY_DAEMON_PORT
to configure the destination address. Tracing is active on the Lambda too.
Thanks for your time!
Basically if you are not using the full of laravel, in this case using the Auth facade will raise an error.
Maybe should not be a hard dependency, specially when it's enriching the data.
The CacheCollector is not registered in the XrayServiceProvider regardless of the value of the cache
setting in the config.
We're seeing this error in our exception handler with v1.2.2, which is originating from this line. Seems to only happen once on startup, but can be really noisy in a deploy where lots of new instances are firing up.
Hi, thank you for this package!
I would like to use AWS X-Ray on an Elastic Beanstalk environment.
I've enabled X-Ray the daemon is listening on 127.0.0.1:2000
AWSXRayDaemonWriteAccess
has been attached to the aws-elasticbeanstalk-ec2-role
role.
The package has been installed and implemented to my Laravel App.
I've changed the submitter in the /config/xray.php
to \Napp\Xray\Submission\DaemonSegmentSubmitter::class
Everything looks fine, but for some reason, nothing appears on the X-Ray console.
Did I miss something?
`<?php
\Pkerrigan\Xray\Trace::getInstance()
->setName('my-app')
->setUrl('http:/ss')
->setMethod('GET')
->begin();
echo ' my function ';
\Pkerrigan\Xray\Trace::getInstance()
->end()
->setResponseCode(http_response_code())
->setError(http_response_code() >= 400 && http_response_code() < 500)
->setFault(http_response_code() >= 500)
->submit(new \Pkerrigan\Xray\Submission\DaemonSegmentSubmitter());`
I'm not able not able to log xray in elasticbeanstalk
Hey, curious if anyone encountered this issue. It just straight up doesn't work with Vapor. From doing some digging issue seems to be that HTTP_X_AMZN_TRACE_ID and LAMBDA_INVOCATION_CONTEXT variable are not present in either $_SERVER or $_ENV.
it is possible to support ECS Fargete. Configure the Daemon with an IP but I still don't have the data.
Thank you
TypeError
str_replace(): Argument #3 ($subject) must be of type array|string, null given
/vendor/napp/xray-laravel/src/Collectors/DatabaseQueryCollector.php in str_replace at line 53
Disabling query bindings a quick workaround it seems.
HI~
Can I edit some code In config.php
?
...
submitter' => is_null(env('XRAY_DAEMON_HOST'))
? \Napp\Xray\Submission\APISegmentSubmitter::class
: \Napp\Xray\Submission\DaemonSegmentSubmitter::class,
...
The purpose is to make it able to switching submitter by .env
I will like to build a PR to add this feature :)
but it seems like I have no permission to write on the code.
Hi and thanks for the great package.
I have hard time understanding what goes wrong. For some reason I can't get the default data for bootstrapping etc to be logged and present in Xray. I looked into the source code and found that it is because
/**
* @param SegmentSubmitter $submitter
*/
public function submit(SegmentSubmitter $submitter)
{
if (!$this->isSampled()) {
return;
}
$submitter->submitSegment($this);
}
$this->isSampled()
is always false. I saw in your package you set it from the header
->setTraceHeader($_SERVER['HTTP_X_AMZN_TRACE_ID'] ?? null)
You look for the part Sampled=1
but when I log this header in my lama function the header always contains only the Root field and nothing else. I've tried to add a sample rule that matches everything with higher rate, but with no luck. Also the AWS documentation on this header says the only valid parts are Root and Self.
Can you please tell me from where we expect this Sampled part to be present in the HTTP_X_AMZN_TRACE_ID header and how to make the default logging for every request to work?
Thanks
How can the whole Laravel web app be configured with a default service node name and main segment?
After the basic setup, X-Ray picks the traces up as "Laravel HTTP".
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.