Informe de consum de cada usuari a Nextcloud

Si encara volem explotar més la nostra instal·lació de Nextcloud i volem saber quant està consumint cada usuari… aquest és el teu post! Va quedar xulíssim perquè anem a veure-ho directament des del nostre Grafana!

 

Usarem un script anomenat 'user usage report’ que podrem descarregar de la web de Apps de Nextcloud, descarregarem la versió que correspongui amb la nostra instal·lació de Nextcloud, en aquest post fem servir Nextcloud 13. La deixem en el directori de les Apps dins del nostre servidor de Nextcloud, per a això, alguna cosa com això ens ajudarà, al final accedeixen al directori on hi ha el binari occ i el fem executable:

[sourcecode]mv user_usage_report-1.0.1.tar.gz /var/www/nextcloud/apps/
cd /var/www/nextcloud/apps
tar zxfv user_usage_report-1.0.1.tar.gz
rm user_usage_report-1.0.1.tar.gz
cd /var/www/nextcloud
sudo chmod +x occ[/sourcecode]

 

Després d'això, podrem provar directament a veure què ens retorna aquest marrec script. Per veure l'informe d'ús de les dades de l'usuari admin podrem executar el següent comandament i veurem el seu output:

[sourcecode]sudo -u www-data ./occ usage-report:generate admin
"admin","2018-08-20T20:35:50+00:00",-2,7518695,20,0,0,0[/sourcecode]

 

Ole! ja veiem d'alguna manera l'ús d'un sol usuari, bé, i si volem veure de tots? Doncs treient l'usuari 🙂

[sourcecode]sudo -u www-data ./occ usage-report:generate
"admin","2018-08-20T20:36:32+00:00",-2,7518695,20,0,0,0
"88133B49-A6A5-4035-83EB-3193BDD19E3B","2018-08-20T20:36:32+00:00",-2,7952664,32,1,0,16
"57D0CD27-A319-4A36-92D3-E541B7DD84C9","2018-08-20T20:36:32+00:00",-2,"",,0,0,0
"5BA5460C-FF2F-4DAC-8C1F-5427729DDD4D","2018-08-20T20:36:32+00:00",-2,7435791,12,0,0,0
"61F42891-B220-43AB-9568-4390753DDBF5","2018-08-20T20:36:32+00:00",-2,"",,0,0,0
"272407CC-6361-49F4-A3B5-F8A26FDDDE18","2018-08-20T20:36:32+00:00",-2,"",,0,0,0
"755784D0-F0AE-4DF9-BD88-E3A5B5BDD374","2018-08-20T20:36:32+00:00",-2,7435791,12,0,0,0
"BA886970-5134-45FD-8D42-D11DCDDE57A","2018-08-20T20:36:32+00:00",-2,"",,0,0,0
"A6E28617-BB75-4080-A7B3-9F22E4DD184A","2018-08-20T20:36:32+00:00",-2,"",,0,0,0
"3009D13B-0236-48D4-B771-604932DD47F1","2018-08-20T20:36:32+00:00",-2,"",,0,0,0[/sourcecode]

 

El que em treu són els identificadors dels usuaris del Nextcloud, els tinc sincronitzats amb el Directori Actiu. Tot això podrem exportar-lo a CSV i parar aquí ja el post. Et fas les gràfiques com vulguis amb un Excel i llest. Ja que el que veiem és un format CSV amb els següents camps:

  • Identificador de l' usuari.
  • Data del report.
  • Si té quotes habilitat (-3 seria il·limitat, -2 no fixat).
  • Espai consumit a la seva carpeta.
  • Nombre de fitxers en el seu homenatge.
  • Nombre d' ítems compartits.
  • Nombre de fitxers creats.
  • Nombre de fitxers vistos o descarregats.

 

En el cas que ens pertoca, si coneixeu per on vaig tirar… la intenció meva és crear un script que exporti aquesta informació a un servidor de MySQL, guardant en una taula totes aquestes dades i així després amb Grafana treballar-les d'una manera més senzilla.

En el meu cas crec aquest script que farà la feina per mi, l'anomeno “/root/nextcloud_uso_a_mysql.sh” amb el contingut següent:

