add untracked files
This commit is contained in:
77
collectd/usr/local/bin/du-data
Executable file
77
collectd/usr/local/bin/du-data
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
#
|
||||
# Imports
|
||||
#
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import commands
|
||||
import argparse
|
||||
|
||||
|
||||
#
|
||||
# Methods
|
||||
#
|
||||
def get_disk_usage(path, human_readable):
|
||||
'''disk usage in human readable format (e.g. '2,1GB')'''
|
||||
arguments = '-sh' if human_readable else '-s'
|
||||
path = os.path.realpath(path)
|
||||
command = 'sudo du %s %s' % (arguments, path)
|
||||
status, output = commands.getstatusoutput(command)
|
||||
|
||||
if status is not 0:
|
||||
raise Exception(command)
|
||||
|
||||
disk_usage = output.split()[0]
|
||||
if not human_readable:
|
||||
# du reports in units of 1024 bytes, convert to plain number of bytes
|
||||
disk_usage = int(disk_usage) * 1024
|
||||
return disk_usage
|
||||
|
||||
#
|
||||
# Directories to scan
|
||||
#
|
||||
hostname = 'server'
|
||||
interval = 10
|
||||
directories = [
|
||||
#['bram', '/media/data/Personal/Bram'],
|
||||
['rik', '/media/data/Personal/Rik'],
|
||||
['books', '/media/data/Shared/Books'],
|
||||
['games', '/media/data/Shared/Games'],
|
||||
['misc', '/media/data/Shared/Miscellaneous'],
|
||||
['shows', '/media/data/Shared/Video/Shows'],
|
||||
['movies', '/media/data/Shared/Video/Movies'],
|
||||
['music', '/media/data/Shared/Music'],
|
||||
['photographs', '/media/data/Shared/Photographs'],
|
||||
['pictures', '/media/data/Shared/Pictures'],
|
||||
['raw', '/media/data/Shared/Raw'],
|
||||
['software', '/media/data/Shared/Software']
|
||||
]
|
||||
|
||||
#
|
||||
# Command line arguments
|
||||
#
|
||||
parser = argparse.ArgumentParser(description='Get BTRFS disk usage')
|
||||
parser.add_argument('-s', action='store_true', help='print in human readable format')
|
||||
args = parser.parse_args()
|
||||
human_readable = args.s
|
||||
|
||||
|
||||
#
|
||||
# Main
|
||||
#
|
||||
if (human_readable):
|
||||
for (name, path) in directories:
|
||||
disk_usage = get_disk_usage(path, human_readable)
|
||||
print('%s: %s' % (name, disk_usage))
|
||||
else:
|
||||
# RRD mode
|
||||
while True:
|
||||
for (name, path) in directories:
|
||||
disk_usage = get_disk_usage(path, human_readable)
|
||||
timestamp = int(time.time())
|
||||
size = float(disk_usage)
|
||||
print('PUTVAL {}/exec-du_{}/gauge-size {}:{:.1f}'.format(hostname, name, timestamp, size))
|
||||
sys.stdout.flush()
|
||||
time.sleep(interval)
|
||||
Reference in New Issue
Block a user