redis: change expired_keys type from GAUGE to DERIVE
[collectd.git] / src / redis.c
index 2ce1f96..a1839c5 100644 (file)
@@ -133,25 +133,31 @@ static redis_query_t *redis_config_query (oconfig_item_t *ci) /* {{{ */
         ERROR("redis plugin: calloca failed adding redis_query.");
         return NULL;
     }
-    status = cf_util_get_string_buffer(ci, rq->type, sizeof(rq->type));
+    status = cf_util_get_string_buffer(ci, rq->query, sizeof(rq->query));
     if (status != 0)
         goto err;
 
+    /*
+     * Default to a gauge type.
+     */
+    (void)strncpy(rq->type, "gauge", sizeof(rq->type));
+    (void)sstrncpy(rq->instance, rq->query, sizeof(rq->instance));
+    replace_special(rq->instance, sizeof(rq->instance));
+
     for (i = 0; i < ci->children_num; i++) {
         oconfig_item_t *option = ci->children + i;
 
-        if (strcasecmp("Exec", option->key) == 0) {
-            status = cf_util_get_string_buffer(option, rq->query, sizeof(rq->query));
+        if (strcasecmp("Type", option->key) == 0) {
+            status = cf_util_get_string_buffer(option, rq->type, sizeof(rq->type));
         } else if (strcasecmp("Instance", option->key) == 0) {
             status = cf_util_get_string_buffer(option, rq->instance, sizeof(rq->instance));
+        } else {
+            WARNING("redis plugin: unknown configuration option: %s", option->key);
+            status = -1;
         }
         if (status != 0)
             goto err;
     }
-    if (strlen(rq->query) == 0) {
-        WARNING("redis plugin: invalid query definition for: %s", rq->type);
-        goto err;
-    }
     return rq;
  err:
     free(rq);
@@ -370,7 +376,7 @@ int redis_handle_query (redisContext *rh, redis_node_t *rn, redis_query_t *rq) /
     redis_submit(rn->name, rq->type, (strlen(rq->instance) >0)?rq->instance:NULL, val);
     freeReplyObject (rr);
     return 0;
-} /* }}} int redis_handle_info */
+} /* }}} int redis_handle_query */
 
 static int redis_read (void) /* {{{ */
 {
@@ -423,7 +429,7 @@ static int redis_read (void) /* {{{ */
     redis_handle_info (rn->name, rr->str, "volatile_changes", NULL, "changes_since_last_save", DS_TYPE_GAUGE);
     redis_handle_info (rn->name, rr->str, "total_connections", NULL, "total_connections_received", DS_TYPE_DERIVE);
     redis_handle_info (rn->name, rr->str, "total_operations", NULL, "total_commands_processed", DS_TYPE_DERIVE);
-    redis_handle_info (rn->name, rr->str, "expired_keys", NULL, "expired_keys", DS_TYPE_GAUGE);
+    redis_handle_info (rn->name, rr->str, "expired_keys", NULL, "expired_keys", DS_TYPE_DERIVE);
     redis_handle_info (rn->name, rr->str, "pubsub", "channels", "pubsub_channels", DS_TYPE_GAUGE);
     redis_handle_info (rn->name, rr->str, "pubsub", "patterns", "pubsub_patterns", DS_TYPE_GAUGE);
     redis_handle_info (rn->name, rr->str, "current_connections", "slaves", "connected_slaves", DS_TYPE_GAUGE);