Repository
Munin (contrib)
Last change
2021-11-17
Graph Categories
Family
contrib
Capabilities
Keywords
Language
Python (3.x)
License
GPL-3.0-only
Authors

munin-libvirtpy

Name

munin-libvirtpy - KVM Domain CPU Utilization

Configuration

Parsed environment variables: python-libvirt is required

License

GPLv3

SPDX-License-Identifier: GPL-3.0-only

Authors

Julien Rottenberg

Steven Wagner

Magic Markers

#%# capabilities=autoconf
#%# family=contrib
#!/usr/bin/env python3

"""
=encoding utf8

=head1 NAME

munin-libvirtpy - KVM Domain CPU Utilization


=head1 CONFIGURATION

Parsed environment variables:
python-libvirt is required

=head1 LICENSE

GPLv3

SPDX-License-Identifier: GPL-3.0-only


=head1 AUTHORS

Julien Rottenberg

Steven Wagner


=head1 MAGIC MARKERS

 #%# capabilities=autoconf
 #%# family=contrib

=cut
"""

import libvirt
import sys

conn = libvirt.openReadOnly("qemu:///system")
if conn is None:
    print('Failed to open connection to the hypervisor')
    sys.exit(1)

try:
    (model, memory, cpus, mhz, nodes, socket, cores, threads) = conn.getInfo()
except BaseException as error:
    print('getInfo failed: {}'.format(error), file=sys.stderr)
    sys.exit(1)

ids = conn.listDomainsID()
if ids is None or len(ids) == 0:
    print('No running domains found.', file=sys.stderr)
    sys.exit(1)

if len(sys.argv) == 2:
    if sys.argv[1] == "config":
        print("graph_title KVM Domain CPU Utilization")
        print("graph_vlabel CPU use in seconds")
        print("graph_args --base 1000")
        print("graph_category virtualization")

        for id in ids:
            dom = conn.lookupByID(id)
            nodeName = dom.name()
            print("%s.type COUNTER" % (nodeName))
            print("%s.label %s" % (nodeName, nodeName))
        sys.exit(0)

for id in ids:
    dom = conn.lookupByID(id)
    state, maxMem, memory, numVirtCpu, cpuTime = dom.info()
    nodeName = dom.name()
    print("%s.value %d" % (nodeName, cpuTime/float(1000000)))