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
|
ClusterHealthGauge prometheus.GaugeFunc
|
||||||
|
|
||||||
ClusterEventTypeCounters *prometheus.CounterVec
|
ClusterEventTypeCounters *prometheus.CounterVec
|
||||||
ClusterEventTypePublish prometheus.Counter
|
ClusterEventMap map[model.ClusterEvent]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
|
|
||||||
|
|
||||||
LoginCounter prometheus.Counter
|
LoginCounter prometheus.Counter
|
||||||
LoginFailCounter prometheus.Counter
|
LoginFailCounter prometheus.Counter
|
||||||
@@ -467,17 +454,48 @@ func New(ps *platform.PlatformService, driver, dataSource string) *MetricsInterf
|
|||||||
[]string{"name"},
|
[]string{"name"},
|
||||||
)
|
)
|
||||||
m.Registry.MustRegister(m.ClusterEventTypeCounters)
|
m.Registry.MustRegister(m.ClusterEventTypeCounters)
|
||||||
m.ClusterEventTypePublish = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventPublish)})
|
m.ClusterEventMap = make(map[model.ClusterEvent]prometheus.Counter)
|
||||||
m.ClusterEventTypeStatus = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventUpdateStatus)})
|
for _, event := range []model.ClusterEvent{
|
||||||
m.ClusterEventTypeInvAll = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateAllCaches)})
|
// Note: Keep this list in sync with the events in model/cluster_message.go.
|
||||||
m.ClusterEventTypeInvReactions = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForReactions)})
|
model.ClusterEventPublish,
|
||||||
m.ClusterEventTypeInvChannelMembersNotifyProps = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForChannelMembersNotifyProps)})
|
model.ClusterEventUpdateStatus,
|
||||||
m.ClusterEventTypeInvChannelByName = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForChannelByName)})
|
model.ClusterEventInvalidateAllCaches,
|
||||||
m.ClusterEventTypeInvChannel = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForChannel)})
|
model.ClusterEventInvalidateCacheForReactions,
|
||||||
m.ClusterEventTypeInvUser = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForUser)})
|
model.ClusterEventInvalidateCacheForChannelMembersNotifyProps,
|
||||||
m.ClusterEventTypeInvSessions = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventClearSessionCacheForUser)})
|
model.ClusterEventInvalidateCacheForChannelByName,
|
||||||
m.ClusterEventTypeInvRoles = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": string(model.ClusterEventInvalidateCacheForRoles)})
|
model.ClusterEventInvalidateCacheForChannel,
|
||||||
m.ClusterEventTypeOther = m.ClusterEventTypeCounters.With(prometheus.Labels{"name": "other"})
|
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
|
// Login Subsystem
|
||||||
|
|
||||||
@@ -1482,30 +1500,11 @@ func (mi *MetricsInterfaceImpl) ObserveAPIEndpointDuration(handler, method, stat
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (mi *MetricsInterfaceImpl) IncrementClusterEventType(eventType model.ClusterEvent) {
|
func (mi *MetricsInterfaceImpl) IncrementClusterEventType(eventType model.ClusterEvent) {
|
||||||
switch eventType {
|
if event, ok := mi.ClusterEventMap[eventType]; ok {
|
||||||
case model.ClusterEventPublish:
|
event.Inc()
|
||||||
mi.ClusterEventTypePublish.Inc()
|
return
|
||||||
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()
|
|
||||||
}
|
}
|
||||||
|
mi.ClusterEventMap[model.ClusterEvent("other")].Inc()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mi *MetricsInterfaceImpl) IncrementLogin() {
|
func (mi *MetricsInterfaceImpl) IncrementLogin() {
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ const (
|
|||||||
ClusterEventPluginEvent ClusterEvent = "plugin_event"
|
ClusterEventPluginEvent ClusterEvent = "plugin_event"
|
||||||
ClusterEventInvalidateCacheForTermsOfService ClusterEvent = "inv_terms_of_service"
|
ClusterEventInvalidateCacheForTermsOfService ClusterEvent = "inv_terms_of_service"
|
||||||
ClusterEventBusyStateChanged ClusterEvent = "busy_state_change"
|
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
|
// Gossip communication
|
||||||
ClusterGossipEventRequestGetLogs = "gossip_request_get_logs"
|
ClusterGossipEventRequestGetLogs = "gossip_request_get_logs"
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user