#!/usr/bin/env perl

use XML::Simple;
use Data::Dumper;

die unless $stat = `/usr/bin/varnishstat -x`;

# create object
$xml = new XML::Simple();

# read XML file
$data = $xml->XMLin($stat);
#print Dumper($data);

print "<<<app-varnish>>>\n";


######################
### Backend Statistics

# backend_conn / Backend conn. requests
print "$data->{stat}->{backend_req}->{value};";

# backend_unhealthy / Backend conn. not attempted
print "$data->{stat}->{backend_unhealthy}->{value};";

# backend_busy / Backend conn. too many
print "$data->{stat}->{backend_busy}->{value};";

# backend_fail / Backend conn. failures
print "$data->{stat}->{backend_fail}->{value};";

# backend_reuse / Backend conn. reuses
print "$data->{stat}->{backend_reuse}->{value};";

# backend_toolate / Backend conn. was closed
print "$data->{stat}->{backend_toolate}->{value};";

# backend_recycle / Backend conn. recycles
print "$data->{stat}->{backend_recycle}->{value};";

# backend_retry / Backend conn. retry
print "$data->{stat}->{backend_retry}->{value};";


####################
### Cache Statistics

# cache_hitpass / Cache hits for pass
print "$data->{stat}->{cache_hitpass}->{value};";

# cache_hit / Cache hits
print "$data->{stat}->{cache_hit}->{value};";

# cache_miss / Cache misses
print "$data->{stat}->{cache_miss}->{value};";


##################
### LRU Statistics

# n_lru_nuked / N LRU nuked objects
print "$data->{stat}->{n_lru_nuked}->{value};";

# n_lru_moved / N LRU moved objects
print "$data->{stat}->{n_lru_moved}->{value};";


#EOF
