amqp, write_graphite and write_kafka plugins: Implement the "[Graphite]PreserveSepara...
[collectd.git] / src / nginx.c
index 7587c1f..08c24f9 100644 (file)
@@ -27,9 +27,9 @@
  **/
 
 #include "collectd.h"
+
 #include "common.h"
 #include "plugin.h"
-#include "configfile.h"
 
 #include <curl/curl.h>
 
@@ -139,7 +139,7 @@ static int init (void)
 #else
     static char credentials[1024];
     int status = ssnprintf (credentials, sizeof (credentials),
-       "%s:%s", user, pass == NULL ? "" : pass);
+        "%s:%s", user, pass == NULL ? "" : pass);
     if ((status < 0) || ((size_t) status >= sizeof (credentials)))
     {
       ERROR ("nginx plugin: Credentials would have been truncated.");
@@ -210,10 +210,8 @@ static void submit (const char *type, const char *inst, long long value)
     return;
 
   vl.values = values;
-  vl.values_len = 1;
-  sstrncpy (vl.host, hostname_g, sizeof (vl.host));
+  vl.values_len = STATIC_ARRAY_SIZE (values);
   sstrncpy (vl.plugin, "nginx", sizeof (vl.plugin));
-  sstrncpy (vl.plugin_instance, "", sizeof (vl.plugin_instance));
   sstrncpy (vl.type, type, sizeof (vl.type));
 
   if (inst != NULL)
@@ -224,8 +222,6 @@ static void submit (const char *type, const char *inst, long long value)
 
 static int nginx_read (void)
 {
-  int i;
-
   char *ptr;
   char *lines[16];
   int   lines_num = 0;
@@ -260,39 +256,43 @@ static int nginx_read (void)
   /*
    * Active connections: 291
    * server accepts handled requests
-   *  16630948 16630948 31070465
+   *  101059015 100422216 347910649
    * Reading: 6 Writing: 179 Waiting: 106
    */
-  for (i = 0; i < lines_num; i++)
+  for (int i = 0; i < lines_num; i++)
   {
     fields_num = strsplit (lines[i], fields,
-       (sizeof (fields) / sizeof (fields[0])));
+        (sizeof (fields) / sizeof (fields[0])));
 
     if (fields_num == 3)
     {
       if ((strcmp (fields[0], "Active") == 0)
-         && (strcmp (fields[1], "connections:") == 0))
+          && (strcmp (fields[1], "connections:") == 0))
       {
-       submit ("nginx_connections", "active", atoll (fields[2]));
+        submit ("nginx_connections", "active", atoll (fields[2]));
       }
       else if ((atoll (fields[0]) != 0)
-         && (atoll (fields[1]) != 0)
-         && (atoll (fields[2]) != 0))
+          && (atoll (fields[1]) != 0)
+          && (atoll (fields[2]) != 0))
       {
-       submit ("connections", "accepted", atoll (fields[0]));
-       submit ("connections", "handled", atoll (fields[1]));
-       submit ("nginx_requests", NULL, atoll (fields[2]));
+        submit ("connections", "accepted", atoll (fields[0]));
+        /* TODO: The legacy metric "handled", which is the sum of "accepted" and
+         * "failed", is reported for backwards compatibility only. Remove in the
+         * next major version. */
+        submit ("connections", "handled", atoll (fields[1]));
+        submit ("connections", "failed", (atoll(fields[0]) - atoll (fields[1])));
+        submit ("nginx_requests", NULL, atoll (fields[2]));
       }
     }
     else if (fields_num == 6)
     {
       if ((strcmp (fields[0], "Reading:") == 0)
-         && (strcmp (fields[2], "Writing:") == 0)
-         && (strcmp (fields[4], "Waiting:") == 0))
+          && (strcmp (fields[2], "Writing:") == 0)
+          && (strcmp (fields[4], "Waiting:") == 0))
       {
-       submit ("nginx_connections", "reading", atoll (fields[1]));
-       submit ("nginx_connections", "writing", atoll (fields[3]));
-       submit ("nginx_connections", "waiting", atoll (fields[5]));
+        submit ("nginx_connections", "reading", atoll (fields[1]));
+        submit ("nginx_connections", "writing", atoll (fields[3]));
+        submit ("nginx_connections", "waiting", atoll (fields[5]));
       }
     }
   }