Code

Added option to choose redis database to use
authorSebastian Pfahl <eryx@gmx.net>
Fri, 10 Jul 2015 11:33:11 +0000 (11:33 +0000)
committerSebastian Pfahl <eryx@gmx.net>
Mon, 13 Jul 2015 05:48:33 +0000 (05:48 +0000)
src/collectd.conf.pod
src/write_redis.c

index b2aab2139e1ce45633e2004609955c7e5b5a13f6..87844e1308398c3c725037c4558c48ffdebcd2d2 100644 (file)
@@ -7495,6 +7495,7 @@ Synopsis:
         Port "6379"
         Timeout 1000
         Prefix "collectd/"
+        Database 1
     </Node>
   </Plugin>
 
@@ -7503,7 +7504,8 @@ the timestamp as the score. Retrieving a date range can then be done using the
 C<ZRANGEBYSCORE> I<Redis> command. Additionnally, all the identifiers of these
 I<Sorted Sets> are kept in a I<Set> called C<collectd/values> (or
 C<${prefix}/values> if the B<Prefix> option was specified) and can be retrieved
-using the C<SMEMBERS> I<Redis> command. See
+using the C<SMEMBERS> I<Redis> command. You can specify the database to use 
+with the B<Database> parameter (default is C<0>). See
 L<http://redis.io/commands#sorted_set> and L<http://redis.io/commands#set> for
 details.
 
@@ -7545,6 +7547,10 @@ containing all metrics. Defaults to C<collectd/>, so metrics will have names
 like C<collectd/cpu-0/cpu-user>. When setting this to something different, it
 is recommended but not required to include a trailing slash in I<Prefix>.
 
+=item B<Database> I<Index>
+
+This index selects the redis database to use for writing operations. Defaults to C<0>.
+
 =back
 
 =head2 Plugin C<write_riemann>
index fa58ad2ace61667322f606a08b380bdb63b7b188..7ba476c92fa2164322c4d3ad5ba73b64ea67e322 100644 (file)
@@ -45,6 +45,7 @@ struct wr_node_s
   int port;
   struct timeval timeout;
   char *prefix;
+  int database;
 
   redisContext *conn;
   pthread_mutex_t lock;
@@ -138,6 +139,12 @@ static int wr_write (const data_set_t *ds, /* {{{ */
       pthread_mutex_unlock (&node->lock);
       return (-1);
     }
+   
+    rr = redisCommand(node->conn, "SELECT %d", node->database);
+    if (rr == NULL)
+      WARNING("SELECT command error. database:%d message:%s", node->database, node->conn->errstr);
+    else
+      freeReplyObject (rr);
   }
 
   rr = redisCommand (node->conn, "ZADD %s %s %s", key, time, value);
@@ -196,6 +203,7 @@ static int wr_config_node (oconfig_item_t *ci) /* {{{ */
   node->timeout.tv_usec = 1000;
   node->conn = NULL;
   node->prefix = NULL;
+  node->database = 0;
   pthread_mutex_init (&node->lock, /* attr = */ NULL);
 
   status = cf_util_get_string_buffer (ci, node->name, sizeof (node->name));
@@ -227,6 +235,9 @@ static int wr_config_node (oconfig_item_t *ci) /* {{{ */
     else if (strcasecmp ("Prefix", child->key) == 0) {
       status = cf_util_get_string (child, &node->prefix);
     }
+    else if (strcasecmp ("Database", child->key) == 0) {
+      status = cf_util_get_int (child, &node->database);
+    }
     else
       WARNING ("write_redis plugin: Ignoring unknown config option \"%s\".",
           child->key);