From: Florian Forster Date: Wed, 9 Jun 2010 08:38:55 +0000 (+0200) Subject: Merge remote branch 'tokkee/sh/collectd-4.9' into collectd-4.9 X-Git-Tag: collectd-4.9.3~12 X-Git-Url: https://git.octo.it/?a=commitdiff_plain;h=93d32dedac1cea88e5a9bd335a6413e040ed3566;hp=502535807083ee487f2e1b3dad15051b4db7c754;p=collectd.git Merge remote branch 'tokkee/sh/collectd-4.9' into collectd-4.9 --- diff --git a/contrib/collectd2html.pl b/contrib/collectd2html.pl index 7953d67c..fe4e2bdb 100644 --- a/contrib/collectd2html.pl +++ b/contrib/collectd2html.pl @@ -44,7 +44,7 @@ use Getopt::Long qw(:config no_ignore_case bundling pass_through); my $DIR = "/var/lib/collectd"; my $HOST = undef; my $IMG_FMT = "PNG"; -my $RECURSIVE = 0; +my $RECURSIVE = 1; GetOptions ( "host=s" => \$HOST, @@ -63,12 +63,12 @@ if (defined($HOST) && ($DIR !~ m/\/$HOST\/?$/) && (-d "$DIR/$HOST")) { my @COLORS = (0xff7777, 0x7777ff, 0x55ff55, 0xffcc77, 0xff77ff, 0x77ffff, 0xffff77, 0x55aaff); -my @tmp = `/bin/hostname`; chomp(@tmp); +my @tmp = `/bin/hostname -f`; chomp(@tmp); $HOST = $tmp[0] if (! defined $HOST); my $svg_p = ($IMG_FMT eq "SVG"); my $IMG_SFX = $svg_p ? ".svg" : ".png"; my $IMG_DIR = "${HOST}.dir"; -my $HTML = "${HOST}.html"; +my $HTML = "${HOST}.xhtml"; ################################################################################ # @@ -118,14 +118,20 @@ open(OUT, ">$HTML"); my $title="Rrd plot for $HOST"; print OUT < - + + + $title + -
END # list interesting rrd @@ -140,27 +146,28 @@ else { } chomp(@list); -foreach my $rrd (sort @list){ +@list = sort @list; +foreach my $rrd (@list){ $rrd =~ m/^$DIR\/(.*)\.rrd$/; push(@rrds, $1); } # table of contents print OUT <

$title

-

+

$title

+

END foreach my $bn (@rrds){ my $cleaned_bn = $bn; $cleaned_bn =~ tr/%\//__/; print OUT <$bn +$bn END } print OUT < +

END # graph interesting rrd @@ -205,7 +212,7 @@ for (my $i = 0; $i < scalar(@rrds); ++$i) { my $cleaned_bn = $bn; $cleaned_bn =~ tr/%\//__/; print OUT <

$bn

+

$bn

END # graph various ranges @@ -222,24 +229,28 @@ END my $cleaned_img = $img; $cleaned_img =~ s/%/%25/g; if (! $svg_p) { print OUT <${bn} $span

+

${bn} $span

END } else { print OUT < - ${bn} $span

+

+ ${bn} $span

END } } print OUT <[top] +

[top]

END } print OUT < +
+

+ Valid XHTML 1.0 Strict +

END diff --git a/src/powerdns.c b/src/powerdns.c index 3e7ebb33..29f6bca5 100644 --- a/src/powerdns.c +++ b/src/powerdns.c @@ -46,12 +46,12 @@ #define FUNC_ERROR(func) do { char errbuf[1024]; ERROR ("powerdns plugin: %s failed: %s", func, sstrerror (errno, errbuf, sizeof (errbuf))); } while (0) #define SERVER_SOCKET LOCALSTATEDIR"/run/pdns.controlsocket" -#define SERVER_COMMAND "SHOW *" +#define SERVER_COMMAND "SHOW * \n" #define RECURSOR_SOCKET LOCALSTATEDIR"/run/pdns_recursor.controlsocket" #define RECURSOR_COMMAND "get noerror-answers nxdomain-answers " \ "servfail-answers sys-msec user-msec qa-latency cache-entries cache-hits " \ - "cache-misses questions" + "cache-misses questions\n" struct list_item_s; typedef struct list_item_s list_item_t; @@ -439,6 +439,11 @@ static int powerdns_get_data_stream (list_item_t *item, /* {{{ */ return (-1); } + struct timeval timeout; + timeout.tv_sec=5; + timeout.tv_usec=0; + status = setsockopt (sd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof (timeout)); + status = connect (sd, (struct sockaddr *) &item->sockaddr, sizeof (item->sockaddr)); if (status != 0) @@ -531,7 +536,7 @@ static int powerdns_read_server (list_item_t *item) /* {{{ */ int fields_num; if (item->command == NULL) - item->command = strdup ("SHOW *"); + item->command = strdup (SERVER_COMMAND); if (item->command == NULL) { ERROR ("powerdns plugin: strdup failed."); @@ -612,7 +617,7 @@ static int powerdns_update_recursor_command (list_item_t *li) /* {{{ */ else { sstrncpy (buffer, "get ", sizeof (buffer)); - status = strjoin (&buffer[4], sizeof (buffer) - strlen ("get "), + status = strjoin (&buffer[strlen("get ")], sizeof (buffer) - strlen ("get "), li->fields, li->fields_num, /* seperator = */ " "); if (status < 0) @@ -620,6 +625,14 @@ static int powerdns_update_recursor_command (list_item_t *li) /* {{{ */ ERROR ("powerdns plugin: strjoin failed."); return (-1); } + buffer[sizeof (buffer) - 1] = 0; + int i = strlen (buffer); + if (i < sizeof (buffer) - 2) + { + buffer[i++] = ' '; + buffer[i++] = '\n'; + buffer[i++] = '\0'; + } } buffer[sizeof (buffer) - 1] = 0;