بارها پیش آمده که میخواهید سرعت بارگزاری وب سایت خود را بررسی و مانیتور کنید. امروز قصد داریم با معرفی یک ابزار کاربردی به زبان پایتون در خدمت شما باشیم. httpstat یک اسکریپت به زبان پایتون ۳ است که بدون احتیاج به هیچ بسته ی پیش نیازی به راحتی روی سیستم شما نصب شده و در یک خروجی زیبا تحلیل وب سایت را از نظر سرعت به شما نمایش میدهد.
همچنین بخوانید:
نحوه نصب httpstat
برای نصب httpstat روی لینوکس جهت مانیتور سرعت بارگزاری وب سایت از طریق pip3 اقدام میکنیم. اگر pip3 روی سیستم شما نصب نیست کافیست ابتدا آن را نصب کنید:
1 |
root@arshatech:~# apt-get install python3-pip |
حال از طریق pip3 بسته httpstat را نصب کنید:
1 |
root@arshatech:~# pip3 install httpstat |
نکته: در صورتی که از اوبونتو ۱۸.۰۴ استفاده میکنید بدلیل اینکه نسخه پیش فرض پایتون نسخه ۳ می باشد نیازی به استفاده از دستور pip3 نیست و همان دستور pip کافیست.
بسته مورد نظر نصب شده است و حال باید از آن استفاده کرد.
نحوه استفاده از httpstat
دستور httpstat از دستورالعمل زیر پیروی میکند:
1 |
root@arshatech:~# httpstat <url> <cURL_options> |
همچنین به صورت زیر میتوانید از آن help بگیرید:
1 |
root@arshatech:~# httpstat -h |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Usage: httpstat URL [CURL_OPTIONS] httpstat -h | --help httpstat --version Arguments: URL url to request, could be with or without `http(s)://` prefix Options: CURL_OPTIONS any curl supported options, except for -w -D -o -S -s, which are already used internally. -h --help show this screen. --version show version. Environments: HTTPSTAT_SHOW_BODY Set to `true` to show resposne body in the output, note that body length is limited to 1023 bytes, will be truncated if exceeds. Default is `false`. HTTPSTAT_SHOW_IP By default httpstat shows remote and local IP/port address. Set to `false` to disable this feature. Default is `true`. HTTPSTAT_SHOW_SPEED Set to `true` to show download and upload speed. Default is `false`. HTTPSTAT_SAVE_BODY By default httpstat stores body in a tmp file, set to `false` to disable this feature. Default is `true` HTTPSTAT_CURL_BIN Indicate the curl bin path to use. Default is `curl` from current shell $PATH. HTTPSTAT_DEBUG Set to `true` to see debugging logs. Default is `false` |
در انتهای خروجی بالا مشاهده میکنید که تعدادی از متغیرهای محلی متناسب با این ابزار تعریف شده است که شما میتوانید از آن ها بنا به نیاز خود استفاده کنید. بعنوان مثال با یک ویرایشگر ابتدا فایل bashrc. را باز کنید:
1 |
root@arshatech:~# vim ~/.bashrc |
و سپس در انتهای فایل متغیرهای مورد نیاز خود را وارد کنید:
1 2 3 4 |
export HTTPSTAT_SHOW_IP=false export HTTPSTAT_SHOW_SPEED=true export HTTPSTAT_SAVE_BODY=false export HTTPSTAT_DEBUG=true |
حال جهت فعال نمودن آن ها دستور زیر را وارد کنید:
1 |
root@arshatech:~# . ~/.bashrc |
یا
1 |
root@arshatech:~# source ~/.bashrc |
سپس دستور خود را اجرا کنید.
1 |
root@arshatech:~# httpstat arshatech.com |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Connected to 1.2.3.4:80 from 192.168.1.2:37753 HTTP/1.1 301 Moved Permanently X-Powered-By: PHP/5.6.36 Content-Type: text/html; charset=UTF-8 Location: https://arshatech.com/ X-LiteSpeed-Cache-Control: public,max-age=1800 X-LiteSpeed-Tag: 02a1_URL.6666cd76f96956469e7be39d750cc7d9,02a1_F,02a1_Po.4015,02a1_PGS,02a1_ Content-Length: 0 Date: Sat, 21 Jul 2018 14:22:13 GMT Accept-Ranges: bytes Connection: Keep-Alive Body stored in: /tmp/tmpo7gerx2p DNS Lookup TCP Connection Server Processing Content Transfer [ 61ms | 172ms | 349ms | 1ms ] | | | | namelookup:61ms | | | connect:233ms | | starttransfer:582ms | total:583ms |
همچنین در مثال زیر از سوئیچ هایی استفاده شده است که در ابتدا به شرح آن ها میپردازیم:
- X-: این سوئیچ بیانگر نوع درخواستیست که برای مقصد ارسال میشود.
- data-urlencode--: این سوئیچ وضعیت url encode را فعال کرده و دیتای دلخواهی را به سمت مقصد ارسال میکند.
- v-: این سوئیچ وضعیت verbose را فعال میکند.
1 |
root@arshatech:~# httpstat arshatech.com/post -X POST --data-urlencode "arshatech=nice" -v |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
* Hostname was NOT found in DNS cache * Trying 1.2.3.4... * Connected to arshatech.com (1.2.3.4) port 80 (#0) > POST /post HTTP/1.1 > User-Agent: curl/7.35.0 > Host: arshatech.com > Accept: */* > Content-Length: 14 > Content-Type: application/x-www-form-urlencoded > } [data not shown] * upload completely sent off: 14 out of 14 bytes < HTTP/1.1 302 Found < X-Powered-By: PHP/5.6.36 < Content-Type: text/html; charset=UTF-8 < Cache-Control: no-cache, no-store, must-revalidate, max-age=0 < Expires: 0 < Location: https://arshatech.com/page-not-found/ < Link: <https://arshatech.com/wp-json/>; rel="https://api.w.org/" < X-LiteSpeed-Cache-Control: no-cache < Transfer-Encoding: chunked < Date: Sat, 21 Jul 2018 14:29:04 GMT < Accept-Ranges: bytes < Connection: Keep-Alive < { [data not shown] * Connection #0 to host arshatech.com left intact Connected to 1.2.3.4:80 from 192.168.1.2:37788 HTTP/1.1 302 Found X-Powered-By: PHP/5.6.36 Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache, no-store, must-revalidate, max-age=0 Expires: 0 Location: https://arshatech.com/page-not-found/ Link: <https://arshatech.com/wp-json/>; rel="https://api.w.org/" X-LiteSpeed-Cache-Control: no-cache Transfer-Encoding: chunked Date: Sat, 21 Jul 2018 14:29:04 GMT Accept-Ranges: bytes Connection: Keep-Alive Body stored in: /tmp/tmp4y8uqts8 DNS Lookup TCP Connection Server Processing Content Transfer [ 61ms | 172ms | 516ms | 689ms ] | | | | namelookup:61ms | | | connect:233ms | | starttransfer:750ms | total:1439ms |