[sourcecode]cd /var/www/nextcloud/
sudo -u www-data ./occ usage-report:generate > /tmp/nextcloud_uso1.csv
awk '{gsub(/\"/,"")};1’ /tmp/nextcloud_uso1.csv > /tmp/nextcloud_uso.csv
sed -i -e 's/88133B49-A6A5-4035-83EB-3193B4DD9D3B/Hector Herrero/g’ /tmp/nextcloud_uso.csv
sed -i -e 's/755784D0-F0AE-4DF9-BD88-E3A5B5DDD74/Seila Fernandez/g’ /tmp/nextcloud_uso.csv
sed -i -e 's/A6E28617-BB75-4080-A7B3-9F22E4DD8DA/David Guerrero/g’ /tmp/nextcloud_uso.csv
scp /tmp/nextcloud_uso.csv pi@192.168.1.197:/home/pi
mysqlimport -h SERVIDOR_MYSQL -uroot -pCONTRASENYA NOMBRE_BD –fidelds-terminated-by =',’ /home/pi/nextcloud_uso.csv[/sourcecode]

 

Com veiem malament aconsegueixo exportar a un CSV les dades, l'elimino totes les dobles cometes que molesten, i reemplaço els identificadors que m'escup amb els noms correctes dels meus usuaris de l'AD. Al final puja el fitxer csv al servidor MySQL amb l'import i l'importo, agafarà el nom de taula del nom del fitxer que importem. Guardem l'script i el fem executable 🙂

I directament podrem programar-lo en cron, en el meu cas, amb què s'executi un cop al dia em val i em sobra, així que en aquest exemple el program per a les 00:01 de forma diraria. Cada dia importarà a la taula de MySQL noves dades!

[sourcecode]crontab -e
1 0 * * * /root/nextcloud_uso_a_mysql.sh[/sourcecode]

 

La taula que estic fent servir a MySQL es diu 'nextcloud_uso’ i està composta d' usuari, fetxa, quota, espai, fitxers, compartits, creats, mogut i data, com veureu són dades més que sucoses per després tractar-les amb Grafana… us deixo l'script per si voleu crear la taula amb la mateixa estructura que jo:

[sourcecode]CREATE TABLE 'nextcloud_uso' (
'usuari' CHAR(40) NULL DEFAULT NULL,
'fetxa' CHAR(10) NULL DEFAULT NULL,
'quota' FLOAT NULL DEFAULT NULL,
'espai' FLOAT NULL DEFAULT NULL,
'ficheros' FLOAT NULL DEFAULT NULL,
'compartits' FLOAT NULL DEFAULT NULL,
'creats' FLOAT NULL DEFAULT NULL,
'movido' FLOAT NULL DEFAULT NULL,
'fecha' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE =' latin1_swedish_ci’
ENGINE = InnoDB
ROW_FORMAT = COMPACT
;[/sourcecode]

 

I ara no queda més que visualitzar les dades! Us passo aquest parell d'exemples, on en el primer, amb un formatget veurem les dades que estan fent servir actualment les nostres dades, d'una manera gràfica i amb una ullada ràpida sabrem qui és el ganyol que es xucla tot l'espai 🙂 I a la dreta us deixo una gràfica de com aniria creixent l'ús de dades dels nostres usuaris. Però ull! Que a la taula tenim més dades curioses! Com saber qui comparteix més, qui treballa més, etc., etc.…

 

Us deixo una pista de les consultes que useu a Grafana perquè us quedi igual, o vagi, a vosaltres millor! En un dashboard, creem:

  • Formatget o Pie Chart: Seria qüestió d'anar afegint les sèries que ens interessen contra el nostre Data Source de MySQL, exemple d' una d' elles:

[sourcecode]select data as time_sec, usuari as metric, espai as value from nextcloud_uso where usuari = 'Hector Herrero’ order by fecha desc limit 1[/sourcecode]

  • Gràfica o Graph: El mateix, anar afegint les sèries que volem que ens pinti, exemple:

[sourcecode]SELECT espai as value, "Hector Herrero" as metric, UNIX_TIMESTAMP(data) as time_sec FROM nextcloud_uso WHERE $__timeFilter(data) and usuari = 'Hector Herrero’ order by data desc[/sourcecode]

 

Si estàs alguna cosa perduda amb Grafana i necessites saber com instal·lar-lo, fica una ullada a aquest post que et pot servir d'ajuda, després com a molt hauràs de fer un connector o Data Source contra el teu servidor MySQL! Bo, espero us hagi agradat! El que no té el seu entorn controlat és perquè no vol!!! Aquí us ho deixo! Xulo, xulo…

 

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!