
Herramienta CLI que envuelve curl para visualizar desgloses de tiempos de solicitudes HTTP (DNS, TCP, TLS, procesamiento del servidor) con salida JSON estructurada y verificación de umbrales SLO para diagnósticos de rendimiento de red.

httpstat visualiza las estadísticas de curl(1) de una manera bella y clara.
Es un script de Python de un solo archivo🌟 que no tiene dependencias👏 y es compatible con Python 3🍻.
--format json / jsonl para consumo por máquina con un esquema v1 estable--slo total=500,connect=100 sale con código 4 en caso de violación--save path.json para flujos de trabajo de varios pasosHay tres formas de obtener httpstat:
Descargar el script directamente: wget https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.py
A través de pip: pip install httpstat
A través de homebrew (solo macOS): brew install httpstat
Para usuarios de Windows, se sugiere la versión Go de @davecheney. → enlace de descarga
httpstat incluye un skill de agente que enseña a los asistentes de codificación de IA (Claude Code, Cursor, etc.) cómo usar httpstat para diagnósticos de rendimiento HTTP — instalación automática, identificación de cuellos de botella y sugerencias de corrección procesables.
Instala el skill en tu proyecto:
npx skills add reorx/httpstat
Una vez instalado, tu agente usará automáticamente httpstat cuando hagas preguntas como "¿por qué esta API es lenta?" o "depura la latencia de este endpoint".
Simplemente:
python httpstat.py httpbin.org/get
Si se instala a través de pip o brew, puedes usar httpstat como comando:
httpstat httpbin.org/get
Debido a que httpstat es un envoltorio de cURL, puedes pasar cualquier opción compatible con cURL después de la url (excepto -w, -D, -o, -s, -S que ya son usadas por httpstat):
httpstat httpbin.org/post -X POST --data-urlencode "a=b" -v
Usa --format (-f) para obtener salida legible por máquina:
httpstat httpbin.org/get --format json
{
"schema_version": 1,
"url": "httpbin.org/get",
"ok": true,
"exit_code": 0,
"response": {
"status_line": "HTTP/2 200",
"status_code": 200,
"remote_ip": "...",
"remote_port": "443",
"headers": {"Content-Type": "application/json", "Server": "nginx", "...": "..."}
},
"timings_ms": {
"dns": 5, "connect": 10, "tls": 15,
"server": 50, "transfer": 20, "total": 100,
"namelookup": 5, "initial_connect": 15,
"pretransfer": 30, "starttransfer": 80
},
"speed": { "download_kbs": 1234.5, "upload_kbs": 0.0 },
"slo": null
}
Usa --format jsonl para JSON compacto de una sola línea (útil para tuberías de logs).
Verifica los tiempos de respuesta contra umbrales. Sale con código 4 en caso de violación:
httpstat httpbin.org/get --slo total=500,connect=100,ttfb=200
Claves soportadas: total, connect, ttfb (tiempo hasta el primer byte), dns, tls.
En modo pretty, las violaciones se imprimen en rojo al final de la salida.
En modo JSON, las violaciones aparecen en el campo slo:
{
"slo": {
"pass": false,
"violations": [
{ "key": "total", "threshold_ms": 500, "actual_ms": 823 }
]
}
}
Escribe la salida JSON estructurada a un archivo (funciona con cualquier --format):
httpstat httpbin.org/get --save result.json
httpstat httpbin.org/get --format json --save result.json
httpstat tiene un montón de variables de entorno para controlar su comportamiento.
Aquí hay algunos ejemplos de uso, también puedes ejecutar httpstat --help para ver una explicación completa.
HTTPSTAT_SHOW_BODY
Establécelo en true para mostrar el cuerpo de la respuesta en la salida; ten en cuenta que la longitud del cuerpo está limitada a 1023 bytes, se truncará si se excede. El valor predeterminado es false.
HTTPSTAT_SHOW_IP
Por defecto httpstat muestra la dirección IP/puerto remota y local. Establécelo en false para deshabilitar esta función. El valor predeterminado es true.
HTTPSTAT_SHOW_SPEED
Establécelo en true para mostrar la velocidad de descarga y subida. El valor predeterminado es false.
HTTPSTAT_SHOW_SPEED=true httpstat http://cachefly.cachefly.net/10mb.test
...
speed_download: 3193.3 KiB/s, speed_upload: 0.0 KiB/s
HTTPSTAT_SAVE_BODY
Por defecto httpstat almacena el cuerpo en un archivo temporal; establécelo en false para deshabilitar esta función. El valor predeterminado es true
HTTPSTAT_CURL_BIN
Indica la ruta del binario de cURL a usar. El valor predeterminado es curl del $PATH del shell actual.
Este ejemplo usa cURL instalado por brew para hacer una solicitud HTTP2:
HTTPSTAT_CURL_BIN=/usr/local/Cellar/curl/7.50.3/bin/curl httpstat https://http2.akamai.com/ --http2
HTTP/2 200
...
cURL debe estar compilado con nghttp2 para habilitar la característica http2 (#12).
HTTPSTAT_METRICS_ONLY
Si se establece en true, httpstat solo mostrará métricas en formato json,
esto es útil si quieres analizar los datos en lugar de leerlos.
Nota: Esto se mantiene por compatibilidad hacia atrás. Prefiere
--format jsonen su lugar.
HTTPSTAT_DEBUG
Establécelo en true para ver registros de depuración. El valor predeterminado es false
NO_COLOR
Cuando se establece (a cualquier valor), deshabilita toda la salida de color. Consulta no-color.org para la convención.
NO_COLOR=1 httpstat httpbin.org/get
Por conveniencia, puedes exportar estas variables de entorno en tu .zshrc o .bashrc,
ejemplo:
export HTTPSTAT_SHOW_IP=false
export HTTPSTAT_SHOW_SPEED=true
export HTTPSTAT_SAVE_BODY=false
Aquí hay algunas implementaciones en varios idiomas:
Esta es la alternativa Go de httpstat, está escrita en Go puro y no depende de programas externos. Elígela si te gusta la ejecución binaria sólida (en realidad a mí sí).
Go (biblioteca): tcnksm/go-httpstat
Además de ser una herramienta CLI, este proyecto se utiliza como biblioteca para ayudar a depurar la latencia de las solicitudes HTTP en código Go, muy considerado y útil, ve más en este artículo
Bash: b4b4r07/httpstat
Esto es exactamente lo que quería hacer al principio, pero lo dejé por no tener confianza en mi habilidad con bash, ¡buen trabajo!
Node: yosuke-furukawa/httpstat
b4b4r07 mencionó esto en su artículo, también podría usarse como cliente HTTP.
La implementación en PHP por @talhasch
Algunos bloques de código en httpstat están copiados de otros proyectos míos, échales un vistazo:
reorx/python-terminal-color Biblioteca de un solo archivo sin configuración para imprimir color en terminal.
reorx/getenv Definición de variable de entorno con tipo.