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.