mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-08 03:00:27 +08:00
服务相关流量统计增加Header
This commit is contained in:
@@ -321,14 +321,14 @@ func (this *HTTPRequest) doEnd() {
|
||||
|
||||
if this.isCached {
|
||||
countCached = 1
|
||||
cachedBytes = this.writer.SentBodyBytes()
|
||||
cachedBytes = this.writer.SentBodyBytes() + this.writer.SentHeaderBytes()
|
||||
}
|
||||
if this.isAttack {
|
||||
countAttacks = 1
|
||||
attackBytes = this.CalculateSize()
|
||||
}
|
||||
|
||||
stats.SharedTrafficStatManager.Add(this.ReqServer.Id, this.ReqHost, this.writer.SentBodyBytes(), cachedBytes, 1, countCached, countAttacks, attackBytes, this.ReqServer.ShouldCheckTrafficLimit(), this.ReqServer.PlanId())
|
||||
stats.SharedTrafficStatManager.Add(this.ReqServer.Id, this.ReqHost, this.writer.SentBodyBytes()+this.writer.SentHeaderBytes(), cachedBytes, 1, countCached, countAttacks, attackBytes, this.ReqServer.ShouldCheckTrafficLimit(), this.ReqServer.PlanId())
|
||||
}
|
||||
|
||||
// 指标
|
||||
@@ -1292,7 +1292,7 @@ func (this *HTTPRequest) CalculateSize() (size int64) {
|
||||
size += int64(len(this.RawReq.Proto)) + 1
|
||||
for k, v := range this.RawReq.Header {
|
||||
for _, v1 := range v {
|
||||
size += int64(len(k) + 2 /** : **/ + len(v1))
|
||||
size += int64(len(k) + 2 /** : **/ + len(v1) + 1)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -304,6 +304,7 @@ func (this *HTTPRequest) doCacheRead(useStale bool) (shouldStop bool) {
|
||||
|
||||
// 读取Header
|
||||
var headerBuf = []byte{}
|
||||
this.writer.SetSentHeaderBytes(reader.HeaderSize())
|
||||
err = reader.ReadHeader(buf, func(n int) (goNext bool, err error) {
|
||||
headerBuf = append(headerBuf, buf[:n]...)
|
||||
for {
|
||||
|
||||
@@ -60,6 +60,7 @@ type HTTPWriter struct {
|
||||
|
||||
statusCode int
|
||||
sentBodyBytes int64
|
||||
sentHeaderBytes int64
|
||||
|
||||
isOk bool // 是否完全成功
|
||||
isFinished bool // 是否已完成
|
||||
@@ -692,6 +693,23 @@ func (this *HTTPWriter) SentBodyBytes() int64 {
|
||||
return this.sentBodyBytes
|
||||
}
|
||||
|
||||
// SentHeaderBytes 计算发送的Header字节数
|
||||
func (this *HTTPWriter) SentHeaderBytes() int64 {
|
||||
if this.sentHeaderBytes > 0 {
|
||||
return this.sentHeaderBytes
|
||||
}
|
||||
for k, v := range this.Header() {
|
||||
for _, v1 := range v {
|
||||
this.sentHeaderBytes += int64(len(k) + 2 + len(v1) + 1)
|
||||
}
|
||||
}
|
||||
return this.sentHeaderBytes
|
||||
}
|
||||
|
||||
func (this *HTTPWriter) SetSentHeaderBytes(sentHeaderBytes int64) {
|
||||
this.sentHeaderBytes = sentHeaderBytes
|
||||
}
|
||||
|
||||
// WriteHeader 写入状态码
|
||||
func (this *HTTPWriter) WriteHeader(statusCode int) {
|
||||
if this.rawWriter != nil {
|
||||
|
||||
@@ -101,7 +101,7 @@ func (this *TrafficStatManager) Add(serverId int64, domain string, bytes int64,
|
||||
|
||||
this.totalRequests++
|
||||
|
||||
timestamp := utils.FloorUnixTime(300)
|
||||
var timestamp = utils.FloorUnixTime(300)
|
||||
key := strconv.FormatInt(timestamp, 10) + strconv.FormatInt(serverId, 10)
|
||||
this.locker.Lock()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user