Informe de consumo de cada usuario en Nextcloud

Si aún queremos explotar más nuestra instalación de Nextcloud y queremos saber cuánto está consumiendo cada usuario… este es tu post! Va a quedar chulísimo por que vamos a verlo directamente desde nuestro Grafana!

 

Usaremos un script llamado 'user usage report’ que podremos descargar de la web de Apps de Nextcloud, descargaremos la versión que corresponda con nuestra instalación de Nextcloud, en este post usamos Nextcloud 13. La dejamos en el directorio de las Apps dentro de nuestro servidor de Nextcloud, horretarako, algo como esto nos ayudará, al final accedemos al directorio where está el binario occ y lo hacemos ejecutable:

[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]

 

Tras ello, podremos probar directly a ver qué nos devuelve este maravilloso script. Para ver el informe de uso de los datos del usuario admin podremos ejecutar el siguiente comando y veremos su 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! ya vemos de alguna manera el uso de un sólo usuario, ongi, y si queremos ver de todos? Pues quitando el usuario 🙂

[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]

 

Lo que me saca son los identificadores de los usuarios del Nextcloud, los tengo sincronizados con el Directorio Activo. Todo esto podremos exportarlo en CSV y parar aquí ya el post. Te haces las gráficas como quieras con un Excel y listo. CSV formatu bat ikusten ari garenez, honako eremu hauek dituela:

  • Erabiltzailearen identifikatzailea.
  • Txostenaren data.
  • Quotak gaituta dituen ala ez (-3 Mugagabea izango litzateke, -2 Ez dago finkatuta).
  • Bere karpetan kontsumitutako espazioa.
  • Bere etxeko karpetako fitxategi kopurua.
  • Partekatutako elementu kopurua.
  • Sortutako fitxategi kopurua.
  • Ikusi edo deskargatutako fitxategi kopurua.

 

Gure kasuan dagokiguna, Non joango naizen dakizuen ala ez… Nire asmoa script bat sortzea da, informazio hori MySQL zerbitzari batera esportatzeko, Datu hauek guztiak taula batean gordez eta gero Grafana-rekin modu errazago batean lantzeko.

Nire kasuan, lan hori niretzat egingo duen script hau sortzen dut, Deitzen diot “/root/nextcloud_uso_a_mysql.sh” con el siguiente contenido:

[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 -pCONTRASEÑA NOMBRE_BD –fields-terminated-by=',',’ /home/pi/nextcloud_uso.csv[/sourcecode]

 

Ikusten dugunez, zailki lortzen dut CSV batera datuak esportatzea, kenduko dizkiot molestatzen duten bikoiztutako komatxo guztiak, eta ordezkatuko ditut sortzen dizkidan identifikatzaileak nire ADko erabiltzaileen izen zuzenekin. Azkenik, csv fitxategia MySQL zerbitzarian igo eta inportatu egiten dut, inportatzen dugun fitxategiaren izenetik taularen izena hartuko du. Gorde script-a eta egin exekutagarria 🙂

Eta zuzenean cron-en programatu ahal izango dugu, en mi caso, egun batean exekutatzen den bakarrarekin nahikoa eta aski da, beraz adibide honetan honela programatuko dut 00:01 egunero moduan. Egunero MySQL taulan datu berriak inportatuko dira!

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

 

MySQL-n erabiltzen ari naizen taula 'nextcloud_uso' deitzen da’ eta honela osatuta dago: erabiltzailea, data, quota, espazioa, ficheros, partekatutakoak, sortuak, mugitua eta data, ikusiko duzuenez, datu oso erabilgarriak dira gero Grafana-rekin tratatzeko… script-a uzten dizuet, nahi baduzue nire antzeko egitura duen taula sortzeko:

[sourcecode]CREATE TABLE `nextcloud_uso` (
`erabiltzailea` CHAR(40) NULL DEFAULT NULL,
`data` CHAR(10) NULL DEFAULT NULL,
`quota` FLOAT NULL DEFAULT NULL,
`espazioa` FLOAT NULL DEFAULT NULL,
`fitxategiak` FLOAT NULL DEFAULT NULL,
`partekatutakoak` FLOAT NULL DEFAULT NULL,
`sortuak` 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]

 

Eta orain ez dago beste ezer datuak bistaratzea baino! Hemen pare bat adibide pasatzen dizkizuet, lehenengoan, quesito batekin ikusi ahal izango ditugu une honetan gure datuak erabiltzen ari diren datuak, modu grafiko batean eta begirada azkar batekin jakin ahal izango dugu nor den espazio guztia xurgatzen duen gañana 🙂 Eta eskuinean uzten dizuet gure erabiltzaileen datuen erabilera nola haziko den erakusten duen grafiko bat. Baina adi! Taulan datu harrigarri gehiago ditugula! Nola jakin nor den gehiago partekatzen duena, nor den gehiago lan egiten duena, eta abar, eta abar…

 

Grafanan erabili nituen kontsulta batzuk pista gisa uzten dizkizuet berdin geratzeko, o vaya, zuek hobeto! Dashboard batean, creamos:

  • Quesito edo Pie Chart: Sería cuestión de ir añadiendo las series que nos interesan contra nuestro Data Source de MySQL, ejemplo de una de ellas:

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

  • Gráfica o Graph: Lo mismo, ir añadiendo las series que queremos que nos pinte, ejemplo:

[sourcecode]SELECT espacio as value, "Hector Herrero" metrika gisa, UNIX_TIMESTAMP(fecha) as time_sec FROM nextcloud_uso WHERE $__timeFilter(fecha) and usuario = 'Hector Herrero’ order by fecha desc[/sourcecode]

 

Si estás algo perdido con Grafana y necesitas saber cómo instalarlo, echa un vistazo a post hau que te puede servir de ayuda, luego como mucho tendrás que hacer un conector o Data Source contra tu servidor MySQL! Onena, espero os haya gustado! El que no tiene su entorno controlado es por que no quiere!!! Ahí os lo dejo! Chulo, chulo…

 

Izenburuko mezuak

Egilea

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, ez zalantzarik izan nirekin harremanetan jartzeko, ahal duzun guztietan laguntzen saiatuko naiz, partekatu ahal dudan guztietan ;) . Dokumentuez gozatu!!!