A perl client for graphite-api (and graphite-web) with IO::Async. All methods return Future objects to enable integration into asynchronous code. graphite-api is an early project which exposes the /metrics/* and /render APIs. graphite-web is more mature but only exposes the /render API, which means it can't be used to find metrics (and this error is not handled). Find metrics: my $search = 'host.*.collectd.load.*.shortterm'; my $subset = $graphite->metrics_asperl(find => $search)->get; # => [ # 'host.foo.collecd.load.load.shortterm', # 'host.bar.collecd.load.load-relative.shortterm', # 'host.baz.collecd.load.load.shortterm', # ]; Download data: my $allofit = $graphite->render(raw => 'host.*.collectd.load.*.shortterm')->get; # => Download data usably: my @datasets = $graphite->render_asperl('host.*.collectd.load.*.shortterm')->get; # => { # target => 'host.foo.collecd.load.load.shortterm', # start => 1495125843, # end => 1495122243, # step => 20, # date => [ ], # }, # { ... }, # One per set Download graphs (only into a scalar for now): my $png = $graphite->render(png => 'host.*.collectd.load.*.shortterm')->get; # => Draw graphs on the terminal using gnuplot: my $ascii = $graphite->plot('host.*.collectd.load.*.shortterm', width => 72, height => 20)->get; # => ... # +-------+-------+------+-------+-------+----A--+------+-------+ # 2 ++ A + + + + A + +A A ++ # | A A B | # | AA AA AAA AA C | # 1.5 ++A AAA A AAAA AA A AAA A AAA ++ # | AA AAAA AA A AAA AAA A A AAA AA A A AAA | # AAAAAAAA AAAAAAAAAAA A A AAAAAAAA AAAAAAAAAAAA | # AAAAAAAA AAAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAAA | # 1 AAAAAAAA AAAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAAA ++ # | | # | | # 0.5 ++ C ++ # | B | # | C C C C C C | # BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC + # 0 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB----++ # 0 200 400 600 800 1000 1200 1400 1600 Draw graphs using other formats supported by gnuplot: my $png = $graphite->plot('host.*.collectd.load.*.shortterm', format => 'png', width => 640, height => 480)->get; # =>