parent
76f1f7077d
commit
85bd8b19ee
@ -1,15 +0,0 @@
|
|||||||
// Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package prome // import "github.com/openimsdk/open-im-server/v3/pkg/common/prome"
|
|
@ -1,470 +0,0 @@
|
|||||||
// Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package prome
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
|
||||||
"github.com/prometheus/client_golang/prometheus/promauto"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
// auth rpc.
|
|
||||||
UserLoginCounter prometheus.Counter
|
|
||||||
UserRegisterCounter prometheus.Counter
|
|
||||||
|
|
||||||
// seg.
|
|
||||||
SeqGetSuccessCounter prometheus.Counter
|
|
||||||
SeqGetFailedCounter prometheus.Counter
|
|
||||||
SeqSetSuccessCounter prometheus.Counter
|
|
||||||
SeqSetFailedCounter prometheus.Counter
|
|
||||||
|
|
||||||
// msg-db.
|
|
||||||
MsgInsertRedisSuccessCounter prometheus.Counter
|
|
||||||
MsgInsertRedisFailedCounter prometheus.Counter
|
|
||||||
MsgInsertMongoSuccessCounter prometheus.Counter
|
|
||||||
MsgInsertMongoFailedCounter prometheus.Counter
|
|
||||||
MsgPullFromRedisSuccessCounter prometheus.Counter
|
|
||||||
MsgPullFromRedisFailedCounter prometheus.Counter
|
|
||||||
MsgPullFromMongoSuccessCounter prometheus.Counter
|
|
||||||
MsgPullFromMongoFailedCounter prometheus.Counter
|
|
||||||
|
|
||||||
// msg-ws.
|
|
||||||
MsgRecvTotalCounter prometheus.Counter
|
|
||||||
GetNewestSeqTotalCounter prometheus.Counter
|
|
||||||
PullMsgBySeqListTotalCounter prometheus.Counter
|
|
||||||
|
|
||||||
SingleChatMsgRecvSuccessCounter prometheus.Counter
|
|
||||||
GroupChatMsgRecvSuccessCounter prometheus.Counter
|
|
||||||
WorkSuperGroupChatMsgRecvSuccessCounter prometheus.Counter
|
|
||||||
OnlineUserGauge prometheus.Gauge
|
|
||||||
|
|
||||||
// msg-msg.
|
|
||||||
SingleChatMsgProcessSuccessCounter prometheus.Counter
|
|
||||||
SingleChatMsgProcessFailedCounter prometheus.Counter
|
|
||||||
GroupChatMsgProcessSuccessCounter prometheus.Counter
|
|
||||||
GroupChatMsgProcessFailedCounter prometheus.Counter
|
|
||||||
WorkSuperGroupChatMsgProcessSuccessCounter prometheus.Counter
|
|
||||||
WorkSuperGroupChatMsgProcessFailedCounter prometheus.Counter
|
|
||||||
|
|
||||||
// msg-push.
|
|
||||||
MsgOnlinePushSuccessCounter prometheus.Counter
|
|
||||||
MsgOfflinePushSuccessCounter prometheus.Counter
|
|
||||||
MsgOfflinePushFailedCounter prometheus.Counter
|
|
||||||
// api.
|
|
||||||
ApiRequestCounter prometheus.Counter
|
|
||||||
ApiRequestSuccessCounter prometheus.Counter
|
|
||||||
ApiRequestFailedCounter prometheus.Counter
|
|
||||||
|
|
||||||
// grpc.
|
|
||||||
GrpcRequestCounter prometheus.Counter
|
|
||||||
GrpcRequestSuccessCounter prometheus.Counter
|
|
||||||
GrpcRequestFailedCounter prometheus.Counter
|
|
||||||
|
|
||||||
SendMsgCounter prometheus.Counter
|
|
||||||
|
|
||||||
// conversation.
|
|
||||||
ConversationCreateSuccessCounter prometheus.Counter
|
|
||||||
ConversationCreateFailedCounter prometheus.Counter
|
|
||||||
)
|
|
||||||
|
|
||||||
func NewUserLoginCounter() {
|
|
||||||
if UserLoginCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
UserLoginCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "user_login",
|
|
||||||
Help: "The number of user login",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewUserRegisterCounter() {
|
|
||||||
if UserRegisterCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
UserRegisterCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "user_register",
|
|
||||||
Help: "The number of user register",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSeqGetSuccessCounter() {
|
|
||||||
if SeqGetSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
SeqGetSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "seq_get_success",
|
|
||||||
Help: "The number of successful get seq",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSeqGetFailedCounter() {
|
|
||||||
if SeqGetFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
SeqGetFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "seq_get_failed",
|
|
||||||
Help: "The number of failed get seq",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSeqSetSuccessCounter() {
|
|
||||||
if SeqSetSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
SeqSetSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "seq_set_success",
|
|
||||||
Help: "The number of successful set seq",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSeqSetFailedCounter() {
|
|
||||||
if SeqSetFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
SeqSetFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "seq_set_failed",
|
|
||||||
Help: "The number of failed set seq",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewApiRequestCounter() {
|
|
||||||
if ApiRequestCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ApiRequestCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "api_request",
|
|
||||||
Help: "The number of api request",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewApiRequestSuccessCounter() {
|
|
||||||
if ApiRequestSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ApiRequestSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "api_request_success",
|
|
||||||
Help: "The number of api request success",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewApiRequestFailedCounter() {
|
|
||||||
if ApiRequestFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ApiRequestFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "api_request_failed",
|
|
||||||
Help: "The number of api request failed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGrpcRequestCounter() {
|
|
||||||
if GrpcRequestCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
GrpcRequestCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "grpc_request",
|
|
||||||
Help: "The number of api request",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGrpcRequestSuccessCounter() {
|
|
||||||
if GrpcRequestSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
GrpcRequestSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "grpc_request_success",
|
|
||||||
Help: "The number of grpc request success",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGrpcRequestFailedCounter() {
|
|
||||||
if GrpcRequestFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
GrpcRequestFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "grpc_request_failed",
|
|
||||||
Help: "The number of grpc request failed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSendMsgCount() {
|
|
||||||
if SendMsgCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
SendMsgCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "send_msg",
|
|
||||||
Help: "The number of send msg",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgInsertRedisSuccessCounter() {
|
|
||||||
if MsgInsertRedisSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgInsertRedisSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_insert_redis_success",
|
|
||||||
Help: "The number of successful insert msg to redis",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgInsertRedisFailedCounter() {
|
|
||||||
if MsgInsertRedisFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgInsertRedisFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_insert_redis_failed",
|
|
||||||
Help: "The number of failed insert msg to redis",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgInsertMongoSuccessCounter() {
|
|
||||||
if MsgInsertMongoSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgInsertMongoSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_insert_mongo_success",
|
|
||||||
Help: "The number of successful insert msg to mongo",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgInsertMongoFailedCounter() {
|
|
||||||
if MsgInsertMongoFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgInsertMongoFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_insert_mongo_failed",
|
|
||||||
Help: "The number of failed insert msg to mongo",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgPullFromRedisSuccessCounter() {
|
|
||||||
if MsgPullFromRedisSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgPullFromRedisSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_pull_from_redis_success",
|
|
||||||
Help: "The number of successful pull msg from redis",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgPullFromRedisFailedCounter() {
|
|
||||||
if MsgPullFromRedisFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgPullFromRedisFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_pull_from_redis_failed",
|
|
||||||
Help: "The number of failed pull msg from redis",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgPullFromMongoSuccessCounter() {
|
|
||||||
if MsgPullFromMongoSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgPullFromMongoSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_pull_from_mongo_success",
|
|
||||||
Help: "The number of successful pull msg from mongo",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgPullFromMongoFailedCounter() {
|
|
||||||
if MsgPullFromMongoFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgPullFromMongoFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_pull_from_mongo_failed",
|
|
||||||
Help: "The number of failed pull msg from mongo",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgRecvTotalCounter() {
|
|
||||||
if MsgRecvTotalCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgRecvTotalCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_recv_total",
|
|
||||||
Help: "The number of msg received",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGetNewestSeqTotalCounter() {
|
|
||||||
if GetNewestSeqTotalCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
GetNewestSeqTotalCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "get_newest_seq_total",
|
|
||||||
Help: "the number of get newest seq",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewPullMsgBySeqListTotalCounter() {
|
|
||||||
if PullMsgBySeqListTotalCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
PullMsgBySeqListTotalCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "pull_msg_by_seq_list_total",
|
|
||||||
Help: "The number of pull msg by seq list",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSingleChatMsgRecvSuccessCounter() {
|
|
||||||
if SingleChatMsgRecvSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
SingleChatMsgRecvSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "single_chat_msg_recv_success",
|
|
||||||
Help: "The number of single chat msg successful received ",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGroupChatMsgRecvSuccessCounter() {
|
|
||||||
if GroupChatMsgRecvSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
GroupChatMsgRecvSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "group_chat_msg_recv_success",
|
|
||||||
Help: "The number of group chat msg successful received",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewWorkSuperGroupChatMsgRecvSuccessCounter() {
|
|
||||||
if WorkSuperGroupChatMsgRecvSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
WorkSuperGroupChatMsgRecvSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "work_super_group_chat_msg_recv_success",
|
|
||||||
Help: "The number of work/super group chat msg successful received",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewOnlineUserGauges() {
|
|
||||||
if OnlineUserGauge != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
OnlineUserGauge = promauto.NewGauge(prometheus.GaugeOpts{
|
|
||||||
Name: "online_user_num",
|
|
||||||
Help: "The number of online user num",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSingleChatMsgProcessSuccessCounter() {
|
|
||||||
if SingleChatMsgProcessSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
SingleChatMsgProcessSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "single_chat_msg_process_success",
|
|
||||||
Help: "The number of single chat msg successful processed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSingleChatMsgProcessFailedCounter() {
|
|
||||||
if SingleChatMsgProcessFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
SingleChatMsgProcessFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "single_chat_msg_process_failed",
|
|
||||||
Help: "The number of single chat msg failed processed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGroupChatMsgProcessSuccessCounter() {
|
|
||||||
if GroupChatMsgProcessSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
GroupChatMsgProcessSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "group_chat_msg_process_success",
|
|
||||||
Help: "The number of group chat msg successful processed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGroupChatMsgProcessFailedCounter() {
|
|
||||||
if GroupChatMsgProcessFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
GroupChatMsgProcessFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "group_chat_msg_process_failed",
|
|
||||||
Help: "The number of group chat msg failed processed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewWorkSuperGroupChatMsgProcessSuccessCounter() {
|
|
||||||
if WorkSuperGroupChatMsgProcessSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
WorkSuperGroupChatMsgProcessSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "work_super_group_chat_msg_process_success",
|
|
||||||
Help: "The number of work/super group chat msg successful processed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewWorkSuperGroupChatMsgProcessFailedCounter() {
|
|
||||||
if WorkSuperGroupChatMsgProcessFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
WorkSuperGroupChatMsgProcessFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "work_super_group_chat_msg_process_failed",
|
|
||||||
Help: "The number of work/super group chat msg failed processed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgOnlinePushSuccessCounter() {
|
|
||||||
if MsgOnlinePushSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgOnlinePushSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_online_push_success",
|
|
||||||
Help: "The number of msg successful online pushed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgOfflinePushSuccessCounter() {
|
|
||||||
if MsgOfflinePushSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgOfflinePushSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_offline_push_success",
|
|
||||||
Help: "The number of msg successful offline pushed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMsgOfflinePushFailedCounter() {
|
|
||||||
if MsgOfflinePushFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
MsgOfflinePushFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "msg_offline_push_failed",
|
|
||||||
Help: "The number of msg failed offline pushed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewConversationCreateSuccessCounter() {
|
|
||||||
if ConversationCreateSuccessCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ConversationCreateSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "conversation_push_success",
|
|
||||||
Help: "The number of conversation successful pushed",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewConversationCreateFailedCounter() {
|
|
||||||
if ConversationCreateFailedCounter != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ConversationCreateFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
|
||||||
Name: "conversation_push_failed",
|
|
||||||
Help: "The number of conversation failed pushed",
|
|
||||||
})
|
|
||||||
}
|
|
@ -1,97 +0,0 @@
|
|||||||
// Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package prome
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"net/http"
|
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
|
||||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
||||||
)
|
|
||||||
|
|
||||||
func StartPrometheusSrv(prometheusPort int) error {
|
|
||||||
if config.Config.Prometheus.Enable {
|
|
||||||
http.Handle("/metrics", promhttp.Handler())
|
|
||||||
err := http.ListenAndServe(":"+strconv.Itoa(prometheusPort), nil)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func PrometheusHandler() gin.HandlerFunc {
|
|
||||||
h := promhttp.Handler()
|
|
||||||
return func(c *gin.Context) {
|
|
||||||
h.ServeHTTP(c.Writer, c.Request)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type responseBodyWriter struct {
|
|
||||||
gin.ResponseWriter
|
|
||||||
body *bytes.Buffer
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r responseBodyWriter) Write(b []byte) (int, error) {
|
|
||||||
r.body.Write(b)
|
|
||||||
return r.ResponseWriter.Write(b)
|
|
||||||
}
|
|
||||||
|
|
||||||
func PrometheusMiddleware(c *gin.Context) {
|
|
||||||
Inc(ApiRequestCounter)
|
|
||||||
w := &responseBodyWriter{body: &bytes.Buffer{}, ResponseWriter: c.Writer}
|
|
||||||
c.Writer = w
|
|
||||||
c.Next()
|
|
||||||
if c.Writer.Status() == http.StatusOK {
|
|
||||||
Inc(ApiRequestSuccessCounter)
|
|
||||||
} else {
|
|
||||||
Inc(ApiRequestFailedCounter)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func Inc(counter prometheus.Counter) {
|
|
||||||
if config.Config.Prometheus.Enable {
|
|
||||||
if counter != nil {
|
|
||||||
counter.Inc()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func Add(counter prometheus.Counter, add int) {
|
|
||||||
if config.Config.Prometheus.Enable {
|
|
||||||
if counter != nil {
|
|
||||||
counter.Add(float64(add))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func GaugeInc(gauges prometheus.Gauge) {
|
|
||||||
if config.Config.Prometheus.Enable {
|
|
||||||
if gauges != nil {
|
|
||||||
gauges.Inc()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func GaugeDec(gauges prometheus.Gauge) {
|
|
||||||
if config.Config.Prometheus.Enable {
|
|
||||||
if gauges != nil {
|
|
||||||
gauges.Dec()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in new issue