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