3 # Copyright (C) 2008 Florian octo Forster <octo at verplant.org>
5 # This program is free software; you can redistribute it and/or modify it under
6 # the terms of the GNU General Public License as published by the Free Software
7 # Foundation; only version 2 of the License is applicable.
9 # This program is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
14 # You should have received a copy of the GNU General Public License along with
15 # this program; if not, write to the Free Software Foundation, Inc.,
16 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 use FindBin ('$RealBin');
25 use CGI::Carp ('fatalsToBrowser');
26 use URI::Escape ('uri_escape');
30 use Collectd::Graph::Config (qw(gc_read_config));
31 use Collectd::Graph::TypeLoader (qw(tl_load_type));
32 use Collectd::Graph::Common (qw(get_all_hosts get_files_for_host type_to_module_name));
33 use Collectd::Graph::Type ();
35 our $Debug = param ('debug') ? 1 : 0;
37 gc_read_config ("$RealBin/../etc/collection.conf");
41 print "Content-Type: text/plain; charset=utf-8\n\n";
45 print "Content-Type: application/json; charset=utf-8\n\n";
50 my @hosts = get_all_hosts ();
51 for (my $i = 0; $i < @hosts; $i++)
53 my $host = $hosts[$i];
54 my $files = get_files_for_host ($host);
58 # Group files by graphs
62 my $type = $file->{'type'};
64 # Create a new graph object if this is the first of this type.
65 if (!defined ($graphs{$type}))
67 $graphs{$type} = tl_load_type ($file->{'type'});
70 cluck ("tl_load_type (" . $file->{'type'} . ") failed");
75 $graphs{$type}->addFiles ($file);
78 print qq( "$host":\n {\n);
80 @graphs = keys %graphs;
81 for (my $j = 0; $j < @graphs; $j++)
83 my $type = $graphs[$j];
84 my $graphs_num = $graphs{$type}->getGraphsNum ();
87 for (my $k = 0; $k < $graphs_num; $k++)
89 my $args = $graphs{$type}->getGraphArgs ($k);
90 my $url = 'http://' . $ENV{'SERVER_NAME'} . "/cgi-bin/graph.cgi?" . $args;
94 print qq( "$type": [ )
95 . join (', ', map { qq("$_") } (@args));
97 if ($j == (@graphs - 1))
105 } # for (keys %graphs)
107 if ($i == (@hosts - 1))
115 } # for (my $i = 0; $i < @hosts; $i++)
121 # vim: set shiftwidth=2 softtabstop=2 tabstop=8 :