]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
Rework slurm types
authorPablo Llopis <pablo.llopis@cern.ch>
Wed, 29 May 2019 10:02:09 +0000 (12:02 +0200)
committerPablo Llopis <pablo.llopis@cern.ch>
Wed, 29 May 2019 10:02:09 +0000 (12:02 +0200)
src/slurm.c
src/types.db

index eabc779101b3e460d11f2c5ab058299f3671ef03..5e2c4f023bfd32469cb4958d3112ae448c6f382c 100644 (file)
@@ -396,11 +396,12 @@ static partition_state_t *find_partition(partition_state_t *partitions,
  * Submit one gauge value
  */
 static void slurm_submit(const char *plugin_instance, const char *type,
-                         const char *type_instance, gauge_t value) {
+                         const char *type_instance, value_t *values,
+                         size_t values_len) {
   value_list_t vl = VALUE_LIST_INIT;
 
-  vl.values = &(value_t){.gauge = value};
-  vl.values_len = 1;
+  vl.values = values;
+  vl.values_len = values_len;
   sstrncpy(vl.plugin, PLUGIN_NAME, sizeof(vl.plugin));
   if (plugin_instance != NULL)
     sstrncpy(vl.plugin_instance, plugin_instance, sizeof(vl.plugin_instance));
@@ -414,67 +415,61 @@ static void slurm_submit(const char *plugin_instance, const char *type,
 static void slurm_submit_partition(partition_state_t *partition) {
   for (int i = 0; i < JOB_END; i++) {
     slurm_submit(partition->name, "slurm_job_state", job_state_names[i],
-                 partition->jobs_states_count[i]);
+                 &(value_t){.gauge = partition->jobs_states_count[i]}, 1);
   }
   for (int i = 0; i < NUM_NODE_STATES; i++) {
     slurm_submit(partition->name, "slurm_node_state", node_state_names[i],
-                 partition->nodes_states_count[i]);
+                 &(value_t){.gauge = partition->nodes_states_count[i]}, 1);
   }
 }
 
 static void slurm_submit_stats(stats_info_response_msg_t *stats_resp) {
-  slurm_submit("stats", "slurm_stats", "parts_packed",
-               stats_resp->parts_packed);
-  slurm_submit("stats", "slurm_stats", "server_thread_count",
-               stats_resp->server_thread_count);
-  slurm_submit("stats", "slurm_stats", "agent_queue_size",
-               stats_resp->agent_queue_size);
-  slurm_submit("stats", "slurm_stats", "schedule_cycle_max",
-               stats_resp->schedule_cycle_max);
-  slurm_submit("stats", "slurm_stats", "schedule_cycle_last",
-               stats_resp->schedule_cycle_last);
-  slurm_submit("stats", "slurm_stats", "schedule_cycle_sum",
-               stats_resp->schedule_cycle_sum);
-  slurm_submit("stats", "slurm_stats", "schedule_cycle_counter",
-               stats_resp->schedule_cycle_counter);
-  slurm_submit("stats", "slurm_stats", "schedule_cycle_depth",
-               stats_resp->schedule_cycle_depth);
-  slurm_submit("stats", "slurm_stats", "schedule_queue_len",
-               stats_resp->schedule_queue_len);
-  slurm_submit("stats", "slurm_stats", "jobs_submitted",
-               stats_resp->jobs_submitted);
-  slurm_submit("stats", "slurm_stats", "jobs_started",
-               stats_resp->jobs_started);
-  slurm_submit("stats", "slurm_stats", "jobs_completed",
-               stats_resp->jobs_completed);
-  slurm_submit("stats", "slurm_stats", "jobs_canceled",
-               stats_resp->jobs_canceled);
-  slurm_submit("stats", "slurm_stats", "jobs_failed", stats_resp->jobs_failed);
-  slurm_submit("stats", "slurm_stats", "bf_backfilled_jobs",
-               stats_resp->bf_backfilled_jobs);
-  slurm_submit("stats", "slurm_stats", "bf_last_backfilled_jobs",
-               stats_resp->bf_last_backfilled_jobs);
-  slurm_submit("stats", "slurm_stats", "bf_cycle_counter",
-               stats_resp->bf_cycle_counter);
-  slurm_submit("stats", "slurm_stats", "bf_cycle_sum",
-               stats_resp->bf_cycle_sum);
-  slurm_submit("stats", "slurm_stats", "bf_cycle_last",
-               stats_resp->bf_cycle_last);
-  slurm_submit("stats", "slurm_stats", "bf_cycle_max",
-               stats_resp->bf_cycle_max);
-  slurm_submit("stats", "slurm_stats", "bf_last_depth",
-               stats_resp->bf_last_depth);
-  slurm_submit("stats", "slurm_stats", "bf_last_depth_try",
-               stats_resp->bf_last_depth_try);
-  slurm_submit("stats", "slurm_stats", "bf_depth_sum",
-               stats_resp->bf_depth_sum);
-  slurm_submit("stats", "slurm_stats", "bf_depth_try_sum",
-               stats_resp->bf_depth_try_sum);
-  slurm_submit("stats", "slurm_stats", "bf_queue_len",
-               stats_resp->bf_queue_len);
-  slurm_submit("stats", "slurm_stats", "bf_queue_len_sum",
-               stats_resp->bf_queue_len_sum);
-  slurm_submit("stats", "slurm_stats", "bf_active", stats_resp->bf_active);
+  value_t load_values[] = {
+      {.gauge = stats_resp->server_thread_count},
+      {.gauge = stats_resp->agent_count},
+      {.gauge = stats_resp->agent_queue_size},
+      {.gauge = stats_resp->dbd_agent_queue_size},
+  };
+  slurm_submit("slurm_stats", "slurm_stats_load", NULL, load_values,
+               STATIC_ARRAY_SIZE(load_values));
+
+  value_t schedule_values[] = {
+      {.counter = stats_resp->schedule_cycle_max},
+      {.gauge = stats_resp->schedule_cycle_last},
+      {.counter = stats_resp->schedule_cycle_sum},
+      {.counter = stats_resp->schedule_cycle_counter},
+      {.derive = stats_resp->schedule_cycle_depth},
+      {.gauge = stats_resp->schedule_queue_len},
+  };
+  slurm_submit("slurm_stats", "slurm_stats_cycles", NULL, schedule_values,
+               STATIC_ARRAY_SIZE(schedule_values));
+
+  value_t jobs_values[] = {
+      {.derive = stats_resp->jobs_submitted},
+      {.derive = stats_resp->jobs_started},
+      {.derive = stats_resp->jobs_completed},
+      {.derive = stats_resp->jobs_canceled},
+      {.derive = stats_resp->jobs_failed},
+  };
+  slurm_submit("slurm_stats", "slurm_stats_jobs", NULL, jobs_values,
+               STATIC_ARRAY_SIZE(jobs_values));
+
+  value_t bf_values[] = {
+      {.derive = stats_resp->bf_backfilled_jobs},
+      {.derive = stats_resp->bf_backfilled_pack_jobs},
+      {.counter = stats_resp->bf_cycle_counter},
+      {.gauge = stats_resp->bf_cycle_last},
+      {.counter = stats_resp->bf_cycle_max},
+      {.counter = stats_resp->bf_cycle_sum},
+      {.gauge = stats_resp->bf_last_depth},
+      {.gauge = stats_resp->bf_last_depth_try},
+      {.counter = stats_resp->bf_depth_sum},
+      {.counter = stats_resp->bf_depth_try_sum},
+      {.gauge = stats_resp->bf_queue_len},
+      {.counter = stats_resp->bf_queue_len_sum},
+  };
+  slurm_submit("slurm_stats", "slurm_stats_backfill", NULL, bf_values,
+               STATIC_ARRAY_SIZE(bf_values));
 }
 
 static int slurm_read(void) {
index acc0a6429d5177246317954d116502d55a916254..ae9a5df911d34ca3a3522f5323ba0ebc25b85ee9 100644 (file)
@@ -232,8 +232,11 @@ signal_noise            value:GAUGE:U:0
 signal_power            value:GAUGE:U:0
 signal_quality          value:GAUGE:0:U
 slurm_job_state         value:GAUGE:0:U
+slurm_stats_load        server_thread_count:GAUGE:0:U, agent_thread_count:GAUGE:0:U, agent_queue_size:GAUGE:0:U, dbd_agent_queue_size:GAUGE:0:U
 slurm_node_state        value:GAUGE:0:U
-slurm_stats             value:GAUGE:0:U
+slurm_stats_backfill    backfilled_jobs:DERIVE:0:U, backfilled_pack_jobs:DERIVE:0:U, cycle_counter:COUNTER:0:U, cycle_last:GAUGE:0:U, cycle_max:COUNTER:0:U, cycle_sum:COUNTER:0:U, cycle_last_depth:GAUGE:0:U, cycle_last_depth_try:GAUGE:0:U, depth_sum:COUNTER:0:U, depth_try_sum:COUNTER:0:U, queue_len:GAUGE:0:U, queue_len_sum:COUNTER:0:U
+slurm_stats_cycles      max:COUNTER:0:U, last:GAUGE:0:U, sum:COUNTER:0:U, counter:COUNTER:0:U, depth:DERIVE:0:U, queue_len:GAUGE:0:U
+slurm_stats_jobs        submitted:DERIVE:0:U, started:DERIVE:0:U, completed:DERIVE:0:U, canceled:DERIVE:0:U, failed:DERIVE:0:U
 smart_attribute         current:GAUGE:0:255, worst:GAUGE:0:255, threshold:GAUGE:0:255, pretty:GAUGE:0:U
 smart_badsectors        value:GAUGE:0:U
 smart_powercycles       value:GAUGE:0:U