X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fredis.c;h=85a8354629240553f7e60a65ae0c5cb72446ae29;hb=HEAD;hp=30bd8da34761f62bfd7448aa48db3581d858c072;hpb=d1c3baabf0c7bf65f699fb66db5b2aea92d1f5e7;p=collectd.git diff --git a/src/redis.c b/src/redis.c index 30bd8da3..85a83546 100644 --- a/src/redis.c +++ b/src/redis.c @@ -28,7 +28,12 @@ #include #include +#ifndef HOST_NAME_MAX +# define HOST_NAME_MAX _POSIX_HOST_NAME_MAX +#endif + #define REDIS_DEF_HOST "localhost" +#define REDIS_DEF_PASSWD "" #define REDIS_DEF_PORT 6379 #define REDIS_DEF_TIMEOUT 2000 #define MAX_REDIS_NODE_NAME 64 @@ -50,6 +55,7 @@ struct redis_node_s { char name[MAX_REDIS_NODE_NAME]; char host[HOST_NAME_MAX]; + char passwd[HOST_NAME_MAX]; int port; int timeout; @@ -132,6 +138,8 @@ static int redis_config_node (oconfig_item_t *ci) /* {{{ */ } else if (strcasecmp ("Timeout", option->key) == 0) status = cf_util_get_int (option, &rn.timeout); + else if (strcasecmp ("Password", option->key) == 0) + status = cf_util_get_string_buffer (option, rn.passwd, sizeof (rn.passwd)); else WARNING ("redis plugin: Option `%s' not allowed inside a `Node' " "block. I'll ignore this option.", option->key); @@ -196,14 +204,14 @@ static void redis_submit_g (char *plugin_instance, } /* }}} */ __attribute__ ((nonnull(2))) -static void redis_submit_c (char *plugin_instance, +static void redis_submit_d (char *plugin_instance, const char *type, const char *type_instance, - counter_t value) /* {{{ */ + derive_t value) /* {{{ */ { value_t values[1]; value_list_t vl = VALUE_LIST_INIT; - values[0].counter = value; + values[0].derive = value; vl.values = values; vl.values_len = 1; @@ -222,8 +230,8 @@ static void redis_submit_c (char *plugin_instance, static int redis_init (void) /* {{{ */ { - redis_node_t rn = { "default", REDIS_DEF_HOST, REDIS_DEF_PORT, - REDIS_DEF_TIMEOUT, /* next = */ NULL }; + redis_node_t rn = { "default", REDIS_DEF_HOST, REDIS_DEF_PASSWD, + REDIS_DEF_PORT, REDIS_DEF_TIMEOUT, /* next = */ NULL }; if (nodes_head == NULL) redis_node_add (&rn); @@ -251,6 +259,18 @@ static int redis_read (void) /* {{{ */ continue; } + if (strlen (rn->passwd) > 0) + { + DEBUG ("redis plugin: authenticanting node `%s' passwd(%s).", rn->name, rn->passwd); + status = credis_auth(rh, rn->passwd); + if (status != 0) + { + WARNING ("redis plugin: unable to authenticate on node `%s'.", rn->name); + credis_close (rh); + continue; + } + } + memset (&info, 0, sizeof (info)); status = credis_info (rh, &info); if (status != 0) @@ -288,8 +308,8 @@ static int redis_read (void) /* {{{ */ redis_submit_g (rn->name, "current_connections", "slaves", info.connected_slaves); redis_submit_g (rn->name, "memory", "used", info.used_memory); redis_submit_g (rn->name, "volatile_changes", NULL, info.changes_since_last_save); - redis_submit_c (rn->name, "total_connections", NULL, info.total_connections_received); - redis_submit_c (rn->name, "total_operations", NULL, info.total_commands_processed); + redis_submit_d (rn->name, "total_connections", NULL, info.total_connections_received); + redis_submit_d (rn->name, "total_operations", NULL, info.total_commands_processed); credis_close (rh); }