Code

Merge branch 'collectd-5.5'
authorMarc Fournier <marc.fournier@camptocamp.com>
Fri, 6 Nov 2015 08:42:11 +0000 (09:42 +0100)
committerMarc Fournier <marc.fournier@camptocamp.com>
Fri, 6 Nov 2015 08:42:11 +0000 (09:42 +0100)
1  2 
src/apcups.c
src/collectd.conf.in
src/types.db

diff --combined src/apcups.c
index 718061ae36e693a9125325f3403da98f25be2316,281bf9803bdd6e6a84086b152f14b623961337b7..29d58c3ad6e0a2d1b2038bf6433d078113fe0497
@@@ -1,6 -1,6 +1,6 @@@
  /*
   * collectd - src/apcups.c
 - * Copyright (C) 2006-2012  Florian octo Forster
 + * Copyright (C) 2006-2015  Florian octo Forster
   * Copyright (C) 2006       Anthony Gialluca <tonyabg at charter.net>
   * Copyright (C) 2000-2004  Kern Sibbald
   * Copyright (C) 1996-1999  Andre M. Hedrick <andre at suse.com>
@@@ -32,6 -32,9 +32,6 @@@
  #if HAVE_SYS_TYPES_H
  # include <sys/types.h>
  #endif
 -#if HAVE_SYS_SOCKET_H
 -# include <sys/socket.h>
 -#endif
  #if HAVE_NETDB_H
  # include <netdb.h>
  #endif
  # include <netinet/in.h>
  #endif
  
 -#define NISPORT 3551
 -#define MAXSTRING               256
 -#define MODULE_NAME "apcups"
 +#ifndef APCUPS_DEFAULT_NODE
 +# define APCUPS_DEFAULT_NODE "localhost"
 +#endif
  
 -#define APCUPS_DEFAULT_HOST "localhost"
 +#ifndef APCUPS_DEFAULT_SERVICE
 +# define APCUPS_DEFAULT_SERVICE "3551"
 +#endif
  
  /*
   * Private data types
@@@ -67,16 -68,24 +67,16 @@@ struct apc_detail_
   * Private variables
   */
  /* Default values for contacting daemon */
 -static char *conf_host = NULL;
 -static int   conf_port = NISPORT;
 +static char *conf_node = NULL;
 +static char *conf_service = NULL;
  /* Defaults to false for backwards compatibility. */
  static _Bool conf_report_seconds = 0;
 +static _Bool conf_persistent_conn = 1;
  
  static int global_sockfd = -1;
  
  static int count_retries = 0;
  static int count_iterations = 0;
 -static _Bool close_socket = 0;
 -
 -static const char *config_keys[] =
 -{
 -      "Host",
 -      "Port",
 -      "ReportSeconds"
 -};
 -static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
  
  static int net_shutdown (int *fd)
  {
@@@ -107,25 -116,30 +107,25 @@@ static int apcups_shutdown (void
   * Returns -1 on error
   * Returns socket file descriptor otherwise
   */
 -static int net_open (char *host, int port)
 +static int net_open (char const *node, char const *service)
  {
        int              sd;
        int              status;
 -      char             port_str[8];
        struct addrinfo  ai_hints;
        struct addrinfo *ai_return;
        struct addrinfo *ai_list;
  
 -      assert ((port > 0x00000000) && (port <= 0x0000FFFF));
 -
 -      /* Convert the port to a string */
 -      ssnprintf (port_str, sizeof (port_str), "%i", port);
 -
        /* Resolve name */
 -      memset ((void *) &ai_hints, '\0', sizeof (ai_hints));
 -      ai_hints.ai_family   = AF_INET; /* XXX: Change this to `AF_UNSPEC' if apcupsd can handle IPv6 */
 +      memset (&ai_hints, 0, sizeof (ai_hints));
 +      /* TODO: Change this to `AF_UNSPEC' if apcupsd can handle IPv6 */
 +      ai_hints.ai_family   = AF_INET;
        ai_hints.ai_socktype = SOCK_STREAM;
  
 -      status = getaddrinfo (host, port_str, &ai_hints, &ai_return);
 +      status = getaddrinfo (node, service, &ai_hints, &ai_return);
        if (status != 0)
        {
                char errbuf[1024];
-               INFO ("getaddrinfo failed: %s",
+               INFO ("apcups plugin: getaddrinfo failed: %s",
                                (status == EAI_SYSTEM)
                                ? sstrerror (errno, errbuf, sizeof (errbuf))
                                : gai_strerror (status));
  
        if (sd < 0)
        {
-               DEBUG ("Unable to open a socket");
+               DEBUG ("apcups plugin: Unable to open a socket");
                freeaddrinfo (ai_return);
                return (-1);
        }
        if (status != 0) /* `connect(2)' failed */
        {
                char errbuf[1024];
-               INFO ("connect failed: %s",
+               INFO ("apcups plugin: connect failed: %s",
                                sstrerror (errno, errbuf, sizeof (errbuf)));
                close (sd);
                return (-1);
        }
  
-       DEBUG ("Done opening a socket %i", sd);
+       DEBUG ("apcups plugin: Done opening a socket %i", sd);
  
        return (sd);
 -} /* int net_open (char *host, char *service, int port) */
 +} /* int net_open */
  
  /*
   * Receive a message from the other end. Each message consists of
@@@ -249,7 -263,7 +249,7 @@@ static int net_send (int *sockfd, char 
  }
  
  /* Get and print status from apcupsd NIS server */
 -static int apc_query_server (char *host, int port,
 +static int apc_query_server (char const *node, char const *service,
                struct apc_detail_s *apcups_detail)
  {
        int     n;
        {
                if (global_sockfd < 0)
                {
 -                      global_sockfd = net_open (host, port);
 +                      global_sockfd = net_open (node, service);
                        if (global_sockfd < 0)
                        {
                                ERROR ("apcups plugin: Connecting to the "
                                "first %i iterations. Will close the socket "
                                "in future iterations.",
                                count_retries, count_iterations);
 -              close_socket = 1;
 +              conf_persistent_conn = 0;
        }
  
        while ((n = net_recv (&global_sockfd, recvline, sizeof (recvline) - 1)) > 0)
        {
 -              assert ((unsigned int)n < sizeof (recvline));
 -              recvline[n] = '\0';
 +              assert ((size_t)n < sizeof (recvline));
 +              recvline[n] = 0;
  #if APCMAIN
                printf ("net_recv = `%s';\n", recvline);
  #endif /* if APCMAIN */
  
 +              if (strncmp ("END APC", recvline, strlen ("END APC")) == 0)
 +                      break;
 +
                toksaveptr = NULL;
                tokptr = strtok_r (recvline, " :\t", &toksaveptr);
                while (tokptr != NULL)
        }
        status = errno; /* save errno, net_shutdown() may re-set it. */
  
 -      if (close_socket)
 +      if (!conf_persistent_conn)
                net_shutdown (&global_sockfd);
  
        if (n < 0)
        return (0);
  }
  
 -static int apcups_config (const char *key, const char *value)
 +static int apcups_config (oconfig_item_t *ci)
  {
 -      if (strcasecmp (key, "host") == 0)
 -      {
 -              if (conf_host != NULL)
 -              {
 -                      free (conf_host);
 -                      conf_host = NULL;
 -              }
 -              if ((conf_host = strdup (value)) == NULL)
 -                      return (1);
 -      }
 -      else if (strcasecmp (key, "Port") == 0)
 -      {
 -              int port_tmp = atoi (value);
 -              if (port_tmp < 1 || port_tmp > 65535)
 -              {
 -                      WARNING ("apcups plugin: Invalid port: %i", port_tmp);
 -                      return (1);
 -              }
 -              conf_port = port_tmp;
 -      }
 -      else if (strcasecmp (key, "ReportSeconds") == 0)
 +      int i;
 +
 +      for (i = 0; i < ci->children_num; i++)
        {
 -              if (IS_TRUE (value))
 -                      conf_report_seconds = 1;
 +              oconfig_item_t *child = ci->children + i;
 +
 +              if (strcasecmp (child->key, "Host") == 0)
 +                      cf_util_get_string (child, &conf_node);
 +              else if (strcasecmp (child->key, "Port") == 0)
 +                      cf_util_get_service (child, &conf_service);
 +              else if (strcasecmp (child->key, "ReportSeconds") == 0)
 +                      cf_util_get_boolean (child, &conf_report_seconds);
 +              else if (strcasecmp (child->key, "PersistentConnection") == 0)
 +                      cf_util_get_boolean (child, &conf_persistent_conn);
                else
 -                      conf_report_seconds = 0;
 -      }
 -      else
 -      {
 -              return (-1);
 +                      ERROR ("apcups plugin: Unknown config option \"%s\".", child->key);
        }
 +
        return (0);
 -}
 +} /* int apcups_config */
  
  static void apc_submit_generic (char *type, char *type_inst, double value)
  {
@@@ -445,9 -469,10 +445,9 @@@ static int apcups_read (void
        apcups_detail.itemp    = -300.0;
        apcups_detail.linefreq =   -1.0;
  
 -      status = apc_query_server (conf_host == NULL
 -                      ? APCUPS_DEFAULT_HOST
 -                      : conf_host,
 -                      conf_port, &apcups_detail);
 +      status = apc_query_server ((conf_node == NULL) ? APCUPS_DEFAULT_NODE : conf_node,
 +                      (conf_service == NULL) ? APCUPS_DEFAULT_SERVICE : conf_service,
 +                      &apcups_detail);
  
        /*
         * if we did not connect then do not bother submitting
         */
        if (status != 0)
        {
-               DEBUG ("apc_query_server (%s, %s) = %i",
 -              DEBUG ("apcups plugin: apc_query_server (%s, %i) = %i",
 -                              conf_host == NULL
 -                              ? APCUPS_DEFAULT_HOST
 -                              : conf_host,
 -                              conf_port, status);
++              DEBUG ("apcups plugin: apc_query_server (%s, %s) = %i",
 +                              (conf_node == NULL) ? APCUPS_DEFAULT_NODE : conf_node,
 +                              (conf_service == NULL) ? APCUPS_DEFAULT_SERVICE : conf_service,
 +                              status);
                return (-1);
        }
  
  
  void module_register (void)
  {
 -      plugin_register_config ("apcups", apcups_config, config_keys,
 -                      config_keys_num);
 +      plugin_register_complex_config ("apcups", apcups_config);
        plugin_register_read ("apcups", apcups_read);
        plugin_register_shutdown ("apcups", apcups_shutdown);
  } /* void module_register */
diff --combined src/collectd.conf.in
index 1f4ccf8175a99d44cecfa325429ddb586631e0dc,729aa032d0caa2bd4df5711acd2b4af0b50a4839..61c01f944bfc4477893d58936c14f868ccab1edc
  @BUILD_PLUGIN_MEMORY_TRUE@@BUILD_PLUGIN_MEMORY_TRUE@LoadPlugin memory
  #@BUILD_PLUGIN_MIC_TRUE@LoadPlugin mic
  #@BUILD_PLUGIN_MODBUS_TRUE@LoadPlugin modbus
 +#@BUILD_PLUGIN_MQTT_TRUE@LoadPlugin mqtt
  #@BUILD_PLUGIN_MULTIMETER_TRUE@LoadPlugin multimeter
  #@BUILD_PLUGIN_MYSQL_TRUE@LoadPlugin mysql
  #@BUILD_PLUGIN_NETAPP_TRUE@LoadPlugin netapp
  #@BUILD_PLUGIN_WRITE_TSDB_TRUE@LoadPlugin write_tsdb
  #@BUILD_PLUGIN_XMMS_TRUE@LoadPlugin xmms
  #@BUILD_PLUGIN_ZFS_ARC_TRUE@LoadPlugin zfs_arc
 +#@BUILD_PLUGIN_ZONE_TRUE@LoadPlugin zone
  #@BUILD_PLUGIN_ZOOKEEPER_TRUE@LoadPlugin zookeeper
  
  ##############################################################################
  #     Host "localhost"
  #     Port "3551"
  #     ReportSeconds true
 +#     PersistentConnection true
  #</Plugin>
  
  #<Plugin aquaero>
  
  #<Plugin "battery">
  #  ValuesPercentage false
- #  ReportDegraded
+ #  ReportDegraded false
  #</Plugin>
  
  #<Plugin "bind">
  #     </Host>
  #</Plugin>
  
 +#<Plugin mqtt>
 +#     <Publish "name">
 +#             Host "localhost"
 +#             Port 1883
 +#             ClientId "localhost"
 +#             User "user"
 +#             Password "secret"
 +#             QoS 0
 +#             Prefix "collectd"
 +#             StoreRates true
 +#             Retain false
 +#     </Publish>
 +#     <Subscribe "name">
 +#             Host "localhost"
 +#             Port 1883
 +#             ClientId "localhost"
 +#             User "user"
 +#             Password "secret"
 +#             QoS 2
 +#             Topic "collectd/#"
 +#             CleanSession true
 +#     </Subscribe>
 +#</Plugin>
 +
  #<Plugin mysql>
  #     <Database db_name>
  #             Host "database.serv.er"
  #             Host "localhost"
  #             Port "6379"
  #             Timeout 1000
 +#             Prefix "collectd/"
  #     </Node>
  #</Plugin>
  
diff --combined src/types.db
index 2fd59e56885f93d934e9c7f1bb8658d293305a95,c605f56d603ce5d680a8f7b7180c27ab6e647f53..5847218aa0fe1cb17a057e98bd596849cc7af4ce
@@@ -14,7 -14,8 +14,8 @@@ cache_eviction                value:DERIVE:0:
  cache_operation               value:DERIVE:0:U
  cache_ratio           value:GAUGE:0:100
  cache_result          value:DERIVE:0:U
 -cache_size            value:GAUGE:0:U
 +cache_size            value:GAUGE:0:1125899906842623
+ capacity      value:GAUGE:0:U
  ceph_bytes            value:GAUGE:U:U
  ceph_latency  value:GAUGE:U:U
  ceph_rate                     value:DERIVE:0:U