* docker: prometheus and grafana for development Add prometheus and grafana docker configuration when developing with access to the enterprise repository. This simplifies the setup for developers adding new metrics or even examining events from their development server. The services are disabled by default when no enterprise source is detected. Grafana is provisioned automatically with the Prometheus datasource, as well as the canonical dashboards used with Mattermost. Furthermore, no authentication is required to access Grafana to simplify access from a development environment. The default home dashboard is customized to automatically show links to the provisioned dashboards. Dashboards can be saved, and login remains available via the default `admin/admin` credentials (which initiates a password reset), but no dashboard or system configuration is (currently) persisted if the container is destroyed. Linux requires slightly special handling (well, really it's Docker for MacOS/Windows), in that `host.docker.internal` is the canonical way to resolve the host on MacOS/Windows, but on Linux it's usually sufficient to just use `localhost`. Until https://github.com/docker/for-linux/issues/264 is resolved, this PR includes code to customize the Prometheus configuration to point at the required address for the running platform. * metrics: track active jobs by type * metrics: active jobs chart * metrics: server start and job annotations * Update build/docker-compose.common.yml Co-authored-by: Claudio Costa <cstcld91@gmail.com> * prometheus: resolve docker host via 172.17.0.1 instead * skip enabling prometheus and grafana by default * handle JOB_STATUS_ERROR and JOB_STATUS_CANCELED end states * handle nil srv.metrics * lookup job to determine type for metrics * mocked unit tests for jobs * goimports lint fixes * missing license * add instance to server start tag * filter annotations by selected instance Co-authored-by: Claudio Costa <cstcld91@gmail.com> Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
272 строки
9.0 KiB
Go
272 строки
9.0 KiB
Go
// Code generated by mockery v1.0.0. DO NOT EDIT.
|
|
|
|
// Regenerate this file using `make einterfaces-mocks`.
|
|
|
|
package mocks
|
|
|
|
import (
|
|
logr "github.com/mattermost/logr"
|
|
mock "github.com/stretchr/testify/mock"
|
|
)
|
|
|
|
// MetricsInterface is an autogenerated mock type for the MetricsInterface type
|
|
type MetricsInterface struct {
|
|
mock.Mock
|
|
}
|
|
|
|
// AddMemCacheHitCounter provides a mock function with given fields: cacheName, amount
|
|
func (_m *MetricsInterface) AddMemCacheHitCounter(cacheName string, amount float64) {
|
|
_m.Called(cacheName, amount)
|
|
}
|
|
|
|
// AddMemCacheMissCounter provides a mock function with given fields: cacheName, amount
|
|
func (_m *MetricsInterface) AddMemCacheMissCounter(cacheName string, amount float64) {
|
|
_m.Called(cacheName, amount)
|
|
}
|
|
|
|
// DecrementJobActive provides a mock function with given fields: jobType
|
|
func (_m *MetricsInterface) DecrementJobActive(jobType string) {
|
|
_m.Called(jobType)
|
|
}
|
|
|
|
// DecrementWebSocketBroadcastBufferSize provides a mock function with given fields: hub, amount
|
|
func (_m *MetricsInterface) DecrementWebSocketBroadcastBufferSize(hub string, amount float64) {
|
|
_m.Called(hub, amount)
|
|
}
|
|
|
|
// DecrementWebSocketBroadcastUsersRegistered provides a mock function with given fields: hub, amount
|
|
func (_m *MetricsInterface) DecrementWebSocketBroadcastUsersRegistered(hub string, amount float64) {
|
|
_m.Called(hub, amount)
|
|
}
|
|
|
|
// GetLoggerMetricsCollector provides a mock function with given fields:
|
|
func (_m *MetricsInterface) GetLoggerMetricsCollector() logr.MetricsCollector {
|
|
ret := _m.Called()
|
|
|
|
var r0 logr.MetricsCollector
|
|
if rf, ok := ret.Get(0).(func() logr.MetricsCollector); ok {
|
|
r0 = rf()
|
|
} else {
|
|
if ret.Get(0) != nil {
|
|
r0 = ret.Get(0).(logr.MetricsCollector)
|
|
}
|
|
}
|
|
|
|
return r0
|
|
}
|
|
|
|
// IncrementChannelIndexCounter provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementChannelIndexCounter() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementClusterEventType provides a mock function with given fields: eventType
|
|
func (_m *MetricsInterface) IncrementClusterEventType(eventType string) {
|
|
_m.Called(eventType)
|
|
}
|
|
|
|
// IncrementClusterRequest provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementClusterRequest() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementEtagHitCounter provides a mock function with given fields: route
|
|
func (_m *MetricsInterface) IncrementEtagHitCounter(route string) {
|
|
_m.Called(route)
|
|
}
|
|
|
|
// IncrementEtagMissCounter provides a mock function with given fields: route
|
|
func (_m *MetricsInterface) IncrementEtagMissCounter(route string) {
|
|
_m.Called(route)
|
|
}
|
|
|
|
// IncrementFileIndexCounter provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementFileIndexCounter() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementFilesSearchCounter provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementFilesSearchCounter() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementHttpError provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementHttpError() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementHttpRequest provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementHttpRequest() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementJobActive provides a mock function with given fields: jobType
|
|
func (_m *MetricsInterface) IncrementJobActive(jobType string) {
|
|
_m.Called(jobType)
|
|
}
|
|
|
|
// IncrementLogin provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementLogin() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementLoginFail provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementLoginFail() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementMemCacheHitCounter provides a mock function with given fields: cacheName
|
|
func (_m *MetricsInterface) IncrementMemCacheHitCounter(cacheName string) {
|
|
_m.Called(cacheName)
|
|
}
|
|
|
|
// IncrementMemCacheHitCounterSession provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementMemCacheHitCounterSession() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementMemCacheInvalidationCounter provides a mock function with given fields: cacheName
|
|
func (_m *MetricsInterface) IncrementMemCacheInvalidationCounter(cacheName string) {
|
|
_m.Called(cacheName)
|
|
}
|
|
|
|
// IncrementMemCacheInvalidationCounterSession provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementMemCacheInvalidationCounterSession() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementMemCacheMissCounter provides a mock function with given fields: cacheName
|
|
func (_m *MetricsInterface) IncrementMemCacheMissCounter(cacheName string) {
|
|
_m.Called(cacheName)
|
|
}
|
|
|
|
// IncrementMemCacheMissCounterSession provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementMemCacheMissCounterSession() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementPostBroadcast provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementPostBroadcast() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementPostCreate provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementPostCreate() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementPostFileAttachment provides a mock function with given fields: count
|
|
func (_m *MetricsInterface) IncrementPostFileAttachment(count int) {
|
|
_m.Called(count)
|
|
}
|
|
|
|
// IncrementPostIndexCounter provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementPostIndexCounter() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementPostSentEmail provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementPostSentEmail() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementPostSentPush provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementPostSentPush() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementPostsSearchCounter provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementPostsSearchCounter() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementUserIndexCounter provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementUserIndexCounter() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementWebSocketBroadcast provides a mock function with given fields: eventType
|
|
func (_m *MetricsInterface) IncrementWebSocketBroadcast(eventType string) {
|
|
_m.Called(eventType)
|
|
}
|
|
|
|
// IncrementWebSocketBroadcastBufferSize provides a mock function with given fields: hub, amount
|
|
func (_m *MetricsInterface) IncrementWebSocketBroadcastBufferSize(hub string, amount float64) {
|
|
_m.Called(hub, amount)
|
|
}
|
|
|
|
// IncrementWebSocketBroadcastUsersRegistered provides a mock function with given fields: hub, amount
|
|
func (_m *MetricsInterface) IncrementWebSocketBroadcastUsersRegistered(hub string, amount float64) {
|
|
_m.Called(hub, amount)
|
|
}
|
|
|
|
// IncrementWebhookPost provides a mock function with given fields:
|
|
func (_m *MetricsInterface) IncrementWebhookPost() {
|
|
_m.Called()
|
|
}
|
|
|
|
// IncrementWebsocketEvent provides a mock function with given fields: eventType
|
|
func (_m *MetricsInterface) IncrementWebsocketEvent(eventType string) {
|
|
_m.Called(eventType)
|
|
}
|
|
|
|
// ObserveApiEndpointDuration provides a mock function with given fields: endpoint, method, statusCode, elapsed
|
|
func (_m *MetricsInterface) ObserveApiEndpointDuration(endpoint string, method string, statusCode string, elapsed float64) {
|
|
_m.Called(endpoint, method, statusCode, elapsed)
|
|
}
|
|
|
|
// ObserveClusterRequestDuration provides a mock function with given fields: elapsed
|
|
func (_m *MetricsInterface) ObserveClusterRequestDuration(elapsed float64) {
|
|
_m.Called(elapsed)
|
|
}
|
|
|
|
// ObserveEnabledUsers provides a mock function with given fields: users
|
|
func (_m *MetricsInterface) ObserveEnabledUsers(users int64) {
|
|
_m.Called(users)
|
|
}
|
|
|
|
// ObserveFilesSearchDuration provides a mock function with given fields: elapsed
|
|
func (_m *MetricsInterface) ObserveFilesSearchDuration(elapsed float64) {
|
|
_m.Called(elapsed)
|
|
}
|
|
|
|
// ObservePluginApiDuration provides a mock function with given fields: pluginID, apiName, success, elapsed
|
|
func (_m *MetricsInterface) ObservePluginApiDuration(pluginID string, apiName string, success bool, elapsed float64) {
|
|
_m.Called(pluginID, apiName, success, elapsed)
|
|
}
|
|
|
|
// ObservePluginHookDuration provides a mock function with given fields: pluginID, hookName, success, elapsed
|
|
func (_m *MetricsInterface) ObservePluginHookDuration(pluginID string, hookName string, success bool, elapsed float64) {
|
|
_m.Called(pluginID, hookName, success, elapsed)
|
|
}
|
|
|
|
// ObservePluginMultiHookDuration provides a mock function with given fields: elapsed
|
|
func (_m *MetricsInterface) ObservePluginMultiHookDuration(elapsed float64) {
|
|
_m.Called(elapsed)
|
|
}
|
|
|
|
// ObservePluginMultiHookIterationDuration provides a mock function with given fields: pluginID, elapsed
|
|
func (_m *MetricsInterface) ObservePluginMultiHookIterationDuration(pluginID string, elapsed float64) {
|
|
_m.Called(pluginID, elapsed)
|
|
}
|
|
|
|
// ObservePostsSearchDuration provides a mock function with given fields: elapsed
|
|
func (_m *MetricsInterface) ObservePostsSearchDuration(elapsed float64) {
|
|
_m.Called(elapsed)
|
|
}
|
|
|
|
// ObserveStoreMethodDuration provides a mock function with given fields: method, success, elapsed
|
|
func (_m *MetricsInterface) ObserveStoreMethodDuration(method string, success string, elapsed float64) {
|
|
_m.Called(method, success, elapsed)
|
|
}
|
|
|
|
// StartServer provides a mock function with given fields:
|
|
func (_m *MetricsInterface) StartServer() {
|
|
_m.Called()
|
|
}
|
|
|
|
// StopServer provides a mock function with given fields:
|
|
func (_m *MetricsInterface) StopServer() {
|
|
_m.Called()
|
|
}
|