
CLI-Tool, das curl umschließt, um HTTP-Anfrage-Zeitaufschlüsselungen (DNS, TCP, TLS, Serververarbeitung) zu visualisieren, mit strukturierter JSON-Ausgabe und SLO-Schwellenwertprüfung für Netzwerkleistungsdiagnosen.

httpstat visualisiert die curl(1)-Statistiken auf eine schöne und klare Weise.
Es ist ein einzelnes🌟 Python-Skript, das keine Abhängigkeiten👏 hat und mit Python 3🍻 kompatibel ist.
--format json / jsonl zur maschinellen Verarbeitung mit einem stabilen v1-Schema--slo total=500,connect=100 beendet mit Code 4 bei Verstoß--save pfad.json für mehrstufige ArbeitsabläufeEs gibt drei Möglichkeiten, httpstat zu erhalten:
Das Skript direkt herunterladen: wget https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.py
Über pip: pip install httpstat
Über Homebrew (nur macOS): brew install httpstat
Für Windows-Benutzer wird die Go-Version von @davecheney empfohlen. → Download-Link
httpstat wird mit einer AgentenFähigkeit ausgeliefert, die KI-Programmierassistenten (Claude Code, Cursor, etc.) beibringt, wie man httpstat für HTTP-Leistungsdiagnosen verwendet — automatische Installation, Engpasserkennung und umsetzbare Lösungsvorschläge.
Installieren Sie die Fähigkeit in Ihrem Projekt:
npx skills add reorx/httpstat
Nach der Installation wird Ihr Agent httpstat automatisch verwenden, wenn Sie Fragen stellen wie „Warum ist diese API langsam?" oder „Debuggen Sie die Latenz dieses Endpunkts".
Einfach:
python httpstat.py httpbin.org/get
Wenn über pip oder brew installiert, können Sie httpstat als Befehl verwenden:
httpstat httpbin.org/get
Da httpstat ein Wrapper von cURL ist, können Sie alle von cURL unterstützten Optionen nach der URL übergeben (außer -w, -D, -o, -s, -S, die bereits von httpstat verwendet werden):
httpstat httpbin.org/post -X POST --data-urlencode "a=b" -v
Verwenden Sie --format (-f), um maschinenlesbare Ausgabe zu erhalten:
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
}
Verwenden Sie --format jsonl für kompaktes einzeiliges JSON (nützlich für Log-Pipelines).
Überprüfen Sie Antwortzeiten gegen Schwellenwerte. Beendet mit Code 4 bei Verstoß:
httpstat httpbin.org/get --slo total=500,connect=100,ttfb=200
Unterstützte Schlüssel: total, connect, ttfb (Zeit bis zum ersten Byte), dns, tls.
Im hübschen Modus werden Verstöße am Ende der Ausgabe in Rot ausgegeben.
Im JSON-Modus erscheinen Verstöße im Feld slo:
{
"slo": {
"pass": false,
"violations": [
{ "key": "total", "threshold_ms": 500, "actual_ms": 823 }
]
}
}
Schreiben Sie strukturierte JSON-Ausgabe in eine Datei (funktioniert mit jedem --format):
httpstat httpbin.org/get --save result.json
httpstat httpbin.org/get --format json --save result.json
httpstat hat eine Reihe von Umgebungsvariablen, um sein Verhalten zu steuern.
Hier sind einige Verwendungsbeispiele, Sie können auch httpstat --help ausführen, um die vollständige Erklärung zu sehen.
HTTPSTAT_SHOW_BODY
Setzen Sie auf true, um den Antworttext in der Ausgabe anzuzeigen. Beachten Sie, dass die Textlänge auf 1023 Byte begrenzt ist und bei Überschreitung abgeschnitten wird. Standardwert ist false.
HTTPSTAT_SHOW_IP
Standardmäßig zeigt httpstat die Remote- und lokale IP/Port-Adresse an.
Setzen Sie auf false, um diese Funktion zu deaktivieren. Standardwert ist true.
HTTPSTAT_SHOW_SPEED
Setzen Sie auf true, um Download- und Upload-Geschwindigkeit anzuzeigen. Standardwert ist 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
Der Einfachheit halber können Sie diese Umgebungen in Ihrer .zshrc oder .bashrc exportieren, Beispiel:
export HTTPSTAT_SHOW_IP=false
export HTTPSTAT_SHOW_SPEED=true
export HTTPSTAT_SAVE_BODY=false
Hier sind einige Implementierungen in verschiedenen Sprachen:
Dies ist die Go-Alternative zu httpstat, sie ist in reinem Go geschrieben und benötigt keine externen Programme. Wählen Sie sie, wenn Sie solide binäre Ausführungen mögen (eigentlich tue ich das).
Go (Bibliothek): tcnksm/go-httpstat
Neben einem CLI-Tool wird dieses Projekt als Bibliothek verwendet, um die Latenz von HTTP-Anfragen in Go-Code zu debuggen, sehr durchdacht und nützlich. Weitere Informationen finden Sie in diesem Artikel.
Bash: b4b4r07/httpstat
Das ist genau das, was ich ganz am Anfang machen wollte, aber aufgegeben habe, weil ich mir meiner Bash-Fähigkeiten nicht sicher war. Gute Arbeit!
Node: yosuke-furukawa/httpstat
b4b4r07 erwähnte dies in seinem Artikel, könnte auch als HTTP-Client verwendet werden.
Die PHP-Implementierung von @talhasch.
Einige Codeblöcke in httpstat wurden aus anderen meiner Projekte kopiert, schauen Sie mal:
reorx/python-terminal-color Eine Drop-in-Einzeldatei-Bibliothek zum Drucken von Terminalfarben.
reorx/getenv Umgebungsvariablendefinition mit Typ.
Standardmäßig speichert httpstat den Text in einer temporären Datei,
setzen Sie auf false, um diese Funktion zu deaktivieren. Standardwert ist true.
HTTPSTAT_CURL_BIN
Geben Sie den Pfad zur cURL-Binärdatei an. Standard ist curl aus dem aktuellen Shell-$PATH.
Dieses Beispiel verwendet das über brew installierte cURL, um eine HTTP2-Anfrage zu stellen:
HTTPSTAT_CURL_BIN=/usr/local/Cellar/curl/7.50.3/bin/curl httpstat https://http2.akamai.com/ --http2
HTTP/2 200
...
cURL muss mit nghttp2 kompiliert werden, um die HTTP2-Funktion zu aktivieren (#12).
HTTPSTAT_METRICS_ONLY
Wenn auf true gesetzt, gibt httpstat nur Metriken im JSON-Format aus.
Dies ist nützlich, wenn Sie die Daten parsen statt lesen möchten.
Hinweis: Dies wird aus Gründen der Rückwärtskompatibilität beibehalten. Bevorzugen Sie stattdessen
--format json.
HTTPSTAT_DEBUG
Setzen Sie auf true, um Debugging-Logs zu sehen. Standardwert ist false.
NO_COLOR
Wenn gesetzt (auf einen beliebigen Wert), deaktiviert es alle farbigen Ausgaben. Siehe no-color.org für die Konvention.
NO_COLOR=1 httpstat httpbin.org/get