X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fmemcached.c;h=2d999ce4e15be392dc9a3faed8dfca34395fee4c;hb=10c85e89cbd077980ae297b17a23bbc42ce5d3d5;hp=7bdad0a01a475f42d7d5c9c37b07c1abf62a0144;hpb=b4d9bd23f3e04f9b42204d9954842524e2a7eb61;p=collectd.git diff --git a/src/memcached.c b/src/memcached.c index 7bdad0a0..2d999ce4 100644 --- a/src/memcached.c +++ b/src/memcached.c @@ -1,7 +1,8 @@ /** * collectd - src/memcached.c, based on src/hddtemp.c - * Copyright (C) 2007 Antony Dovgal - * Copyright (C) 2005,2006 Vincent Stehlé + * Copyright (C) 2007 Antony Dovgal + * Copyright (C) 2007-2009 Florian Forster + * Copyright (C) 2009 Doug MacEachern * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -19,8 +20,8 @@ * * Authors: * Antony Dovgal - * Vincent Stehlé * Florian octo Forster + * Doug MacEachern **/ #include "collectd.h" @@ -81,7 +82,7 @@ static int memcached_query_daemon (char *buffer, int buffer_size) /* {{{ */ port = MEMCACHED_DEF_PORT; } - if ((ai_return = getaddrinfo (host, port, NULL, &ai_list)) != 0) { + if ((ai_return = getaddrinfo (host, port, &ai_hints, &ai_list)) != 0) { char errbuf[1024]; ERROR ("memcached: getaddrinfo (%s, %s): %s", host, port, @@ -234,7 +235,6 @@ static void submit_counter (const char *type, const char *type_inst, vl.values = values; vl.values_len = 1; - vl.time = time (NULL); sstrncpy (vl.host, hostname_g, sizeof (vl.host)); sstrncpy (vl.plugin, "memcached", sizeof (vl.plugin)); sstrncpy (vl.type, type, sizeof (vl.type)); @@ -321,6 +321,8 @@ static int memcached_read (void) /* {{{ */ gauge_t bytes_used = NAN; gauge_t bytes_total = NAN; + gauge_t hits = NAN; + gauge_t gets = NAN; counter_t rusage_user = 0; counter_t rusage_syst = 0; counter_t octets_rx = 0; @@ -430,6 +432,8 @@ static int memcached_read (void) /* {{{ */ { const char *name = fields[1] + 4; submit_counter ("memcached_command", name, atoll (fields[2])); + if (strcmp (name, "get") == 0) + gets = atof (fields[2]); } /* @@ -438,6 +442,7 @@ static int memcached_read (void) /* {{{ */ else if (FIELD_IS ("get_hits")) { submit_counter ("memcached_ops", "hits", atoll (fields[2])); + hits = atof (fields[2]); } else if (FIELD_IS ("get_misses")) { @@ -470,6 +475,16 @@ static int memcached_read (void) /* {{{ */ if ((octets_rx != 0) || (octets_tx != 0)) submit_counter2 ("memcached_octets", NULL, octets_rx, octets_tx); + if (!isnan (gets) && !isnan (hits)) + { + gauge_t rate = NAN; + + if (gets != 0.0) + rate = 100.0 * hits / gets; + + submit_gauge ("percent", "hitratio", rate); + } + return 0; } /* }}} */