From: Pablo Llopis Date: Wed, 29 May 2019 10:02:09 +0000 (+0200) Subject: Rework slurm types X-Git-Tag: collectd-5.11.0~3^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f68d939298ab1780cf452d2bb1f9ae1d685f68c2;p=thirdparty%2Fcollectd.git Rework slurm types --- diff --git a/src/slurm.c b/src/slurm.c index eabc77910..5e2c4f023 100644 --- a/src/slurm.c +++ b/src/slurm.c @@ -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) { diff --git a/src/types.db b/src/types.db index acc0a6429..ae9a5df91 100644 --- a/src/types.db +++ b/src/types.db @@ -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