Registro de acesso ao nginx / verniz em buffer para o servidor remoto

1

Eu preciso de uma maneira de medir quantas vezes diferentes arquivos foram acessados e quando. Minha configuração consiste em vários servidores de baixa capacidade espalhados pelo mundo, executando o Varnish por trás do Nginx (para suporte a SSL). Nenhum conteúdo é realmente armazenado nos servidores, é carregado a partir de um ponto de armazenamento central e armazenado em cache no verniz por até uma hora.

O que eu preciso é medir quantas vezes por dia um determinado arquivo foi acessado. Eu imaginei que isso deveria ser bastante fácil de fazer com os logs de acesso, mas eu preciso de alguma forma para agregar os dados de log para um banco de dados comum.

Eu não tenho idéia de como melhor resolver isso. Eu sou capaz de roteirizar um agregador em PHP ou Python, se necessário, e pensei em usar isso em um arquivo FIFO ou pipe do Nginx, mas não consigo descobrir como trabalhá-lo remotamente.

    
por AmusableLemur 03.12.2013 / 10:51

1 resposta

0

Você pode enviar os arquivos de log para um servidor de log central com syslog-ng.

Nas máquinas de verniz, faça algo assim:

 source s_varnish {
   file("/var/log/varnish.log" flags(no-parse) program_override("varnish"));
 };
 destination d_logserver { 
   tcp("123.456.789.012"); 
 };
 log {
  source(s_varnish);
  destination(d_logserver);
 };

Onde 123.456.789.012 é o seu servidor de registro central.

E no seu servidor de log, você pode gravar todos os registros em um único arquivo, se quiser, com algo parecido com isto:

 source s_all {
   syslog(0.0.0.0);
 };
 destination d_all { 
   file("/var/log/all.log", create_dirs(yes));
 }     
 log {
   source(s_all);
   destination(d_all);
 };
    
por 03.12.2013 / 11:17