add prometheus exporter for groupfolder metrics

This commit is contained in:
psy 2023-04-01 18:10:20 +02:00
parent 60cdcab011
commit edfa0b07ff
No known key found for this signature in database
GPG key ID: 30546501FF65B1A5
5 changed files with 104 additions and 0 deletions

View file

@ -0,0 +1,49 @@
import json
from prometheus_client import Gauge, Summary, start_http_server
import subprocess
import schedule
from time import sleep
gauge_groupfolder_quota = Gauge('nextcloud_groupfolder_quota_bytes', 'nextcloud groupfolder quota', ['folder'])
gauge_groupfolder_size = Gauge('nextcloud_groupfolder_bytes', 'nextcloud groupfolder size', ['folder'])
def occ(cmd):
args = ['/usr/bin/php', '/usr/share/nextcloud/occ', cmd, '--output=json']
process = subprocess.run(args, capture_output=True)
output = None
try:
process.check_returncode()
output = json.loads(process.stdout.decode('utf-8'))
except Exception as e:
print('OCC command returned an error:')
print(str(e))
print(process.stderr.decode('utf-8'))
return output
def update_groupfolders():
groupfolders = occ('groupfolders:list')
if not groupfolders:
return
for groupfolder in groupfolders:
gauge_groupfolder_quota.labels(groupfolder['mount_point']).set(int(groupfolder['quota']))
gauge_groupfolder_size.labels(groupfolder['mount_point']).set(int(groupfolder['size']))
if __name__ == '__main__':
update_groupfolders()
schedule.every().minute.do(update_groupfolders)
start_http_server(addr='127.0.0.1', port={{ nextcloud.prometheus_exporter.port }})
while True:
schedule.run_pending()
sleep(1)