Anteriormente escribí una entrada donde mencionaba que Ubiquiti había eliminado sutilmente la opción de realizar un test de velocidad periódico contra sus servidores al poner como intervalo mínimo 12 horas, opción que claramente no es práctica para analizar el rendimiento de tu ISP.
Luego en otra entrada comenté el hecho que algunos usuarios lograron ejecutar el script de test de velocidad a través de una tarea cron con la cual podíamos definir el intervalo que deseamos en el tiempo.
Ahora, buscando una solución alterna a la UniFi, he terminado usando la aplicación de línea de comandos de Speed Test que recién fue lanzada en el último trimestre de 2019. Si, esa Ookla, donde todos hacemos test de velocidad de vez en cuando. Tienen una aplicación de línea de comandos oficial que nos sirve perfectamente para esta tarea y nos permite exportar los datos al menos en modo csv o json. Existen varios scripts en diferentes lenguajes que también hacen lo mismo, pero sus resultados nos son tan fiables como la aplicación oficial.
Como planeo utilizar este script en mis laptops, para instalarlo, la guía oficial esta aquí y está disponible para varias arquitecturas. Después de añadir el repositorio, solo es cuestión de instalar.
1 | $ sudo apt install speedtest |
La primera vez que ejecutas el comando speedtest
aparece un documento tipo EULA el cual debes aceptar para continuar. Después de vender nuestra alma al diablo, entonces podemos ejecutarlo
1 2 3 4 5 6 7 8 9 | $ speedtest Speedtest by Ookla Server: OVNICOM - Panama City (id = 16914) ISP: Cable Onda Latency: 9.59 ms (5.18 ms jitter) Download: 205.98 Mbps (data used: 177.1 MB) Upload: 9.86 Mbps (data used: 4.8 MB) Packet Loss: 0.0% Result URL: https://www.speedtest.net/result/c/30fe01e3-da9d-41e6-8af1-fa4376f8846b |
Este fue el resultado, tengo contratado un plan 200 Mbps de bajada y 10 Mbps de subida, así que el resultado es el esperado a pesar de estar conectado a la red a través del WiFi. Evidentemente, para lograr este máximo estaba conectado usando la banda de 5 GHz de la red y bastante cerca de uno de los access point.
Ahora, podemos hacer cosas interesantes con esta aplicación. La idea general es tomar estos datos y graficarlos de manera tal que podamos tener un pantallazo de cómo se comporta nuestra conexión en el tiempo y llevar un registro mucho más fiable que el realizado con UniFi contra sus servidores, pues Ookla tiene una red dedicada para este fin y con servidores mucho más próximos que los de Ubiquiti en Atlanta o en Miami…
Lo ideal sería que el mismo router realizará el test, pero, he terminado usando mi servidor bastión para realizarlo. Para esta tarea tenemos entonces a grafana, telegraf, influxdb, docker y por supuesto la aplicación oficial de speedtest. No hay que reinventar la rueda, pues ya alguien creo un proyecto para docker-compose con todo lo que necesitamos. Así que clonamos ese repositorio.
1 2 | $ git clone git@github.com:raaaimund/internet-speed-monitor.git $ cd internet-speed-monitor |
Vamos al directorio del proyecto, dentro veremos una serie de archivos y directorios. Dentro del directorio speedtest
veremos un Dockerfile, aquí editaremos la frecuencia que se realizará el test. De manera predeterminada se realizará cada 5 minutos.
Lo siguiente sería seleccionar el código del servidor contra el cual haremos el test de velocidad. Este número ID podemos encontrarlo cuando realizamos un test simple con la aplicación. O bien, de la siguiente tabla, podemos tomar el que nos convenga.
Nombre | URI host | ID |
---|---|---|
Gold Data Panamá | 15020 | |
Telefónica Móviles Panamá | 3999 | |
Cable Onda S.A. | 3853 | |
Liberty Technologies | 11924 | |
Interfast Panamá | 12632 | |
Claro Panamá | 20322 | |
OVNICOM | 16914 | |
Ufinet | 31830 | |
DBS Network | 21586 | |
Trans Ocean Network | 28116 | |
Digicel Panamá | 13892 | |
Sistemas Inalámbricos S.A. | 20041 |
El contenido original es este:
1 2 3 4 5 6 7 | FROM python:3-alpine WORKDIR /usr/speedtest RUN pip install --no-cache-dir speedtest-cli && \ speedtest-cli --csv-header > speedtest-results.csv && \ # server 3744 - Nessus GmbH (10G Uplink) (Vienna, Austria) echo "*/5 * * * * speedtest-cli --server 3744 --secure --csv >> /usr/speedtest/speedtest-results.csv" > /etc/crontabs/root CMD ["crond", "-f", "-d", "8"] |
Ahora con mis ediciones ajuste el tiempo en la tarea cron a ejecutarse cada 15 minutos y seleccione el servidor de Speedtest de Cable Onda, 3853.
1 2 3 4 5 6 7 | FROM python:3-alpine WORKDIR /usr/speedtest RUN pip install --no-cache-dir speedtest-cli && \ speedtest-cli --csv-header > speedtest-results.csv && \ # server 3744 - Nessus GmbH (10G Uplink) (Vienna, Austria) echo "*/15 * * * * speedtest-cli --server 3853 --secure --csv >> /usr/speedtest/speedtest-results.csv" > /etc/crontabs/root CMD ["crond", "-f", "-d", "8"] |
Una vez hecho este cambio, podemos levantar los contenedores y sus volúmenes.
1 | $ docker-compose up -d |
Si se da el caso que levantamos un contenedor y luego hacemos una edición, solo hay que reconstruir
1 | $ docker-compose build |
Al terminar de levantar los contenedores tendremos corriendo varias cosas.
Al final tendremos corriendo este servicio sobre el puerto 3000 y accesible vía web, solo hace falta conectarnos a través del navegador web. La primera vez, grafana te solicitará cambiar la credencial por defecto, la cual es admin
/admin
. Una vez finalizado el cambio seleccionamos el tablero de Speedtest y veremos nuestro registro gráfico sobre el ancho de banda en el tiempo.
Y de este modo, tengo otra alternativa para medir el ancho de banda disponible que entrega mi proveedor.
@linkmoises
Aún no hay comentarios...