MCPcopy
hub / github.com/txthinking/brook / TouchBrook

Method TouchBrook

plugins/prometheus/prometheus.go:50–92  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

48}
49
50func (p *Prometheus) TouchBrook() {
51 tags := []string{}
52 for k, _ := range p.Tags {
53 tags = append(tags, k)
54 }
55
56 dstc := pm.NewCounterVec(
57 pm.CounterOpts{
58 Name: "dst_counter",
59 Help: "Number of dst in total",
60 },
61 append([]string{"network", "from", "dst"}, tags...),
62 )
63 pm.MustRegister(dstc)
64 f := brook.ServerGate
65 brook.ServerGate = func(ex brook.Exchanger) (brook.Exchanger, error) {
66 from := ex.Src()
67 h, _, err := net.SplitHostPort(from)
68 if err == nil {
69 from = h
70 }
71 lb := pm.Labels{"network": ex.Network(), "from": from, "dst": ex.Dst()}
72 for k, v := range p.Tags {
73 lb[k] = v
74 }
75 dstc.With(lb).Inc()
76 return f(ex)
77 }
78 f1 := brook.ClientGate
79 brook.ClientGate = func(ex brook.Exchanger) (brook.Exchanger, error) {
80 from := ex.Src()
81 h, _, err := net.SplitHostPort(from)
82 if err == nil {
83 from = h
84 }
85 lb := pm.Labels{"network": ex.Network(), "from": from, "dst": ex.Dst()}
86 for k, v := range p.Tags {
87 lb[k] = v
88 }
89 dstc.With(lb).Inc()
90 return f1(ex)
91 }
92}

Callers

nothing calls this directly

Calls 4

SrcMethod · 0.65
NetworkMethod · 0.65
DstMethod · 0.65
fFunction · 0.50

Tested by

no test coverage detected