需求
運維組在zabbix中需要獲取快取節點中每台ats上的客戶端平均響應時間這個指標,來向使用者展示我們快取服務的qos指標,如何實現呢?
思路
需要理順traffic_top.cc的原始碼實現細節:
首先命令列執行
tstop
從下圖中看到我們需要得到的指標是resp(ms)這個引數,它是如何實現的呢?
要了解這個引數的實現方法,我們只能去看ts_top的原始碼,以ats 5.3.0版本為例,就是cmd/traffic_top下面的檔案traffic_top.cc以及stats.h,
具體的計算細節在stats.h中,平均響應時間是這兩個統計項的比值:
再除以10000000,就可以了,我從原始碼中看到的
需要讓ats開啟stats_over_http外掛程式
通過http介面獲取json檔案,解析出這兩項,相除就可以
以我上面的截圖的例子為例,該ats上客戶端平均響應時間是
1445571922275/9372/10000000 = 15.4
也就是說,該時刻的客戶端平均響應時間是15.4ms
如何獲取客戶端真實IP
經過 以後,由於在客戶端和服務之間增加了中間層,因此伺服器無法直接拿到客戶端的ip,伺服器端應用也無法直接通過 請求的位址返回給客戶端。但是在 請求的http頭資訊中,增加了x forwarded for資訊。用以跟蹤原有的客戶端ip位址和原來客戶端請求的伺服器位址。例如 使用反向 將的url反向 ...
如何獲取客戶端的真實IP
問題引出 在jsp裡,獲取客戶端的ip位址的方法是 request.getremoteaddr 這種方法在大部分情況下都是有效的。但是在通過了 apache,nagix等反向 軟體就不能獲取到客戶端的真實ip位址了。如果使用了反向 軟體,用 request.getremoteaddr 方法獲取的ip...
ASP如何獲取客戶端真實IP位址
在asp中使用 request.servervariables remote addr 來取得客戶端的ip位址,但如果客戶端是使用 伺服器來訪問,那取到的就是 伺服器的ip位址,而不是真正的客戶端ip位址。要想透過 伺服器取得客戶端的真實ip位址,就要使用 request.servervariabl...