Repository
Munin (contrib)
Last change
2020-10-28
Graph Categories
Keywords
Language
Python (3.x)

lxd_disk

Sadly there is no documentation for this plugin.

#!/usr/bin/env python3

import sys

errors=[]

HAS_LIB=True
try:
    from pylxd import api
except:
    HAS_LIB=False
    errors.append("no pylxd module")

c=None
HAS_ACCESS=True
try:
    c=api.API()
    c.container_list()
except:
    HAS_ACCESS=False
    errors.append("no socket access")

if len(sys.argv) == 2 and sys.argv[1]=="autoconf":
    if HAS_LIB and HAS_ACCESS:
        print("yes")
    else:
        print("no ("+" and ".join(errors)+")")
    sys.exit(0)

if not (HAS_LIB and HAS_ACCESS):
    # pylxd not installed or lxd socket not accessible
    sys.exit(1)

if len(sys.argv) == 2 and sys.argv[1]=="config":
    print("graph_title LXD container disk usage")
    print("graph_args --base 1000 --lower-limit 0")
    print("graph_vlabel Bytes")
    print("graph_category virtualization")
    print("graph_info This shows the disk usage of storage in containers. Make sure to install pylxd in python3.")
    for name in c.container_list():
        info = c.container_info(name)
        # first check if disk information list is available or None
        if info['disk']:
            # if no disk information is present, this would fail to iteration None
            for disk in info['disk']:
                print(name+"-"+disk+".label "+name)
                print(name+"-"+disk+".draw LINE2")
    sys.exit(0)

for name in c.container_list():
    info = c.container_info(name)
    # first check if disk information list is available or None
    if info['disk']:
        # if no disk information is present, this would fail to iteration None
        for disk in info['disk']:
            print(name+"-"+disk+".value "+str(info['disk'][disk]['usage']))