Report sui consumi di ogni utente in Nextcloud

Se vogliamo ancora sfruttare di più la nostra installazione di Nextcloud e vogliamo sapere quanto sta consumando ogni utente… Questo è il tuo post! Avrà un bell'aspetto perché lo vedremo direttamente dal nostro Grafana!

 

Usaremos un script llamado ‘user usage reportque 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, per questo, Qualcosa del genere ci aiuterà, al final accedemos al directorio donde está el binario occ y lo hacemos ejecutable:

[Codice sorgente]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[/Codice sorgente]

 

Dopo di che, podremos probar directamente 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:

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

 

Ehi! ya vediamo in qualche modo l'uso di un solo utente, Non male, e se vogliamo vedere di tutti? Basta rimuovere l'utente 🙂

[Codice sorgente]sudo -u www-data ./occ usage-report:genera
"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[/Codice sorgente]

 

Quello che ottengo sono gli identificatori degli utenti di Nextcloud, Li ho sincronizzati con Active Directory. Tutto questo potremo esportarlo in CSV e fermare qui il post. Puoi fare i grafici come vuoi con Excel e fatto. Dato che ciò che vediamo è un formato CSV con i seguenti campi:

  • Identificatore dell'utente.
  • Data del report.
  • Se le hanno abilitato le quote (-3 sarebbe illimitato, -2 non fissato).
  • Spazio consumato nella tua cartella.
  • Numero di file nel tuo home.
  • Numero di elementi condivisi.
  • Numero di file creati.
  • Numero di file visualizzati o scaricati.

 

Nel caso che ci riguarda, se sapete da dove vado a tirare… La mia intenzione è creare uno script che esporti queste informazioni su un server MySQL, salvando in una tabella tutti questi dati e così poi con Grafana lavorarli in modo più semplice.

Nel mio caso creo questo script che farà il lavoro per me, Lo chiamo “/root/nextcloud_uso_a_mysql.sh” con il seguente contenuto:

[Codice sorgente]cd /var/www/nextcloud/
sudo -u www-data ./occ usage-report:genera > /tmp/nextcloud_uso1.csv
aw '{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[/Codice sorgente]

 

Como vemos malamente consigo exportar a un CSV los datos, le elimino todas las dobles comillas que molestan, y sostituo los identificadores que me escupe con los nombres correctos de mis usuarios del AD. Al final subo el fichero csv al servidor MySQL con scp y lo importo, cogerá el nombre de tabla del nombre del fichero que importamos. Guardamos el script y lo hacemos ejecutable 🙂

Y directamente podremos programarlo en cron, Nel mio caso, con que se ejecute una vez al día me vale y me sobra, así que en este ejemplo lo programo para las 00:01 de forma diraría. Cada día importará en la tabla de MySQL nuevos datos!

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

 

La tabla que estoy usando en MySQL se llama 'nextcloud_uso’ y esta compuesta de usuario, fetxa, quota, espacio, file, compartidos, creados, movido y fecha, como veréis son datos más que jugosos para luego trattarlos con Grafana… os dejo el script por si queréis crear la tabla con la stessa struttura que yo:

[Codice sorgente]CREATE TABLE 'nextcloud_uso' (
'usuario' CHAR(40) NULL DEFAULT NULL,
'fetxa' CHAR(10) NULL DEFAULT NULL,
'quota' FLOAT NULL DEFAULT NULL,
espacio' FLOAT NULL DEFAULT NULL,
ficheros' FLOAT NULL DEFAULT NULL,
compartidos' FLOAT NULL DEFAULT NULL,
creados' FLOAT NULL DEFAULT NULL,
movido' FLOAT NULL DEFAULT NULL,
'date' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE='latin1_swedish_ci’
ENGINE=InnoDB
ROW_FORMAT=COMPATTO
;[/Codice sorgente]

 

y ahora no queda más que visualizar los datos! Os paso este par de ejemplos, donde en el primero, con un quesito vedremo i dati che stanno usando attualmente i nostri dati, in modo grafico e con un colpo d'occhio rapido sapremo chi è il gañan che si prende tutto lo spazio 🙂 E a destra vi lascio un grafico di come potrebbe crescere l'uso dei dati dei nostri utenti. Ma attenzione! Che nella tabella abbiamo più dati curiosi! Come sapere chi condivide di più, chi lavora di più, and so on, and so on…

 

Vi lascio un indizio delle query che ho usato in Grafana in modo che vi venga uguale, O wow, a voi meglio! In un dashboard, creiamo:

  • Quesito o Pie Chart: Sarebbe questione di aggiungere le serie che ci interessano contro la nostra fonte dati di MySQL, esempio di una di esse:

[Codice sorgente]select fecha as time_sec, usuario as metric, spazio come valore da nextcloud_uso dove utente = ‘Hector Herrero’ ordina per data desc limit 1[/Codice sorgente]

  • Grafico o Graph: Lo stesso, andare aggiungendo le serie che vogliamo che ci vengano disegnate, esempio:

[Codice sorgente]SELECT spazio come valore, "Hector Herrero" come metrico, UNIX_TIMESTAMP(dattero) come time_sec DA nextcloud_uso DOVE $__timeFilter(dattero) e utente = ‘Hector Herrero’ ordina per data desc[/Codice sorgente]

 

Se sei un po' perso con Grafana e hai bisogno di sapere come installarlo, Controlla Questo post che può esserti di aiuto, poi al massimo dovrai fare un connettore o Data Source verso il tuo server MySQL! Bene, spero vi sia piaciuto! Chi non ha il proprio ambiente sotto controllo è perché non vuole!!! Ecco, ve lo lascio! Bello, Sfruttatore…

 

Post consigliati

Autore

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Non esitate a contattarmi, Cercherò di aiutarti ogni volta che potrò, Condividere è vivere ;) . Goditi i documenti!!!