Monitoring backend status

Rob S rtshilston at gmail.com
Wed Dec 9 12:31:28 CET 2009


Poul-Henning Kamp wrote:
> In message <4B1F7FED.4020501 at boerse-go.de>, Mark Plomer writes:
>   
>> Hi,
>> is it possible to retrieve some more details about the current backend 
>> status via the telnet interface?
>> A list of all backends with current status (up/down) would be very 
>> helpful for monitoring.
>> For the beginning, it would be enough to have the count of backends and 
>> the count of up-/down- backends
>> in the "stats" output.
>>     
>
> There is an undocumented "debug.health" command you can try.
>
> Ideas for a final version of this are most welcom.
>
>   
Brilliant.  At the moment we tail the varnishlog, post process, and 
write out to disk for further monitoring.  Here's the PHP we're using:

#!/usr/local/bin/php
<?php

$p = popen('varnishlog -u -i Backend_health','r');
$health = array();
while (!feof($p)) {
        $l = fgets($p);
        if ($m = preg_match("/^.*Backend_health - ([^ ]+) [^ ]+ ([^ ]+) 
/Uis", $l, $matches)) {
                if ($matches[2] != $health[$matches[1]]) {
                        $health[$matches[1]] = $matches[2];
                        file_put_contents("/tmp/varnishbackendhealth", 
print_r($health,true));
                }
        }
}

?>

Our monitoring then records "grep -c healthy /tmp/varnishbackendhealth"

However, it looks like we can now use the far simpler:

  echo 'debug.health' | nc localhost 6082 |grep -c Healthy

So - thanks for the change!



Rob


More information about the varnish-misc mailing list