Merge pull request #759 from mschenck/add-linux-io-time
authorMarc Fournier <marc.fournier@camptocamp.com>
Thu, 20 Nov 2014 07:58:38 +0000 (08:58 +0100)
committerMarc Fournier <marc.fournier@camptocamp.com>
Thu, 20 Nov 2014 07:58:38 +0000 (08:58 +0100)
Add linux I/O time

1  2 
src/disk.c
src/types.db

diff --combined src/disk.c
@@@ -292,6 -292,28 +292,28 @@@ static void submit_in_progress (char co
        plugin_dispatch_values (&vl);
  }
  
+ static void submit_io_time (char const *plugin_instance, derive_t io_time, derive_t weighted_time)
+ {
+       value_t values[2];
+       value_list_t vl = VALUE_LIST_INIT;
+       if (ignorelist_match (ignorelist, plugin_instance) != 0)
+         return;
+       values[0].derive = io_time;
+       values[1].derive = weighted_time;
+       vl.values = values;
+       vl.values_len = 2;
+       sstrncpy (vl.host, hostname_g, sizeof (vl.host));
+       sstrncpy (vl.plugin, "disk", sizeof (vl.plugin));
+       sstrncpy (vl.plugin_instance, plugin_instance, sizeof (vl.plugin_instance));
+       sstrncpy (vl.type, "disk_io_time", sizeof (vl.type));
+       plugin_dispatch_values (&vl);
+ }
  static counter_t disk_calc_time_incr (counter_t delta_time, counter_t delta_ops)
  {
        double interval = CDTIME_T_TO_DOUBLE (plugin_get_interval ());
@@@ -560,6 -582,8 +582,8 @@@ static int disk_read (void
        derive_t write_merged  = 0;
        derive_t write_time    = 0;
        gauge_t in_progress    = NAN;
+       derive_t io_time       = 0;
+       derive_t weighted_time = 0;
        int is_disk = 0;
  
        diskstats_t *ds, *pre_ds;
                                write_time   = atoll (fields[10+ fieldshift]);
  
                                in_progress = atof (fields[11 + fieldshift]);
+                               io_time       = atof (fields[12 + fieldshift]);
+                               weighted_time = atof (fields[13 + fieldshift]);
                        }
                }
                else
                        disk_submit (output_name, "disk_merged",
                                        read_merged, write_merged);
                        submit_in_progress (output_name, in_progress);
+                       submit_io_time (output_name, io_time, weighted_time);
                } /* if (is_disk) */
  
                /* release udev-based alternate name, if allocated */
  
  #elif defined(HAVE_LIBSTATGRAB)
        sg_disk_io_stats *ds;
 -      int disks, counter;
 +# if HAVE_LIBSTATGRAB_0_90
 +      size_t disks;
 +# else
 +      int disks;
 +#endif
 +      int counter;
        char name[DATA_MAX_NAME_LEN];
        
        if ((ds = sg_get_disk_io_stats(&disks)) == NULL)
diff --combined src/types.db
@@@ -8,14 -8,12 +8,14 @@@ ath_nodes             value:GAUGE:0:6553
  ath_stat              value:DERIVE:0:U
  backends              value:GAUGE:0:65535
  bitrate                       value:GAUGE:0:4294967295
 +blocked_clients value:GAUGE:0:U
  bytes                 value:GAUGE:0:U
  cache_eviction                value:DERIVE:0:U
  cache_operation               value:DERIVE:0:U
  cache_ratio           value:GAUGE:0:100
  cache_result          value:DERIVE:0:U
  cache_size            value:GAUGE:0:U
 +changes_since_last_save   value:GAUGE:0:U
  charge                        value:GAUGE:0:U
  compression_ratio     value:GAUGE:0:2
  compression           uncompressed:DERIVE:0:U, compressed:DERIVE:0:U
@@@ -39,6 -37,7 +39,7 @@@ disk_octets           read:DERIVE:0:U, write:DER
  disk_ops_complex      value:DERIVE:0:U
  disk_ops              read:DERIVE:0:U, write:DERIVE:0:U
  disk_time             read:DERIVE:0:U, write:DERIVE:0:U
+ disk_io_time          io_time:DERIVE:0:U, weighted_io_time:DERIVE:0:U
  dns_answer            value:DERIVE:0:U
  dns_notify            value:DERIVE:0:U
  dns_octets            queries:DERIVE:0:U, responses:DERIVE:0:U
@@@ -61,7 -60,6 +62,7 @@@ email_check           value:GAUGE:0:
  email_count           value:GAUGE:0:U
  email_size            value:GAUGE:0:U
  entropy                       value:GAUGE:0:4294967295
 +expired_keys    value:GAUGE:0:U
  fanspeed              value:GAUGE:0:U
  file_size             value:GAUGE:0:U
  files                 value:GAUGE:0:U
@@@ -102,7 -100,6 +103,7 @@@ memcached_items            value:GAUGE:0:
  memcached_octets      rx:DERIVE:0:U, tx:DERIVE:0:U
  memcached_ops         value:DERIVE:0:U
  memory                        value:GAUGE:0:281474976710656
 +memory_lua            value:GAUGE:0:281474976710656
  multimeter            value:GAUGE:U:U
  mutex_operations      value:DERIVE:0:U
  mysql_commands                value:DERIVE:0:U
@@@ -160,7 -157,6 +161,7 @@@ ps_rss                     value:GAUGE:0:9223372036854775
  ps_stacksize          value:GAUGE:0:9223372036854775807
  ps_state              value:GAUGE:0:65535
  ps_vm                 value:GAUGE:0:9223372036854775807
 +pubsub        value:GAUGE:0:U
  queue_length          value:GAUGE:0:U
  records                       value:GAUGE:0:U
  requests              value:GAUGE:0:U
@@@ -173,11 -169,6 +174,11 @@@ serial_octets            rx:DERIVE:0:U, tx:DERIVE
  signal_noise          value:GAUGE:U:0
  signal_power          value:GAUGE:U:0
  signal_quality                value:GAUGE:0:U
 +smart_poweron         value:GAUGE:0:U
 +smart_powercycles     value:GAUGE:0:U
 +smart_badsectors      value:GAUGE:0:U
 +smart_temperature     value:GAUGE:-300:300
 +smart_attribute         current:GAUGE:0:255, worst:GAUGE:0:255, threshold:GAUGE:0:255, pretty:GAUGE:0:U
  snr                   value:GAUGE:0:U
  spam_check            value:GAUGE:0:U
  spam_score            value:GAUGE:U:U