import pandas as pd
import mariadb as mdb
import configparser
config = configparser.ConfigParser()
config.read("/var/lib/zabbix/.my.cnf")
nc_usr = config["client"].get("user")
nc_usr_pwd = config["client"].get("password")
## The following variables must be filled in by the user
nc_db = "nextcloud_db"
#tables_to_monitor = "'oc_filecache','oc_comments','oc_authtoken','oc_circles_event','oc_share'"
##
conn = mdb.connect( user=nc_usr,
password=nc_usr_pwd,
host="localhost",
port=3306,
database=nc_db
)
cur = conn.cursor()
cur.execute(
"""
SELECT TABLE_NAME AS table_name,
TABLE_ROWS AS nr_rows,
(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 AS size_mb
FROM information_schema.TABLES
WHERE TABLE_SCHEMA='%s'
ORDER BY size_mb DESC
LIMIT 5
""" % nc_db
)
df = pd.DataFrame( cur.fetchall(),
columns=["table_name","nr_rows","size_mb"]
)
df.to_json( "/var/lib/zabbix/output/db_metrics.json",
orient='columns')