github.com/netdata/go.d.plugin@v0.58.1/modules/squidlog/metrics.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package squidlog 4 5 import "github.com/netdata/go.d.plugin/pkg/metrics" 6 7 func newSummary() metrics.Summary { 8 return &summary{metrics.NewSummary()} 9 } 10 11 type summary struct { 12 metrics.Summary 13 } 14 15 func (s summary) WriteTo(rv map[string]int64, key string, mul, div int) { 16 s.Summary.WriteTo(rv, key, mul, div) 17 if _, ok := rv[key+"_min"]; !ok { 18 rv[key+"_min"] = 0 19 rv[key+"_max"] = 0 20 rv[key+"_avg"] = 0 21 } 22 } 23 24 const ( 25 pxHTTPCode = "http_resp_code_" 26 pxReqMethod = "req_method_" 27 pxCacheCode = "cache_result_code_" 28 pxTransportTag = "cache_transport_tag_" 29 pxHandlingTag = "cache_handling_tag_" 30 pxObjectTag = "cache_object_tag_" 31 pxSourceTag = "cache_load_source_tag_" 32 pxErrorTag = "cache_error_tag_" 33 pxHierCode = "hier_code_" 34 pxMimeType = "mime_type_" 35 pxSrvAddr = "server_address_" 36 ) 37 38 type metricsData struct { 39 Requests metrics.Counter `stm:"requests"` 40 Unmatched metrics.Counter `stm:"unmatched"` 41 42 HTTPRespCode metrics.CounterVec `stm:"http_resp_code"` 43 HTTPResp0xx metrics.Counter `stm:"http_resp_0xx"` 44 HTTPResp1xx metrics.Counter `stm:"http_resp_1xx"` 45 HTTPResp2xx metrics.Counter `stm:"http_resp_2xx"` 46 HTTPResp3xx metrics.Counter `stm:"http_resp_3xx"` 47 HTTPResp4xx metrics.Counter `stm:"http_resp_4xx"` 48 HTTPResp5xx metrics.Counter `stm:"http_resp_5xx"` 49 HTTPResp6xx metrics.Counter `stm:"http_resp_6xx"` 50 51 ReqSuccess metrics.Counter `stm:"req_type_success"` 52 ReqRedirect metrics.Counter `stm:"req_type_redirect"` 53 ReqBad metrics.Counter `stm:"req_type_bad"` 54 ReqError metrics.Counter `stm:"req_type_error"` 55 56 BytesSent metrics.Counter `stm:"bytes_sent"` 57 RespTime metrics.Summary `stm:"resp_time,1000,1"` 58 UniqueClients metrics.UniqueCounter `stm:"uniq_clients"` 59 60 ReqMethod metrics.CounterVec `stm:"req_method"` 61 CacheCode metrics.CounterVec `stm:"cache_result_code"` 62 CacheCodeTransportTag metrics.CounterVec `stm:"cache_transport_tag"` 63 CacheCodeHandlingTag metrics.CounterVec `stm:"cache_handling_tag"` 64 CacheCodeObjectTag metrics.CounterVec `stm:"cache_object_tag"` 65 CacheCodeLoadSourceTag metrics.CounterVec `stm:"cache_load_source_tag"` 66 CacheCodeErrorTag metrics.CounterVec `stm:"cache_error_tag"` 67 HierCode metrics.CounterVec `stm:"hier_code"` 68 MimeType metrics.CounterVec `stm:"mime_type"` 69 Server metrics.CounterVec `stm:"server_address"` 70 } 71 72 func (m *metricsData) reset() { 73 m.RespTime.Reset() 74 m.UniqueClients.Reset() 75 } 76 77 func newMetricsData() *metricsData { 78 return &metricsData{ 79 RespTime: newSummary(), 80 UniqueClients: metrics.NewUniqueCounter(true), 81 HTTPRespCode: metrics.NewCounterVec(), 82 ReqMethod: metrics.NewCounterVec(), 83 CacheCode: metrics.NewCounterVec(), 84 CacheCodeTransportTag: metrics.NewCounterVec(), 85 CacheCodeHandlingTag: metrics.NewCounterVec(), 86 CacheCodeObjectTag: metrics.NewCounterVec(), 87 CacheCodeLoadSourceTag: metrics.NewCounterVec(), 88 CacheCodeErrorTag: metrics.NewCounterVec(), 89 HierCode: metrics.NewCounterVec(), 90 Server: metrics.NewCounterVec(), 91 MimeType: metrics.NewCounterVec(), 92 } 93 }