-
-
Notifications
You must be signed in to change notification settings - Fork 581
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add metrics for PeersUpdateManager (#1310)
With this change we should be able to collect and expose the following histograms: * `management.updatechannel.create.duration.ms` with `closed` boolean label * `management.updatechannel.create.duration.micro` with `closed` boolean label * `management.updatechannel.close.one.duration.ms` * `management.updatechannel.close.one.duration.micro` * `management.updatechannel.close.multiple.duration.ms` * `management.updatechannel.close.multiple.duration.micro` * `management.updatechannel.close.multiple.channels` * `management.updatechannel.send.duration.ms` with `found` and `dropped` boolean labels * `management.updatechannel.send.duration.micro` with `found` and `dropped` boolean labels * `management.updatechannel.get.all.duration.ms` * `management.updatechannel.get.all.duration.micro` * `management.updatechannel.get.all.peers`
- Loading branch information
Showing
16 changed files
with
266 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
package telemetry | ||
|
||
import ( | ||
"context" | ||
"time" | ||
|
||
"go.opentelemetry.io/otel/attribute" | ||
"go.opentelemetry.io/otel/metric" | ||
"go.opentelemetry.io/otel/metric/instrument/syncint64" | ||
) | ||
|
||
// UpdateChannelMetrics represents all metrics related to the UpdateChannel | ||
type UpdateChannelMetrics struct { | ||
createChannelDurationMs syncint64.Histogram | ||
createChannelDurationMicro syncint64.Histogram | ||
closeChannelDurationMs syncint64.Histogram | ||
closeChannelDurationMicro syncint64.Histogram | ||
closeChannelsDurationMs syncint64.Histogram | ||
closeChannelsDurationMicro syncint64.Histogram | ||
closeChannels syncint64.Histogram | ||
sendUpdateDurationMs syncint64.Histogram | ||
sendUpdateDurationMicro syncint64.Histogram | ||
getAllConnectedPeersDurationMs syncint64.Histogram | ||
getAllConnectedPeersDurationMicro syncint64.Histogram | ||
getAllConnectedPeers syncint64.Histogram | ||
ctx context.Context | ||
} | ||
|
||
// NewUpdateChannelMetrics creates an instance of UpdateChannel | ||
func NewUpdateChannelMetrics(ctx context.Context, meter metric.Meter) (*UpdateChannelMetrics, error) { | ||
createChannelDurationMs, err := meter.SyncInt64().Histogram("management.updatechannel.create.duration.ms") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
createChannelDurationMicro, err := meter.SyncInt64().Histogram("management.updatechannel.create.duration.micro") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
closeChannelDurationMs, err := meter.SyncInt64().Histogram("management.updatechannel.close.one.duration.ms") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
closeChannelDurationMicro, err := meter.SyncInt64().Histogram("management.updatechannel.close.one.duration.micro") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
closeChannelsDurationMs, err := meter.SyncInt64().Histogram("management.updatechannel.close.multiple.duration.ms") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
closeChannelsDurationMicro, err := meter.SyncInt64().Histogram("management.updatechannel.close.multiple.duration.micro") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
closeChannels, err := meter.SyncInt64().Histogram("management.updatechannel.close.multiple.channels") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
sendUpdateDurationMs, err := meter.SyncInt64().Histogram("management.updatechannel.send.duration.ms") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
sendUpdateDurationMicro, err := meter.SyncInt64().Histogram("management.updatechannel.send.duration.micro") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
getAllConnectedPeersDurationMs, err := meter.SyncInt64().Histogram("management.updatechannel.get.all.duration.ms") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
getAllConnectedPeersDurationMicro, err := meter.SyncInt64().Histogram("management.updatechannel.get.all.duration.micro") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
getAllConnectedPeers, err := meter.SyncInt64().Histogram("management.updatechannel.get.all.peers") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
return &UpdateChannelMetrics{ | ||
createChannelDurationMs: createChannelDurationMs, | ||
createChannelDurationMicro: createChannelDurationMicro, | ||
closeChannelDurationMs: closeChannelDurationMs, | ||
closeChannelDurationMicro: closeChannelDurationMicro, | ||
closeChannelsDurationMs: closeChannelsDurationMs, | ||
closeChannelsDurationMicro: closeChannelsDurationMicro, | ||
closeChannels: closeChannels, | ||
sendUpdateDurationMs: sendUpdateDurationMs, | ||
sendUpdateDurationMicro: sendUpdateDurationMicro, | ||
getAllConnectedPeersDurationMs: getAllConnectedPeersDurationMs, | ||
getAllConnectedPeersDurationMicro: getAllConnectedPeersDurationMicro, | ||
getAllConnectedPeers: getAllConnectedPeers, | ||
ctx: ctx, | ||
}, nil | ||
} | ||
|
||
// CountCreateChannelDuration counts the duration of the CreateChannel method, | ||
// closed indicates if existing channel was closed before creation of a new one | ||
func (metrics *UpdateChannelMetrics) CountCreateChannelDuration(duration time.Duration, closed bool) { | ||
metrics.createChannelDurationMs.Record(metrics.ctx, duration.Milliseconds(), attribute.Bool("closed", closed)) | ||
metrics.createChannelDurationMicro.Record(metrics.ctx, duration.Microseconds(), attribute.Bool("closed", closed)) | ||
} | ||
|
||
// CountCloseChannelDuration counts the duration of the CloseChannel method | ||
func (metrics *UpdateChannelMetrics) CountCloseChannelDuration(duration time.Duration) { | ||
metrics.closeChannelDurationMs.Record(metrics.ctx, duration.Milliseconds()) | ||
metrics.closeChannelDurationMicro.Record(metrics.ctx, duration.Microseconds()) | ||
} | ||
|
||
// CountCloseChannelsDuration counts the duration of the CloseChannels method and the number of channels have been closed | ||
func (metrics *UpdateChannelMetrics) CountCloseChannelsDuration(duration time.Duration, channels int) { | ||
metrics.closeChannelsDurationMs.Record(metrics.ctx, duration.Milliseconds()) | ||
metrics.closeChannelsDurationMicro.Record(metrics.ctx, duration.Microseconds()) | ||
metrics.closeChannels.Record(metrics.ctx, int64(channels)) | ||
} | ||
|
||
// CountSendUpdateDuration counts the duration of the SendUpdate method | ||
// found indicates if peer had channel, dropped indicates if the message was dropped due channel buffer overload | ||
func (metrics *UpdateChannelMetrics) CountSendUpdateDuration(duration time.Duration, found, dropped bool) { | ||
attrs := []attribute.KeyValue{attribute.Bool("found", found), attribute.Bool("dropped", dropped)} | ||
metrics.sendUpdateDurationMs.Record(metrics.ctx, duration.Milliseconds(), attrs...) | ||
metrics.sendUpdateDurationMicro.Record(metrics.ctx, duration.Microseconds(), attrs...) | ||
} | ||
|
||
// CountGetAllConnectedPeersDuration counts the duration of the GetAllConnectedPeers method and the number of peers have been returned | ||
func (metrics *UpdateChannelMetrics) CountGetAllConnectedPeersDuration(duration time.Duration, peers int) { | ||
metrics.getAllConnectedPeersDurationMs.Record(metrics.ctx, duration.Milliseconds()) | ||
metrics.getAllConnectedPeersDurationMicro.Record(metrics.ctx, duration.Microseconds()) | ||
metrics.getAllConnectedPeers.Record(metrics.ctx, int64(peers)) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.