mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-30 14:32:37 +08:00
promethues
This commit is contained in:
parent
72d0920458
commit
d534f026b0
@ -46,7 +46,8 @@ func main() {
|
|||||||
f, _ := os.Create("../logs/api.log")
|
f, _ := os.Create("../logs/api.log")
|
||||||
gin.DefaultWriter = io.MultiWriter(f)
|
gin.DefaultWriter = io.MultiWriter(f)
|
||||||
// gin.SetMode(gin.DebugMode)
|
// gin.SetMode(gin.DebugMode)
|
||||||
r := gin.Default()
|
r := gin.New()
|
||||||
|
r.Use(gin.Recovery())
|
||||||
r.Use(utils.CorsHandler())
|
r.Use(utils.CorsHandler())
|
||||||
log.Info("load config: ", config.Config)
|
log.Info("load config: ", config.Config)
|
||||||
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||||
|
@ -20,6 +20,8 @@ mysql:
|
|||||||
dbMaxOpenConns: 100
|
dbMaxOpenConns: 100
|
||||||
dbMaxIdleConns: 10
|
dbMaxIdleConns: 10
|
||||||
dbMaxLifeTime: 5
|
dbMaxLifeTime: 5
|
||||||
|
logLevel: 1 #1=slient 2=error 3=warn 4=info
|
||||||
|
slowThreshold: 500
|
||||||
|
|
||||||
mongo:
|
mongo:
|
||||||
dbUri: ""#当dbUri值不为空则直接使用该值
|
dbUri: ""#当dbUri值不为空则直接使用该值
|
||||||
|
@ -153,11 +153,11 @@ services:
|
|||||||
grafana:
|
grafana:
|
||||||
image: grafana/grafana
|
image: grafana/grafana
|
||||||
volumes:
|
volumes:
|
||||||
# - ./grafana/dashboards/dashboard.json:/var/lib/grafana/dashboards/dashboard.json
|
|
||||||
# - ./grafana/provisioning/dashboard.yaml:/etc/grafana/provisioning/dashboards/dashboard.yaml
|
|
||||||
- ./docker-compose_cfg/datasource-compose.yaml:/etc/grafana/provisioning/datasources/datasource.yaml
|
- ./docker-compose_cfg/datasource-compose.yaml:/etc/grafana/provisioning/datasources/datasource.yaml
|
||||||
- ./docker-compose_cfg/grafana.ini:/etc/grafana/grafana.ini
|
- ./docker-compose_cfg/grafana.ini:/etc/grafana/grafana.ini
|
||||||
- ./docker-compose_cfg/node-exporter-full_rev1.json:/var/lib/grafana/dashboards/node-exporter-full_rev1.json
|
# - ./docker-compose_cfg/node-exporter-full_rev1.json:/var/lib/grafana/dashboards/node-exporter-full_rev1.json
|
||||||
|
# - ./components/grafana:/var/lib/grafana
|
||||||
|
- ./docker-compose_cfg/grafana.db:/var/lib/grafana/grafana.db
|
||||||
container_name: grafana
|
container_name: grafana
|
||||||
ports:
|
ports:
|
||||||
- 10007:10007
|
- 10007:10007
|
||||||
|
@ -18,7 +18,8 @@ import (
|
|||||||
|
|
||||||
func NewGinRouter() *gin.Engine {
|
func NewGinRouter() *gin.Engine {
|
||||||
gin.SetMode(gin.ReleaseMode)
|
gin.SetMode(gin.ReleaseMode)
|
||||||
baseRouter := gin.Default()
|
baseRouter := gin.New()
|
||||||
|
baseRouter.Use()
|
||||||
if config.Config.Prometheus.Enable {
|
if config.Config.Prometheus.Enable {
|
||||||
baseRouter.GET("/metrics", promePkg.PrometheusHandler())
|
baseRouter.GET("/metrics", promePkg.PrometheusHandler())
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"Open_IM/pkg/common/db"
|
"Open_IM/pkg/common/db"
|
||||||
imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model"
|
imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model"
|
||||||
"Open_IM/pkg/common/log"
|
"Open_IM/pkg/common/log"
|
||||||
|
promePkg "Open_IM/pkg/common/prometheus"
|
||||||
"Open_IM/pkg/common/token_verify"
|
"Open_IM/pkg/common/token_verify"
|
||||||
"Open_IM/pkg/grpc-etcdv3/getcdv3"
|
"Open_IM/pkg/grpc-etcdv3/getcdv3"
|
||||||
pbAuth "Open_IM/pkg/proto/auth"
|
pbAuth "Open_IM/pkg/proto/auth"
|
||||||
@ -16,11 +17,30 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
|
"github.com/prometheus/client_golang/prometheus/promauto"
|
||||||
|
|
||||||
"Open_IM/pkg/common/config"
|
"Open_IM/pkg/common/config"
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
userLoginCounter prometheus.Counter
|
||||||
|
userRegisterCounter prometheus.Counter
|
||||||
|
)
|
||||||
|
|
||||||
|
func (rpc *rpcAuth) initPrometheus() {
|
||||||
|
userLoginCounter = promauto.NewCounter(prometheus.CounterOpts{
|
||||||
|
Name: "user_login",
|
||||||
|
Help: "The number of user login",
|
||||||
|
})
|
||||||
|
userRegisterCounter = promauto.NewCounter(prometheus.CounterOpts{
|
||||||
|
Name: "user_register",
|
||||||
|
Help: "The number of user register",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (rpc *rpcAuth) UserRegister(_ context.Context, req *pbAuth.UserRegisterReq) (*pbAuth.UserRegisterResp, error) {
|
func (rpc *rpcAuth) UserRegister(_ context.Context, req *pbAuth.UserRegisterReq) (*pbAuth.UserRegisterResp, error) {
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
|
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
|
||||||
var user db.User
|
var user db.User
|
||||||
@ -35,6 +55,7 @@ func (rpc *rpcAuth) UserRegister(_ context.Context, req *pbAuth.UserRegisterReq)
|
|||||||
log.NewError(req.OperationID, errMsg, user)
|
log.NewError(req.OperationID, errMsg, user)
|
||||||
return &pbAuth.UserRegisterResp{CommonResp: &pbAuth.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}}, nil
|
return &pbAuth.UserRegisterResp{CommonResp: &pbAuth.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}}, nil
|
||||||
}
|
}
|
||||||
|
promePkg.PromeInc(userRegisterCounter)
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", pbAuth.UserRegisterResp{CommonResp: &pbAuth.CommonResp{}})
|
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", pbAuth.UserRegisterResp{CommonResp: &pbAuth.CommonResp{}})
|
||||||
return &pbAuth.UserRegisterResp{CommonResp: &pbAuth.CommonResp{}}, nil
|
return &pbAuth.UserRegisterResp{CommonResp: &pbAuth.CommonResp{}}, nil
|
||||||
}
|
}
|
||||||
@ -47,6 +68,7 @@ func (rpc *rpcAuth) UserToken(_ context.Context, req *pbAuth.UserTokenReq) (*pbA
|
|||||||
log.NewError(req.OperationID, errMsg)
|
log.NewError(req.OperationID, errMsg)
|
||||||
return &pbAuth.UserTokenResp{CommonResp: &pbAuth.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}}, nil
|
return &pbAuth.UserTokenResp{CommonResp: &pbAuth.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}}, nil
|
||||||
}
|
}
|
||||||
|
promePkg.PromeInc(userLoginCounter)
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", pbAuth.UserTokenResp{CommonResp: &pbAuth.CommonResp{}, Token: tokens, ExpiredTime: expTime})
|
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", pbAuth.UserTokenResp{CommonResp: &pbAuth.CommonResp{}, Token: tokens, ExpiredTime: expTime})
|
||||||
return &pbAuth.UserTokenResp{CommonResp: &pbAuth.CommonResp{}, Token: tokens, ExpiredTime: expTime}, nil
|
return &pbAuth.UserTokenResp{CommonResp: &pbAuth.CommonResp{}, Token: tokens, ExpiredTime: expTime}, nil
|
||||||
}
|
}
|
||||||
@ -141,6 +163,9 @@ func (rpc *rpcAuth) Run() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
log.NewInfo(operationID, "RegisterAuthServer ok ", rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), rpcRegisterIP, rpc.rpcPort, rpc.rpcRegisterName)
|
log.NewInfo(operationID, "RegisterAuthServer ok ", rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), rpcRegisterIP, rpc.rpcPort, rpc.rpcRegisterName)
|
||||||
|
if config.Config.Prometheus.Enable {
|
||||||
|
rpc.initPrometheus()
|
||||||
|
}
|
||||||
err = srv.Serve(listener)
|
err = srv.Serve(listener)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(operationID, "Serve failed ", err.Error())
|
log.NewError(operationID, "Serve failed ", err.Error())
|
||||||
|
@ -9,10 +9,18 @@ import (
|
|||||||
"Open_IM/pkg/grpc-etcdv3/getcdv3"
|
"Open_IM/pkg/grpc-etcdv3/getcdv3"
|
||||||
"Open_IM/pkg/proto/msg"
|
"Open_IM/pkg/proto/msg"
|
||||||
"Open_IM/pkg/utils"
|
"Open_IM/pkg/utils"
|
||||||
"google.golang.org/grpc"
|
|
||||||
"net"
|
"net"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
|
"github.com/prometheus/client_golang/prometheus/promauto"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
sendMsgSuccessCounter prometheus.Counter
|
||||||
|
sendMsgFailedCounter prometheus.Counter
|
||||||
)
|
)
|
||||||
|
|
||||||
type rpcChat struct {
|
type rpcChat struct {
|
||||||
@ -46,6 +54,17 @@ func NewRpcChatServer(port int) *rpcChat {
|
|||||||
return &rc
|
return &rc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rpc *rpcChat) initPrometheus() {
|
||||||
|
sendMsgSuccessCounter = promauto.NewCounter(prometheus.CounterOpts{
|
||||||
|
Name: "send_msg_success",
|
||||||
|
Help: "The number of send msg success",
|
||||||
|
})
|
||||||
|
sendMsgFailedCounter = promauto.NewCounter(prometheus.CounterOpts{
|
||||||
|
Name: "send_msg_failed",
|
||||||
|
Help: "The number of send msg failed",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (rpc *rpcChat) Run() {
|
func (rpc *rpcChat) Run() {
|
||||||
log.Info("", "rpcChat init...")
|
log.Info("", "rpcChat init...")
|
||||||
listenIP := ""
|
listenIP := ""
|
||||||
@ -78,6 +97,9 @@ func (rpc *rpcChat) Run() {
|
|||||||
panic(utils.Wrap(err, "register chat module rpc to etcd err"))
|
panic(utils.Wrap(err, "register chat module rpc to etcd err"))
|
||||||
}
|
}
|
||||||
go rpc.runCh()
|
go rpc.runCh()
|
||||||
|
if config.Config.Prometheus.Enable {
|
||||||
|
rpc.initPrometheus()
|
||||||
|
}
|
||||||
err = srv.Serve(listener)
|
err = srv.Serve(listener)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("", "rpc rpcChat failed ", err.Error())
|
log.Error("", "rpc rpcChat failed ", err.Error())
|
||||||
|
@ -30,7 +30,9 @@ import (
|
|||||||
//When the number of group members is greater than this value,Online users will be sent first,Guaranteed service availability
|
//When the number of group members is greater than this value,Online users will be sent first,Guaranteed service availability
|
||||||
const GroupMemberNum = 500
|
const GroupMemberNum = 500
|
||||||
|
|
||||||
var ExcludeContentType = []int{constant.HasReadReceipt, constant.GroupHasReadReceipt}
|
var (
|
||||||
|
ExcludeContentType = []int{constant.HasReadReceipt, constant.GroupHasReadReceipt}
|
||||||
|
)
|
||||||
|
|
||||||
type MsgCallBackReq struct {
|
type MsgCallBackReq struct {
|
||||||
SendID string `json:"sendID"`
|
SendID string `json:"sendID"`
|
||||||
|
@ -99,6 +99,8 @@ type config struct {
|
|||||||
DBMaxOpenConns int `yaml:"dbMaxOpenConns"`
|
DBMaxOpenConns int `yaml:"dbMaxOpenConns"`
|
||||||
DBMaxIdleConns int `yaml:"dbMaxIdleConns"`
|
DBMaxIdleConns int `yaml:"dbMaxIdleConns"`
|
||||||
DBMaxLifeTime int `yaml:"dbMaxLifeTime"`
|
DBMaxLifeTime int `yaml:"dbMaxLifeTime"`
|
||||||
|
LogLevel int `yaml:"logLevel"`
|
||||||
|
SlowThreshold int `yaml:"slowThreshold"`
|
||||||
}
|
}
|
||||||
Mongo struct {
|
Mongo struct {
|
||||||
DBUri string `yaml:"dbUri"`
|
DBUri string `yaml:"dbUri"`
|
||||||
|
@ -56,8 +56,8 @@ func initMysqlDB() {
|
|||||||
newLogger := logger.New(
|
newLogger := logger.New(
|
||||||
Writer{},
|
Writer{},
|
||||||
logger.Config{
|
logger.Config{
|
||||||
SlowThreshold: 200 * time.Millisecond, // Slow SQL threshold
|
SlowThreshold: time.Duration(config.Config.Mysql.SlowThreshold) * time.Millisecond, // Slow SQL threshold
|
||||||
LogLevel: logger.Warn, // Log level
|
LogLevel: logger.LogLevel(config.Config.Mysql.LogLevel), // Log level
|
||||||
IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
|
IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
|
||||||
Colorful: true, // Disable color
|
Colorful: true, // Disable color
|
||||||
},
|
},
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -24,3 +25,9 @@ func PrometheusHandler() gin.HandlerFunc {
|
|||||||
h.ServeHTTP(c.Writer, c.Request)
|
h.ServeHTTP(c.Writer, c.Request)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PromeInc(counter prometheus.Counter) {
|
||||||
|
if config.Config.Prometheus.Enable {
|
||||||
|
counter.Inc()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user