
CLI उपकरण जो curl को रैप करके HTTP अनुरोध समय विभाजन (DNS, TCP, TLS, सर्वर प्रोसेसिंग) को विज़ुअलाइज़ करता है, संरचित JSON आउटपुट और नेटवर्क प्रदर्शन निदान के लिए SLO थ्रेशोल्ड जाँच के साथ।

httpstat curl(1) के आँकड़ों को सुंदरता और स्पष्टता के साथ प्रस्तुत करता है।
यह एक एकल फ़ाइल🌟 Python स्क्रिप्ट है जिसकी कोई निर्भरता नहीं👏 है और यह Python 3🍻 के साथ संगत है।
--format json / jsonl स्थिर v1 स्कीमा के साथ--slo total=500,connect=100 उल्लंघन पर कोड 4 के साथ बाहर निकलता है--save path.jsonhttpstat प्राप्त करने के तीन तरीके हैं:
wget https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.pypip install httpstatbrew install httpstatविंडोज उपयोगकर्ताओं के लिए, @davecheney का Go संस्करण सुझाया गया है। → डाउनलोड लिंक
httpstat एक एजेंट skill के साथ आता है जो AI कोडिंग सहायकों (Claude Code, Cursor, आदि) को HTTP प्रदर्शन निदान के लिए httpstat का उपयोग करना सिखाता है — स्वचालित स्थापना, अड़चन की पहचान और कार्यान्वयन योग्य सुधार सुझाव।
अपने प्रोजेक्ट में skill स्थापित करें:
npx skills add reorx/httpstat
एक बार स्थापित होने के बाद, जब आप "यह API धीमा क्यों है?" या "इस एंडपॉइंट की विलंबता को डीबग करें" जैसे प्रश्न पूछते हैं, तो आपका एजेंट स्वचालित रूप से httpstat का उपयोग करेगा।
बस:
python httpstat.py httpbin.org/get
यदि pip या brew के माध्यम से स्थापित किया गया है, तो आप httpstat को एक कमांड के रूप में उपयोग कर सकते हैं:
httpstat httpbin.org/get
क्योंकि httpstat cURL का एक रैपर है, आप url के बाद कोई भी cURL समर्थित विकल्प पास कर सकते हैं (-w, -D, -o, -s, -S को छोड़कर जो पहले से httpstat द्वारा उपयोग किए जाते हैं):
httpstat httpbin.org/post -X POST --data-urlencode "a=b" -v
मशीन-पठनीय आउटपुट प्राप्त करने के लिए --format (-f) का उपयोग करें:
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
}
कॉम्पैक्ट एकल-पंक्ति JSON के लिए --format jsonl का उपयोग करें (लॉग पाइपलाइनों के लिए उपयोगी)।
प्रतिक्रिया समय को सीमाओं के विरुद्ध जांचें। उल्लंघन पर कोड 4 के साथ बाहर निकलता है:
httpstat httpbin.org/get --slo total=500,connect=100,ttfb=200
समर्थित कुंजियाँ: total, connect, ttfb (पहले बाइट का समय), dns, tls।
सुंदर मोड में, उल्लंघनों को आउटपुट के अंत में लाल रंग में मुद्रित किया जाता है।
JSON मोड में, उल्लंघन slo फ़ील्ड में दिखाई देते हैं:
{
"slo": {
"pass": false,
"violations": [
{ "key": "total", "threshold_ms": 500, "actual_ms": 823 }
]
}
}
संरचित JSON आउटपुट को एक फ़ाइल में लिखें (किसी भी --format के साथ काम करता है):
httpstat httpbin.org/get --save result.json
httpstat httpbin.org/get --format json --save result.json
httpstat में अपने व्यवहार को नियंत्रित करने के लिए बहुत सारे पर्यावरण चर हैं।
यहाँ कुछ उपयोग डेमो हैं, आप पूर्ण स्पष्टीकरण देखने के लिए httpstat --help भी चला सकते हैं।
HTTPSTAT_SHOW_BODY
प्रतिक्रिया बॉडी को आउटपुट में दिखाने के लिए true पर सेट करें, ध्यान दें कि बॉडी की लंबाई 1023 बाइट्स तक सीमित है, यदि अधिक हो तो छोटा कर दिया जाएगा। डिफ़ॉल्ट false है।
HTTPSTAT_SHOW_IP
डिफ़ॉल्ट रूप से httpstat रिमोट और लोकल IP/पोर्ट पता दिखाता है।
इस सुविधा को अक्षम करने के लिए false पर सेट करें। डिफ़ॉल्ट true है।
HTTPSTAT_SHOW_SPEED
डाउनलोड और अपलोड गति दिखाने के लिए true पर सेट करें। डिफ़ॉल्ट 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
सुविधा के लिए, आप अपने .zshrc या .bashrc में इन पर्यावरण चरों को निर्यात कर सकते हैं,
उदाहरण:
export HTTPSTAT_SHOW_IP=false
export HTTPSTAT_SHOW_SPEED=true
export HTTPSTAT_SAVE_BODY=false
यहाँ विभिन्न भाषाओं में कुछ कार्यान्वयन हैं:
यह httpstat का Go विकल्प है, यह शुद्ध Go में लिखा गया है और बाहरी प्रोग्राम पर निर्भर नहीं करता है। यदि आप ठोस बाइनरी निष्पादन पसंद करते हैं तो इसे चुनें (वास्तव में मैं करता हूं)।
Go (लाइब्रेरी): tcnksm/go-httpstat
एक cli उपकरण होने के अलावा, यह प्रोजेक्ट Go कोड में HTTP अनुरोधों की विलंबता को डीबग करने में मदद करने के लिए लाइब्रेरी के रूप में उपयोग किया जाता है, बहुत विचारशील और उपयोगी, इस लेख में और देखें।
Bash: b4b4r07/httpstat
यह वही है जो मैं शुरुआत में करना चाहता था, लेकिन अपने bash कौशल में आत्मविश्वास न होने के कारण छोड़ दिया, अच्छा काम!
Node: yosuke-furukawa/httpstat
b4b4r07 ने अपने लेख में इसका उल्लेख किया है, इसे HTTP क्लाइंट के रूप में भी उपयोग किया जा सकता है।
@talhasch द्वारा PHP कार्यान्वयन
httpstat में कुछ कोड ब्लॉक मेरे अन्य प्रोजेक्ट से कॉपी किए गए हैं, एक नज़र डालें:
reorx/python-terminal-color टर्मिनल रंग मुद्रण के लिए ड्रॉप-इन एकल फ़ाइल लाइब्रेरी।
reorx/getenv प्रकार के साथ पर्यावरण चर परिभाषा।
डिफ़ॉल्ट रूप से httpstat बॉडी को एक tmp फ़ाइल में संग्रहीत करता है,
इस सुविधा को अक्षम करने के लिए false पर सेट करें। डिफ़ॉल्ट true है
HTTPSTAT_CURL_BIN
उपयोग करने के लिए cURL बिन पथ इंगित करें। डिफ़ॉल्ट वर्तमान शेल $PATH से curl है।
यह उदाहरण HTTP2 अनुरोध करने के लिए brew द्वारा स्थापित cURL का उपयोग करता है:
HTTPSTAT_CURL_BIN=/usr/local/Cellar/curl/7.50.3/bin/curl httpstat https://http2.akamai.com/ --http2
HTTP/2 200
...
cURL को http2 सुविधा सक्षम करने के लिए nghttp2 के साथ संकलित किया जाना चाहिए (#12).
HTTPSTAT_METRICS_ONLY
यदि true पर सेट किया जाता है, तो httpstat केवल json प्रारूप में मीट्रिक्स आउटपुट करेगा,
यह तब उपयोगी होता है जब आप डेटा को पढ़ने के बजाय पार्स करना चाहते हैं।
नोट: यह पश्चगामी संगतता के लिए रखा गया है। इसके बजाय
--format jsonपसंद करें।
HTTPSTAT_DEBUG
डिबगिंग लॉग देखने के लिए true पर सेट करें। डिफ़ॉल्ट false है
NO_COLOR
जब सेट किया जाता है (किसी भी मान पर), सभी रंगीन आउटपुट को अक्षम करता है। परंपरा के लिए no-color.org देखें।
NO_COLOR=1 httpstat httpbin.org/get