Si necesitas diagnosticar aplicaciones Go en ejecución, gops es la herramienta oficial de Google que te permite listar y analizar procesos Go de forma ágil. Con ella puedes obtener métricas de memoria, uso de CPU, seguimiento de pilas y perfiles de rendimiento, todo desde la línea de comandos.
Funcionalidades Clave
- Listar todos los procesos Go activos en el sistema.
- Obtener información detallada de un proceso específico (PID, uso de memoria, número de hilos, etc.).
- Visualizar la jerarquía de procesos (
gops tree). - Generar perfiles de CPU y memoria mediante integración con
pprof. - Realizar seguimiento de la pila de ejecución para depurar problemas.
Compatibilidad entre Versiones de Go
El equipo de gops ha diseñado el proyecto con dos implementaciones según la versión del compilador:
goprocess/goprocess_lt1.18.go– para Go anterior a 1.18, utiliza el paquetersc.io/goversion.goprocess/goprocess_1.18.go– para Go 1.18 o superior, aprovechadebug/buildinfode la biblioteca estándar, más eficiente y fiable.
Esta arquitectura garantiza que gops funcione correctamente tanto en entornos modernos como en versiones antiguas, ofreciendo una experiencia de diagnóstico uniforme.
Instalación
Puedes instalar gops con un solo comando:
go install github.com/google/gops@latest
O fijar una versión específica:
go install github.com/google/gops@v0.3.19
Uso Práctico
Listar Procesos
Ejecuta gops para ver todos los procesos Go. Los que tienen un asterisco (*) indican que el agente de diagnóstico está habilitado.
Enspeccionar un Proceso
Usa gops <pid> para ver detalles como:
- Nombre del binario y versión de Go.
- Uso de memoria (residente, virtual).
- Número de goroutines y threads del sistema.
- Porcentaje de CPU.
Árbol de Procesos
Con gops tree obtienes una vista jerárquica, muy útil en arquitecturas de microservicios.
Recomendaciones para Optimizar su Uso
- Define la variable de entorno
GOPS_CONFIG_DIRpara personalizar la ubicación de los archivos de configuración. - Integra el agente de diagnóstico en tu aplicación (
gops agent) para habilitar todas las funcionalidades. - Mantén la herramienta actualizada para aprovcehar mejoras de rendimiento y compatibilidad.
Con gops, depurar fugas de memoria, analizar picos de CPU o simplemente monitorear procesos Go se vuelve sencillo y eficiente. Su diseño cudiadoso con respecto a la compatibilidad de versiones lo convierte en una pieza fundamental para cualquier desarrollador Go.