const char *name;
char uuid[VIR_UUID_STRING_BUFLEN];
- vl->interval = interval_g;
-
sstrncpy (vl->plugin, "libvirt", sizeof (vl->plugin));
vl->host[0] = '\0';
} /* void init_value_list */
static void
+memory_submit (gauge_t memory, virDomainPtr dom)
+{
+ value_t values[1];
+ value_list_t vl = VALUE_LIST_INIT;
+
+ init_value_list (&vl, dom);
+
+ values[0].gauge = memory;
+
+ vl.values = values;
+ vl.values_len = 1;
+
+ sstrncpy (vl.type, "memory", sizeof (vl.type));
+ sstrncpy (vl.type_instance, "total", sizeof (vl.type_instance));
+
+ plugin_dispatch_values (&vl);
+}
+
+static void
cpu_submit (unsigned long long cpu_time,
virDomainPtr dom, const char *type)
{
interface_devices[i].path);
#endif
- /* Get CPU usage, VCPU usage for each domain. */
+ /* Get CPU usage, memory, VCPU usage for each domain. */
for (i = 0; i < nr_domains; ++i) {
virDomainInfo info;
virVcpuInfoPtr vinfo = NULL;
}
cpu_submit (info.cpuTime, domains[i], "virt_cpu_total");
+ memory_submit ((gauge_t) info.memory * 1024, domains[i]);
vinfo = malloc (info.nrVirtCpu * sizeof (vinfo[0]));
if (vinfo == NULL) {
ignore_device_match (il_interface_devices, name, address) != 0))
goto cont3;
- add_interface_device (dom, path, address, j+1);
+ add_interface_device (dom, path, address, j+1);
cont3:
if (path) xmlFree (path);
if (address) xmlFree (address);
{
struct interface_device *new_ptr;
int new_size = sizeof (interface_devices[0]) * (nr_interface_devices+1);
- char *path_copy, *address_copy, *number_string;
+ char *path_copy, *address_copy, number_string[15];
path_copy = strdup (path);
if (!path_copy) return -1;
address_copy = strdup (address);
- if (!address_copy) return -1;
+ if (!address_copy) {
+ sfree(path_copy);
+ return -1;
+ }
- number_string = (char*) malloc (15);
- if (!number_string) return -1;
- snprintf(number_string, 15, "interface-%u", number);
+ snprintf(number_string, sizeof (number_string), "interface-%u", number);
if (interface_devices)
new_ptr = realloc (interface_devices, new_size);
interface_devices[nr_interface_devices].dom = dom;
interface_devices[nr_interface_devices].path = path_copy;
interface_devices[nr_interface_devices].address = address_copy;
- interface_devices[nr_interface_devices].number = number_string;
+ interface_devices[nr_interface_devices].number = strdup(number_string);
return nr_interface_devices++;
}
free_domains ();
if (conn != NULL)
- virConnectClose (conn);
+ virConnectClose (conn);
conn = NULL;
ignorelist_free (il_domains);
module_register (void)
{
plugin_register_config ("libvirt",
- lv_config,
- config_keys, NR_CONFIG_KEYS);
+ lv_config,
+ config_keys, NR_CONFIG_KEYS);
plugin_register_init ("libvirt", lv_init);
plugin_register_read ("libvirt", lv_read);
plugin_register_shutdown ("libvirt", lv_shutdown);