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
-
+
+
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
+
END
# graph various ranges
@@ -222,24 +229,28 @@ END
my $cleaned_img = $img; $cleaned_img =~ s/%/%25/g;
if (! $svg_p) {
print OUT <
+
END
} else {
print OUT <
+
END
}
}
print OUT <[top]
+[top]
END
}
print OUT <
+
+
+
+
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;