Mastodon

Nous comptadors a Mastodon o com extreure valors de Redis

Des de la v.2.5.0 Mastodon té dos nous comptadors d’activitat setmanal de l’instància. En el panell d’administració és on es poden veure: interaccions i usuaris actius.

Interaccions compta totes les vegades que els usuaris locals publiquen un toot, el marquen com a favorit, l’hi fan un retoot o segueixen a algú. Cada cop que passa una d’aquestes accions el comptador s’incrementa +1.

Usuaris actius és el número d’usuaris locals que han iniciat sessió.

Ambdós comptadors s’inicialitzen el dilluns a les 00:00 hores, començant de nou des de 0.
Em sembla adient treure a la llum pública aquests comptadors, publicant-los a grafana. L’idea és actualitzar-los cada hora, creant dues gràfiques noves on mostrar la seva evolució. El primer dubte és saber on són aquestes dades. En la base de dades? Per a saber-ho miro en el codi font de Mastodon i bingo!, a mastodon/app/controllers/admin/dashboard_controller.rb hi ha dues línies que diuen el següent:

@logins_week           = Redis.current.pfcount(“activity:logins:#{current_week}”)      

@interactions_week     = Redis.current.get(“activity:interactions:#{current_week}”) || 0

O sigui que Redis té aquesta informació. Molt bé però com li demano a Redis que me la doni?

Interaccions
Cercant per internet trobo un comentari que diu que el comando ‘monitor’ de redis-cli et dona moltes pistes de què està fent Redis. Doncs executo ‘redis-cli‘ i un cop dins teclejo ‘monitor’ i el deixo una estona que vagi mostrant tot el que està fent en temps real. El paro i cerco “activity:interactions” en el buffer de la consola. Ho troba. Perfecte. 
Com demano a redis-cli que em mostri el valor de ‘activity:interactions’ d’aquesta setmana? Altre cop a cercar per internet com es demana a redis-cli un valor concret dels que estan manegant. ‘get‘, és ‘get‘. Provo ‘get activity:interactions‘ i em retorna ‘(nil)’. No és el que vull. Entre cometes? ‘get “activity:interactions”‘ i també (nil). Però espera, el codi font de Mastodon diu “activity:interactions:#{current_week}“). Provem amb ‘get “activity:interactions:43“‘ on ’43’ és la setmana actual.

127.0.0.1:6379> get “activity:interactions:43” -> “3370”

Sí! em retorna “3370”. Comparo amb el que diu el panell d’administració de mastodont.cat i em diu “3370”. Ja ho tinc!

Usuaris actius
Ara la segona part, necessito el valor d’usuaris actius que em vist abans, que també té Redis.
Repeteixo el procés executant dins de redis-cli el ja famós comando ‘get’, aquest cop l’hi poso les cometes i la setmana a la primera : ‘get “activity:logins:43”. 
(nil).

(nil)? que ho he posat bé a la primera! què passa ara? Hmmm, el codi de Mastodon diu ‘Redis.current.pfcount(“activity:logins:#{current_week}”) ‘. Abans del parèntesi hi diu ‘pfcount’ i ara veig que en la línia on agafa les interaccions abans del parèntesi hi ha un ‘get’. Dos i dos són quatre.

127.0.0.1:6379>pfcount “activity:logins:43”-> (integer) 266

Altre vegada comparo amb el que diu el panell d’administració i confirmo que és el mateix valor.
Ja sabem com obtenir els valors interaccions i usuaris actius de l’activitat de la setmana actual. 
En una proper article veurem com obtenir el valor  d’aquest dos comptadors des de l’script en Python que proporciona les dades a Grafana.

Avatar photo

De vegades escric tutorials

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *