Como usar o Logstash com Monolog

Monolog se estabeleceu como uma das bibliotecas PHP-Logger mais utilizadas. Existem dezenas de Manipuladores diferentes para enviar mensagens de log, mas não consegui encontrar um tutorial simples de como usar o Monolog com Logstash.

Logstash é uma ferramenta de gerenciamento de log de código aberto que vem com uma interface agradável, Kibana . Não vou descrever como instalar o Logstash, já que a documentação do site é muito boa.

Etapa 1: configurar o Logstash

Usaremos Redis como a entrada Logstash e Elasticsearch como saída. Adicione o seguinte à configuração do Logstash:

input {
redis
{
key
=> phplogs
data_type
=> ['list']
}
}
output
{
elasticsearch_http
{
host
=> localhost
}
}

Salve o arquivo e inicie os serviços necessários – Redis, Elasticsearch e Logstash. Não se esqueça de adicionar ‘- web’ como um argumento ao iniciar o agente logstash, então Kibana estará disponível.

Etapa 2: Configurar Monolog

Agora que o Logstash está em execução, vamos começar a codificar. Você precisará instalar monolog / monolog e predis / predis com composer.

<?php
// Be sure Monolog is installed via composer
require 'vendor/autoload.php'

use MonologLogger;
use MonologHandlerRedisHandler;
use MonologFormatterLogstashFormatter;
use PredisClient;

// Init a RedisHandler with a LogstashFormatter.
// The parameters may differ depending on your configuration of Redis.
// Important: The parameter 'logs' must be equal to the key you defined
// in your logstash configuration.
$redisHandler
= new RedisHandler(new Client(), 'phplogs');
$formatter
= new LogstashFormatter('my_app');
$redisHandler
->setFormatter($formatter);

// Create a Logger instance with the RedisHandler
$logger
= new Logger('logstash_test', array($redisHandler));

// Now you can start logging
$logger
->info('Logging some infos to logstash.');

Se você configurou tudo corretamente, o Monolog está enviando a mensagem de log para o Redis. Como o Logstash está configurado para ouvir o Redis, ele buscará a mensagem e a enviará para o Elasticsearch. Abra http: //yourserver.tld: 9292 e você deverá ver a mensagem de log no Kibana.