MM-59826: Add more invalidation event types (#27719)
This came up as part of the Redis work. I noticed that a lot of new invalidation events were missing. This is important to understand where invalidations are coming from. https://mattermost.atlassian.net/browse/MM-59826 ```release-note NONE ``` Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
5547504c1d
Коммит
c72e14f73d
@@ -76,21 +76,8 @@ type MetricsInterfaceImpl struct {
|
||||
|
||||
ClusterHealthGauge prometheus.GaugeFunc
|
||||
|
||||
ClusterEventTypeCounters *prometheus.CounterVec
|
||||
ClusterEventTypePublish prometheus.Counter
|
||||
ClusterEventTypeStatus prometheus.Counter
|
||||
ClusterEventTypeInvAll prometheus.Counter
|
||||
ClusterEventTypeInvReactions prometheus.Counter
|
||||
ClusterEventTypeInvWebhook prometheus.Counter
|
||||
ClusterEventTypeInvChannelPosts prometheus.Counter
|
||||
ClusterEventTypeInvChannelMembersNotifyProps prometheus.Counter
|
||||
ClusterEventTypeInvChannelMembers prometheus.Counter
|
||||
ClusterEventTypeInvChannelByName prometheus.Counter
|
||||
ClusterEventTypeInvChannel prometheus.Counter
|
||||
ClusterEventTypeInvUser prometheus.Counter
|
||||
ClusterEventTypeInvSessions prometheus.Counter
|
||||
ClusterEventTypeInvRoles prometheus.Counter
|
||||
ClusterEventTypeOther prometheus.Counter
|
||||
ClusterEventTypeCounters *prometheus.CounterVec
|
||||
ClusterEventMap map[model.ClusterEvent]prometheus.Counter
|
||||
|
||||
LoginCounter prometheus.Counter
|
||||
LoginFailCounter prometheus.Counter
|
||||
@@ -467,17 +454,48 @@ func New(ps *platform.PlatformService, driver, dataSource string) *MetricsInterf
|
||||
[]string{"name"},
|
||||
)
|
||||
m.Registry.MustRegister(m.ClusterEventTypeCounters)
|
||||
m.ClusterEventTypePublish = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventPublish)})
|
||||
m.ClusterEventTypeStatus = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventUpdateStatus)})
|
||||
m.ClusterEventTypeInvAll = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateAllCaches)})
|
||||
m.ClusterEventTypeInvReactions = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForReactions)})
|
||||
m.ClusterEventTypeInvChannelMembersNotifyProps = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForChannelMembersNotifyProps)})
|
||||
m.ClusterEventTypeInvChannelByName = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForChannelByName)})
|
||||
m.ClusterEventTypeInvChannel = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForChannel)})
|
||||
m.ClusterEventTypeInvUser = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForUser)})
|
||||
m.ClusterEventTypeInvSessions = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventClearSessionCacheForUser)})
|
||||
m.ClusterEventTypeInvRoles = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForRoles)})
|
||||
m.ClusterEventTypeOther = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": "other"})
|
||||
m.ClusterEventMap = make(map[model.ClusterEvent]prometheus.Counter)
|
||||
for _, event := range []model.ClusterEvent{
|
||||
// Note: Keep this list in sync with the events in model/cluster_message.go.
|
||||
model.ClusterEventPublish,
|
||||
model.ClusterEventUpdateStatus,
|
||||
model.ClusterEventInvalidateAllCaches,
|
||||
model.ClusterEventInvalidateCacheForReactions,
|
||||
model.ClusterEventInvalidateCacheForChannelMembersNotifyProps,
|
||||
model.ClusterEventInvalidateCacheForChannelByName,
|
||||
model.ClusterEventInvalidateCacheForChannel,
|
||||
model.ClusterEventInvalidateCacheForChannelGuestCount,
|
||||
model.ClusterEventInvalidateCacheForUser,
|
||||
model.ClusterEventInvalidateCacheForUserTeams,
|
||||
model.ClusterEventClearSessionCacheForUser,
|
||||
model.ClusterEventInvalidateCacheForRoles,
|
||||
model.ClusterEventInvalidateCacheForRolePermissions,
|
||||
model.ClusterEventInvalidateCacheForProfileByIds,
|
||||
model.ClusterEventInvalidateCacheForAllProfiles,
|
||||
model.ClusterEventInvalidateCacheForProfileInChannel,
|
||||
model.ClusterEventInvalidateCacheForSchemes,
|
||||
model.ClusterEventInvalidateCacheForFileInfos,
|
||||
model.ClusterEventInvalidateCacheForWebhooks,
|
||||
model.ClusterEventInvalidateCacheForEmojisById,
|
||||
model.ClusterEventInvalidateCacheForEmojisIdByName,
|
||||
model.ClusterEventInvalidateCacheForChannelFileCount,
|
||||
model.ClusterEventInvalidateCacheForChannelPinnedpostsCounts,
|
||||
model.ClusterEventInvalidateCacheForChannelMemberCounts,
|
||||
model.ClusterEventInvalidateCacheForChannelsMemberCount,
|
||||
model.ClusterEventInvalidateCacheForLastPosts,
|
||||
model.ClusterEventInvalidateCacheForLastPostTime,
|
||||
model.ClusterEventInvalidateCacheForPostsUsage,
|
||||
model.ClusterEventInvalidateCacheForTeams,
|
||||
model.ClusterEventClearSessionCacheForAllUsers,
|
||||
model.ClusterEventInstallPlugin,
|
||||
model.ClusterEventRemovePlugin,
|
||||
model.ClusterEventPluginEvent,
|
||||
model.ClusterEventInvalidateCacheForTermsOfService,
|
||||
model.ClusterEventBusyStateChanged,
|
||||
} {
|
||||
m.ClusterEventMap[event] = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(event)})
|
||||
}
|
||||
m.ClusterEventMap[model.ClusterEvent("other")] = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": "other"})
|
||||
|
||||
// Login Subsystem
|
||||
|
||||
@@ -1482,30 +1500,11 @@ func (mi *MetricsInterfaceImpl) ObserveAPIEndpointDuration(handler, method, stat
|
||||
}
|
||||
|
||||
func (mi *MetricsInterfaceImpl) IncrementClusterEventType(eventType model.ClusterEvent) {
|
||||
switch eventType {
|
||||
case model.ClusterEventPublish:
|
||||
mi.ClusterEventTypePublish.Inc()
|
||||
case model.ClusterEventUpdateStatus:
|
||||
mi.ClusterEventTypeStatus.Inc()
|
||||
case model.ClusterEventInvalidateAllCaches:
|
||||
mi.ClusterEventTypeInvAll.Inc()
|
||||
case model.ClusterEventInvalidateCacheForReactions:
|
||||
mi.ClusterEventTypeInvReactions.Inc()
|
||||
case model.ClusterEventInvalidateCacheForChannelMembersNotifyProps:
|
||||
mi.ClusterEventTypeInvChannelMembersNotifyProps.Inc()
|
||||
case model.ClusterEventInvalidateCacheForChannelByName:
|
||||
mi.ClusterEventTypeInvChannelByName.Inc()
|
||||
case model.ClusterEventInvalidateCacheForChannel:
|
||||
mi.ClusterEventTypeInvChannel.Inc()
|
||||
case model.ClusterEventInvalidateCacheForUser:
|
||||
mi.ClusterEventTypeInvUser.Inc()
|
||||
case model.ClusterEventClearSessionCacheForUser:
|
||||
mi.ClusterEventTypeInvSessions.Inc()
|
||||
case model.ClusterEventInvalidateCacheForRoles:
|
||||
mi.ClusterEventTypeInvRoles.Inc()
|
||||
default:
|
||||
mi.ClusterEventTypeOther.Inc()
|
||||
if event, ok := mi.ClusterEventMap[eventType]; ok {
|
||||
event.Inc()
|
||||
return
|
||||
}
|
||||
mi.ClusterEventMap[model.ClusterEvent("other")].Inc()
|
||||
}
|
||||
|
||||
func (mi *MetricsInterfaceImpl) IncrementLogin() {
|
||||
|
||||
@@ -41,6 +41,8 @@ const (
|
||||
ClusterEventPluginEvent ClusterEvent = "plugin_event"
|
||||
ClusterEventInvalidateCacheForTermsOfService ClusterEvent = "inv_terms_of_service"
|
||||
ClusterEventBusyStateChanged ClusterEvent = "busy_state_change"
|
||||
// Note: if you are adding a new event, please also add it in the slice of
|
||||
// m.ClusterEventMap in metrics/metrics.go file.
|
||||
|
||||
// Gossip communication
|
||||
ClusterGossipEventRequestGetLogs = "gossip_request_get_logs"
|
||||
|
||||
Ссылка в новой задаче
Block a user