X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fvirt.c;h=e95a31b49d23883ba725f4bbf03d6e89254773a9;hb=6c97677d92ee28bf35dfe7b2c30b348fe8d2848b;hp=51682993d476ac1a04c678ffa1a9f2a59270d459;hpb=9907031fdc5b09a7b108bab6488dab2575473766;p=collectd.git diff --git a/src/virt.c b/src/virt.c index 51682993..e95a31b4 100644 --- a/src/virt.c +++ b/src/virt.c @@ -414,7 +414,7 @@ static void memory_stats_submit(gauge_t value, virDomainPtr dom, "minor_fault", "unused", "available", "actual_balloon", "rss"}; - if ((tag_index < 0) || (tag_index >= STATIC_ARRAY_SIZE(tags))) { + if ((tag_index < 0) || (tag_index >= (int)STATIC_ARRAY_SIZE(tags))) { ERROR("virt plugin: Array index out of bounds: tag_index = %d", tag_index); return; } @@ -824,11 +824,6 @@ static int lv_read(user_data_t *ud) { continue; } - if (info.di.state != VIR_DOMAIN_RUNNING) { - /* only gather stats for running domains */ - continue; - } - pcpu_submit(state->domains[i], &info); cpu_submit(info.di.cpuTime, state->domains[i], "virt_cpu_total"); memory_submit((gauge_t)info.di.memory * 1024, state->domains[i]); @@ -1129,6 +1124,8 @@ static int refresh_lists(struct lv_read_instance *inst) { xmlXPathContextPtr xpath_ctx = NULL; xmlXPathObjectPtr xpath_obj = NULL; char tag[PARTITION_TAG_MAX_LEN] = {'\0'}; + virDomainInfo info; + int status; dom = virDomainLookupByID(conn, domids[i]); if (dom == NULL) { @@ -1143,6 +1140,18 @@ static int refresh_lists(struct lv_read_instance *inst) { goto cont; } + status = virDomainGetInfo(dom, &info); + if (status != 0) { + ERROR(PLUGIN_NAME " plugin: virDomainGetInfo failed with status %i.", + status); + continue; + } + + if (info.state != VIR_DOMAIN_RUNNING) { + DEBUG(PLUGIN_NAME " plugin: skipping inactive domain %s", name); + continue; + } + if (il_domains && ignorelist_match(il_domains, name) != 0) goto cont;