customergauge / logstash
APM & Logging for Laravel powered by Logstash
Installs: 26 062
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 7
Forks: 1
Open Issues: 0
Requires
- php: >=8.2
- ext-json: *
- illuminate/config: >=10.0
- illuminate/contracts: >=10.0
- illuminate/http: >=10.0
- illuminate/support: >=10.0
- monolog/monolog: >=3.0
Requires (Dev)
- aws/aws-sdk-php: ^3.164
- guzzlehttp/guzzle: ^7.2
- orchestra/testbench: >=7.0
Suggests
- bref/bref: Required when using LambdaProcessor
README
This library adapts Monolog for Laravel to communicate with Logstash for logging & metrics.
Installation
composer require customergauge/logstash
Usage
Logs
In the logging.php
, define a custom channel for Laravel
'http' => [ 'driver' => 'custom', 'via' => LogstashLoggerFactory::class, 'address' => sprintf('tcp://%s:9601', env('LOGSTASH_ADDRESS')), 'processor' => env('LOGSTASH_PROCESSOR'), ],
This will instruct Laravel to write any log to Logstash using a TCP
connection on port 9601. TCP will guarantee log delivery. Processors
allow to manipulate the $record
array that gets sent to Logstash
as JSON. The processor
attribute accept http
or queue
values.
Metrics
The library also allows to collect application metrics using an
apm
configuration inside the logging.php
file.
'apm' => [ 'enable' => env('LOGSTASH_APM_ENABLE', true), 'address' => sprintf('udp://%s:9602', env('LOGSTASH_ADDRESS')), ],
For metrics, the above configuration will instruct Laravel to use an UDP conncetion as a way to fire-and-forget. Delivery is not guaranteed, but code execution is not delayed by acknowledging metric delivery.
Processors
You may configure Http and Queue processors. Processors must
implement the \CustomerGauge\Logstash\Processors\HttpProcessorInterface
or the \CustomerGauge\Logstash\Processors\QueueProcessorInterface
.
They offer the chance to modify the $record
that will be
streamed to Logstash by using the ProcessorInterface
system
provided by Monolog.