Skip to content

Commit 7f2287c

Browse files
authored
Add observer metrics (#1042)
Signed-off-by: Jakub Sztandera <[email protected]>
1 parent 993d8f7 commit 7f2287c

File tree

7 files changed

+96
-32
lines changed

7 files changed

+96
-32
lines changed

cmd/f3/observer.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ var observerCmd = cli.Command{
150150
observer.WithMaxBatchDelay(cctx.Duration("maxBatchDelay")),
151151
observer.WithChainExchangeMaxMessageAge(cctx.Duration("chainExchangeMaxMessageAge")),
152152
observer.WithMaxRetentionSize(cctx.Uint64("retentionSize") * 1024 * 1024),
153+
observer.WithQueryServerMetricsExport(true),
153154
}
154155

155156
var identity crypto.PrivKey

go.mod

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
github.com/ipfs/go-datastore v0.6.0
1313
github.com/ipfs/go-ds-leveldb v0.5.0
1414
github.com/ipfs/go-log/v2 v2.5.1
15-
github.com/klauspost/compress v1.17.11
15+
github.com/klauspost/compress v1.18.0
1616
github.com/libp2p/go-libp2p v0.37.2
1717
github.com/libp2p/go-libp2p-kad-dht v0.25.2
1818
github.com/libp2p/go-libp2p-pubsub v0.11.0
@@ -22,12 +22,15 @@ require (
2222
github.com/multiformats/go-multiaddr-dns v0.4.1
2323
github.com/multiformats/go-multibase v0.2.0
2424
github.com/multiformats/go-multihash v0.2.3
25+
github.com/prometheus/client_golang v1.22.0
2526
github.com/stretchr/testify v1.10.0
2627
github.com/urfave/cli/v2 v2.25.5
2728
github.com/whyrusleeping/cbor-gen v0.1.1
2829
go.dedis.ch/kyber/v4 v4.0.0-pre2.0.20240924132404-4de33740016e
29-
go.opentelemetry.io/otel v1.28.0
30-
go.opentelemetry.io/otel/metric v1.28.0
30+
go.opentelemetry.io/otel v1.34.0
31+
go.opentelemetry.io/otel/exporters/prometheus v0.50.0
32+
go.opentelemetry.io/otel/metric v1.34.0
33+
go.opentelemetry.io/otel/sdk/metric v1.28.0
3134
go.uber.org/multierr v1.11.0
3235
go.uber.org/zap v1.27.0
3336
golang.org/x/crypto v0.36.0
@@ -130,9 +133,8 @@ require (
130133
github.com/pkg/errors v0.9.1 // indirect
131134
github.com/pmezard/go-difflib v1.0.0 // indirect
132135
github.com/polydawn/refmt v0.89.0 // indirect
133-
github.com/prometheus/client_golang v1.20.5 // indirect
134136
github.com/prometheus/client_model v0.6.1 // indirect
135-
github.com/prometheus/common v0.60.0 // indirect
137+
github.com/prometheus/common v0.62.0 // indirect
136138
github.com/prometheus/procfs v0.15.1 // indirect
137139
github.com/quic-go/qpack v0.5.1 // indirect
138140
github.com/quic-go/quic-go v0.48.2 // indirect
@@ -147,7 +149,9 @@ require (
147149
github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect
148150
github.com/zeebo/xxh3 v1.0.2 // indirect
149151
go.opencensus.io v0.24.0 // indirect
150-
go.opentelemetry.io/otel/trace v1.28.0 // indirect
152+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
153+
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
154+
go.opentelemetry.io/otel/trace v1.34.0 // indirect
151155
go.uber.org/dig v1.18.0 // indirect
152156
go.uber.org/fx v1.23.0 // indirect
153157
go.uber.org/mock v0.5.0 // indirect
@@ -157,7 +161,7 @@ require (
157161
golang.org/x/text v0.23.0 // indirect
158162
golang.org/x/tools v0.26.0 // indirect
159163
gonum.org/v1/gonum v0.15.0 // indirect
160-
google.golang.org/protobuf v1.35.1 // indirect
164+
google.golang.org/protobuf v1.36.5 // indirect
161165
gopkg.in/yaml.v3 v3.0.1 // indirect
162166
lukechampine.com/blake3 v1.3.0 // indirect
163167
rsc.io/tmplfunc v0.0.3 // indirect

go.sum

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
130130
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
131131
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
132132
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
133-
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
134-
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
133+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
134+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
135135
github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
136136
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
137137
github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=
@@ -210,8 +210,8 @@ github.com/kilic/bls12-381 v0.1.0/go.mod h1:vDTTHJONJ6G+P2R74EhnyotQDTliQDnFEwhd
210210
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
211211
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
212212
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
213-
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
214-
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
213+
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
214+
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
215215
github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
216216
github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
217217
github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0=
@@ -226,6 +226,8 @@ github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
226226
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
227227
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
228228
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
229+
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
230+
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
229231
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
230232
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
231233
github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
@@ -402,15 +404,15 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
402404
github.com/polydawn/refmt v0.89.0 h1:ADJTApkvkeBZsN0tBTx8QjpD9JkmxbKp0cxfr9qszm4=
403405
github.com/polydawn/refmt v0.89.0/go.mod h1:/zvteZs/GwLtCgZ4BL6CBsk9IKIlexP43ObX9AxTqTw=
404406
github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
405-
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
406-
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
407+
github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
408+
github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
407409
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
408410
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
409411
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
410412
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
411413
github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
412-
github.com/prometheus/common v0.60.0 h1:+V9PAREWNvJMAuJ1x1BaWl9dewMW4YrHZQbx0sJNllA=
413-
github.com/prometheus/common v0.60.0/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw=
414+
github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
415+
github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
414416
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
415417
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
416418
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
@@ -423,8 +425,8 @@ github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66/go.mod h
423425
github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk=
424426
github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU=
425427
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
426-
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
427-
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
428+
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
429+
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
428430
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
429431
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
430432
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
@@ -515,12 +517,20 @@ go.dedis.ch/kyber/v4 v4.0.0-pre2.0.20240924132404-4de33740016e/go.mod h1:tg6jwKT
515517
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
516518
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
517519
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
518-
go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo=
519-
go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4=
520-
go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q=
521-
go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s=
522-
go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g=
523-
go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI=
520+
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
521+
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
522+
go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
523+
go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
524+
go.opentelemetry.io/otel/exporters/prometheus v0.50.0 h1:2Ewsda6hejmbhGFyUvWZjUThC98Cf8Zy6g0zkIimOng=
525+
go.opentelemetry.io/otel/exporters/prometheus v0.50.0/go.mod h1:pMm5PkUo5YwbLiuEf7t2xg4wbP0/eSJrMxIMxKosynY=
526+
go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ=
527+
go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE=
528+
go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A=
529+
go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
530+
go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08=
531+
go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg=
532+
go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
533+
go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
524534
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
525535
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
526536
go.uber.org/dig v1.18.0 h1:imUL1UiY0Mg4bqbFfsRQO5G4CGRBec/ZujWTvSVp3pw=
@@ -734,8 +744,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
734744
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
735745
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
736746
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
737-
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
738-
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
747+
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
748+
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
739749
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
740750
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
741751
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

observer/metrics.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package observer
2+
3+
import (
4+
"github.com/filecoin-project/go-f3/internal/measurements"
5+
"go.opentelemetry.io/otel"
6+
"go.opentelemetry.io/otel/attribute"
7+
"go.opentelemetry.io/otel/metric"
8+
)
9+
10+
var meter = otel.Meter("f3/observer")
11+
var attrErrorType = attribute.Key("error.type")
12+
13+
var metrics = struct {
14+
rotations metric.Int64Counter
15+
msgsReceived metric.Int64Counter
16+
}{
17+
rotations: measurements.Must(meter.Int64Counter(
18+
"f3_observer_rotations",
19+
metric.WithDescription("The number of rotations performed."),
20+
)),
21+
msgsReceived: measurements.Must(meter.Int64Counter(
22+
"f3_observer_msgs_received",
23+
metric.WithDescription("The number of messages received."),
24+
)),
25+
}

observer/observer.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ import (
3636
record "github.com/libp2p/go-libp2p-record"
3737
"github.com/libp2p/go-libp2p/core/peer"
3838
"github.com/marcboeker/go-duckdb"
39+
"github.com/prometheus/client_golang/prometheus/promhttp"
40+
"go.opentelemetry.io/otel"
41+
"go.opentelemetry.io/otel/exporters/prometheus"
42+
"go.opentelemetry.io/otel/metric"
43+
smetric "go.opentelemetry.io/otel/sdk/metric"
3944
"go.uber.org/multierr"
4045
"golang.org/x/exp/maps"
4146
"golang.org/x/sync/errgroup"
@@ -204,7 +209,20 @@ func (o *Observer) initialize(ctx context.Context) error {
204209
// Set up query server.
205210
o.qs.Addr = o.queryServerListenAddress
206211
o.qs.ReadTimeout = o.queryServerReadTimeout
207-
o.qs.Handler = o.serveMux()
212+
mux := http.NewServeMux()
213+
mux.HandleFunc("/query", o.queryHandler)
214+
215+
// setup metrics
216+
if o.queryServerMetricsExport {
217+
exporter, err := prometheus.New()
218+
if err != nil {
219+
return fmt.Errorf("failed to create prometheus exporter: %w", err)
220+
}
221+
provider := smetric.NewMeterProvider(smetric.WithReader(exporter))
222+
otel.SetMeterProvider(provider)
223+
mux.Handle("/debug/metrics", promhttp.Handler())
224+
}
225+
o.qs.Handler = mux
208226

209227
return nil
210228
}
@@ -245,13 +263,18 @@ func (o *Observer) observeMessages(ctx context.Context) error {
245263
return nil
246264
case om := <-o.messageObserved:
247265
if err := o.storeMessage(ctx, om); err != nil {
266+
metrics.msgsReceived.Add(ctx, 1, metric.WithAttributes(attrErrorType.String("storeMessage")))
248267
logger.Errorw("Failed to store message", "message", om, "err", err)
249268
continue
250269
}
270+
metrics.msgsReceived.Add(ctx, 1)
251271
logger.Debugw("Observed message", "message", om)
252272
case <-rotation.C:
253273
if err := o.rotateMessages(ctx); err != nil {
274+
metrics.rotations.Add(ctx, 1, metric.WithAttributes(attrErrorType.String("rotateMessages")))
254275
logger.Errorw("Failed to rotate latest messages", "err", err)
276+
} else {
277+
metrics.rotations.Add(ctx, 1)
255278
}
256279
case <-flush.C:
257280
if err := o.tryFlushMessages(); err != nil {

observer/options.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ type options struct {
3535

3636
queryServerListenAddress string
3737
queryServerReadTimeout time.Duration
38+
queryServerMetricsExport bool
3839

3940
rotatePath string
4041
rotateInterval time.Duration
@@ -251,6 +252,12 @@ func WithQueryServerReadTimeout(d time.Duration) Option {
251252
return nil
252253
}
253254
}
255+
func WithQueryServerMetricsExport(export bool) Option {
256+
return func(o *options) error {
257+
o.queryServerMetricsExport = export
258+
return nil
259+
}
260+
}
254261

255262
func WithRotatePath(path string) Option {
256263
return func(o *options) error {

observer/query.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,6 @@ type QueryRequest struct {
1313
Query string `json:"Query"`
1414
}
1515

16-
func (o *Observer) serveMux() *http.ServeMux {
17-
mux := http.NewServeMux()
18-
mux.HandleFunc("/query", o.queryHandler)
19-
return mux
20-
}
21-
2216
func (o *Observer) queryHandler(w http.ResponseWriter, r *http.Request) {
2317
const (
2418
contentTypeJson = "application/json"

0 commit comments

Comments
 (0)