add prometheus exporter for groupfolder metrics
This commit is contained in:
parent
60cdcab011
commit
edfa0b07ff
5 changed files with 104 additions and 0 deletions
49
templates/nextcloud-prometheus-exporter.py.j2
Normal file
49
templates/nextcloud-prometheus-exporter.py.j2
Normal 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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue