Como posso registrar registros de data e hora com sondas de saúde Varnish?

3

Estou usando o Varnish 3.0.3 no RHEL 6 como um balanceador de carga de cache na frente de vários servidores Apache e quero manter um registro de quando o Varnish vê a mudança de back-ends de saudável para doente e vice-versa. / p>

Na linha de comando, posso executar varnishlog -O -I "Back healthy|Went sick" e ver linhas como as seguintes:

0 Backend_health - webserver1 Went sick 4--X--- 2 3 5 0.000000 0.000679 
0 Backend_health - webserver1 Back healthy 4--X-RH 3 3 5 0.000622 0.000679 HTTP/1.1 200 OK

Adoraria escrever essas alterações de estado doente / saudável em um arquivo de log, mas elas são inúteis sem ter carimbos de data e hora associados a elas. Como posso escrever essas linhas em um arquivo de log e incluir timestamps para cada linha?

    
por Adam Franco 13.02.2013 / 22:30

1 resposta

4

A saída de varnishlog pode ser canalizada para awk e reformatada para colocar a data no início de cada linha. A parte complicada é que varnishlog armazena em buffer a saída, o que faz com que ela seja enviada para awk depois que um número de linhas tiver sido gerado, resultando em todas as linhas recebendo o mesmo registro de data e hora do último que está no buffer . Para contornar isso, o comando unbuffer pode ser usado para canalizar a saída de varnishlog para awk imediatamente para que cada linha receba um registro de data e hora apropriado.

unbuffer varnishlog -O -I 'Back healthy|Went sick' 2>&1 | awk '{ print strftime(), $0; fflush() }'

Isso resulta em uma saída como a seguinte, que pode ser anexada a um arquivo de log.

Wed Feb 20 15:20:58 EST 2013     0 Backend_health - webserver1 Went sick 4--X--- 2 3 5 0.000000 0.000679
Wed Feb 20 15:28:03 EST 2013     0 Backend_health - webserver1 Back healthy 4--X-RH 3 3 5 0.000622 0.000679 HTTP/1.1 200 OK

Observação: graças a esta resposta Kieron e esta resposta por Mark Harrison para as peças necessárias para descobrir isso.

    
por 20.02.2013 / 22:32