feat: support openim prom enbels

Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>
pull/1745/head
Xinwei Xiong (cubxxw) 2 years ago
parent 535ae19f7a
commit e9e831212e

@ -18,6 +18,7 @@ on:
push: push:
branches: branches:
- main - main
- release-*
paths-ignore: paths-ignore:
- "docs/**" - "docs/**"
- "README.md" - "README.md"
@ -26,6 +27,7 @@ on:
pull_request: pull_request:
branches: branches:
- main - main
- release-*
paths-ignore: paths-ignore:
- "README.md" - "README.md"
- "README_zh-CN.md" - "README_zh-CN.md"
@ -81,6 +83,11 @@ jobs:
- name: Build Source - name: Build Source
run: sudo make build run: sudo make build
- name: Build multiarch PLATFORMS
if: startsWith(github.ref, 'refs/heads/release-')
run: |
sudo make multiarch
- name: Cleanup Build - name: Cleanup Build
run: sudo make clean run: sudo make clean

@ -35,7 +35,7 @@ import (
"github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/cache" "github.com/openimsdk/open-im-server/v3/pkg/common/db/cache"
kdisc "github.com/openimsdk/open-im-server/v3/pkg/common/discoveryregister" kdisc "github.com/openimsdk/open-im-server/v3/pkg/common/discoveryregister"
ginProm "github.com/openimsdk/open-im-server/v3/pkg/common/ginprometheus" ginprom "github.com/openimsdk/open-im-server/v3/pkg/common/ginprometheus"
"github.com/openimsdk/open-im-server/v3/pkg/common/prommetrics" "github.com/openimsdk/open-im-server/v3/pkg/common/prommetrics"
) )
@ -88,7 +88,7 @@ func run(port int, proPort int) error {
log.ZInfo(context.Background(), "api register public config to discov success") log.ZInfo(context.Background(), "api register public config to discov success")
router := api.NewGinRouter(client, rdb) router := api.NewGinRouter(client, rdb)
if config.Config.Prometheus.Enable { if config.Config.Prometheus.Enable {
p := ginProm.NewPrometheus("app", prommetrics.GetGinCusMetrics("Api")) p := ginprom.NewPrometheus("app", prommetrics.GetGinCusMetrics("Api"))
p.SetListenAddress(fmt.Sprintf(":%d", proPort)) p.SetListenAddress(fmt.Sprintf(":%d", proPort))
p.Use(router) p.Use(router)
} }

@ -14,14 +14,14 @@
package prommetrics package prommetrics
import ginProm "github.com/openimsdk/open-im-server/v3/pkg/common/ginprometheus" import ginprom "github.com/openimsdk/open-im-server/v3/pkg/common/ginprometheus"
/* /*
labels := prometheus.Labels{"label_one": "any", "label_two": "value"} labels := prometheus.Labels{"label_one": "any", "label_two": "value"}
ApiCustomCnt.MetricCollector.(*prometheus.CounterVec).With(labels).Inc(). ApiCustomCnt.MetricCollector.(*prometheus.CounterVec).With(labels).Inc().
*/ */
var ( var (
ApiCustomCnt = &ginProm.Metric{ ApiCustomCnt = &ginprom.Metric{
Name: "custom_total", Name: "custom_total",
Description: "Custom counter events.", Description: "Custom counter events.",
Type: "counter_vec", Type: "counter_vec",

@ -15,7 +15,7 @@
package prommetrics package prommetrics
import ( import (
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" gp "github.com/grpc-ecosystem/go-grpc-prometheus"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors" "github.com/prometheus/client_golang/prometheus/collectors"
@ -23,10 +23,10 @@ import (
"github.com/openimsdk/open-im-server/v3/pkg/common/ginprometheus" "github.com/openimsdk/open-im-server/v3/pkg/common/ginprometheus"
) )
func NewGrpcPromObj(cusMetrics []prometheus.Collector) (*prometheus.Registry, *grpc_prometheus.ServerMetrics, error) { func NewGrpcPromObj(cusMetrics []prometheus.Collector) (*prometheus.Registry, *gp.ServerMetrics, error) {
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
reg := prometheus.NewRegistry() reg := prometheus.NewRegistry()
grpcMetrics := grpc_prometheus.NewServerMetrics() grpcMetrics := gp.NewServerMetrics()
grpcMetrics.EnableHandlingTimeHistogram() grpcMetrics.EnableHandlingTimeHistogram()
cusMetrics = append(cusMetrics, grpcMetrics, collectors.NewGoCollector()) cusMetrics = append(cusMetrics, grpcMetrics, collectors.NewGoCollector())
reg.MustRegister(cusMetrics...) reg.MustRegister(cusMetrics...)

@ -4,3 +4,4 @@ go.sum
third_party/ third_party/
translations/ translations/
log log
.golangci.yml

@ -100,7 +100,7 @@ endif
# The OS must be linux when building docker images # The OS must be linux when building docker images
# PLATFORMS ?= linux_amd64 linux_arm64 # PLATFORMS ?= linux_amd64 linux_arm64
# The OS can be linux/windows/darwin when building binaries # The OS can be linux/windows/darwin when building binaries
PLATFORMS ?= linux_s390x linux_mips64 linux_mips64le darwin_amd64 windows_amd64 linux_amd64 linux_arm64 linux_ppc64le # wasip1_wasm PLATFORMS ?= linux_s390x linux_mips64 linux_mips64le darwin_amd64 darwin_arm64 windows_amd64 linux_amd64 linux_arm64 linux_ppc64le # wasip1_wasm
# set a specific PLATFORM, defaults to the host platform # set a specific PLATFORM, defaults to the host platform
ifeq ($(origin PLATFORM), undefined) ifeq ($(origin PLATFORM), undefined)

@ -47,23 +47,27 @@ var (
crossPlatforms = []string{ crossPlatforms = []string{
"linux/amd64", "windows/386", "linux/amd64", "windows/386",
"darwin/amd64", "darwin/arm64", "darwin/amd64", "darwin/arm64",
"linux/arm", "linux/386", "linux/386",
"windows/amd64", "linux/arm64", "windows/amd64", "linux/arm64",
"linux/ppc64le", "linux/s390x", "linux/ppc64le", "linux/s390x",
"windows/arm64", "windows/arm64",
} }
// "linux/arm",
// directories we always ignore // directories we always ignore
standardIgnoreDirs = []string{ standardIgnoreDirs = []string{
// Staging code is symlinked from vendor/k8s.io, and uses import // Staging code is symlinked from vendor/k8s.io, and uses import
// paths as if it were inside of vendor/. It fails typechecking // paths as if it were inside of vendor/. It fails typechecking
// inside of staging/, but works when typechecked as part of vendor/. // inside of staging/, but works when typechecked as part of vendor/.
"staging", "staging",
"components",
// OS-specific vendor code tends to be imported by OS-specific // OS-specific vendor code tends to be imported by OS-specific
// packages. We recursively typecheck imported vendored packages for // packages. We recursively typecheck imported vendored packages for
// each OS, but don't typecheck everything for every OS. // each OS, but don't typecheck everything for every OS.
"vendor", "vendor",
"_output", "_output",
"OpenIMSKD/tools",
// This is a weird one. /testdata/ is *mostly* ignored by Go, // This is a weird one. /testdata/ is *mostly* ignored by Go,
// and this translates to kubernetes/vendor not working. // and this translates to kubernetes/vendor not working.
// edit/record.go doesn't compile without gopkg.in/yaml.v2 // edit/record.go doesn't compile without gopkg.in/yaml.v2

@ -45,7 +45,7 @@ openim::wrk::setup() {
cmd="wrk -t${threads} -d${duration} -T30s --latency" cmd="wrk -t${threads} -d${duration} -T30s --latency"
} }
# Print usage infomation # Print usage
openim::wrk::usage() { openim::wrk::usage() {
cat << EOF cat << EOF

@ -17,16 +17,16 @@ package pkg
import ( import (
"time" "time"
mongoModel "github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation" mongomodel "github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
mysqlModel "github.com/openimsdk/open-im-server/v3/tools/data-conversion/openim/mysql/v3" mysqlmodel "github.com/openimsdk/open-im-server/v3/tools/data-conversion/openim/mysql/v3"
mongoModelRtc "github.com/openimsdk/open-im-server/v3/tools/up35/pkg/internal/rtc/mongo/table" mongomodelrtc "github.com/openimsdk/open-im-server/v3/tools/up35/pkg/internal/rtc/mongo/table"
mysqlModelRtc "github.com/openimsdk/open-im-server/v3/tools/up35/pkg/internal/rtc/mysql" mysqlmodelrtc "github.com/openimsdk/open-im-server/v3/tools/up35/pkg/internal/rtc/mysql"
) )
type convert struct{} type convert struct{}
func (convert) User(v mysqlModel.UserModel) mongoModel.UserModel { func (convert) User(v mysqlmodel.UserModel) mongomodel.UserModel {
return mongoModel.UserModel{ return mongomodel.UserModel{
UserID: v.UserID, UserID: v.UserID,
Nickname: v.Nickname, Nickname: v.Nickname,
FaceURL: v.FaceURL, FaceURL: v.FaceURL,
@ -37,8 +37,8 @@ func (convert) User(v mysqlModel.UserModel) mongoModel.UserModel {
} }
} }
func (convert) Friend(v mysqlModel.FriendModel) mongoModel.FriendModel { func (convert) Friend(v mysqlmodel.FriendModel) mongomodel.FriendModel {
return mongoModel.FriendModel{ return mongomodel.FriendModel{
OwnerUserID: v.OwnerUserID, OwnerUserID: v.OwnerUserID,
FriendUserID: v.FriendUserID, FriendUserID: v.FriendUserID,
Remark: v.Remark, Remark: v.Remark,
@ -49,8 +49,8 @@ func (convert) Friend(v mysqlModel.FriendModel) mongoModel.FriendModel {
} }
} }
func (convert) FriendRequest(v mysqlModel.FriendRequestModel) mongoModel.FriendRequestModel { func (convert) FriendRequest(v mysqlmodel.FriendRequestModel) mongomodel.FriendRequestModel {
return mongoModel.FriendRequestModel{ return mongomodel.FriendRequestModel{
FromUserID: v.FromUserID, FromUserID: v.FromUserID,
ToUserID: v.ToUserID, ToUserID: v.ToUserID,
HandleResult: v.HandleResult, HandleResult: v.HandleResult,
@ -63,8 +63,8 @@ func (convert) FriendRequest(v mysqlModel.FriendRequestModel) mongoModel.FriendR
} }
} }
func (convert) Black(v mysqlModel.BlackModel) mongoModel.BlackModel { func (convert) Black(v mysqlmodel.BlackModel) mongomodel.BlackModel {
return mongoModel.BlackModel{ return mongomodel.BlackModel{
OwnerUserID: v.OwnerUserID, OwnerUserID: v.OwnerUserID,
BlockUserID: v.BlockUserID, BlockUserID: v.BlockUserID,
CreateTime: v.CreateTime, CreateTime: v.CreateTime,
@ -74,8 +74,8 @@ func (convert) Black(v mysqlModel.BlackModel) mongoModel.BlackModel {
} }
} }
func (convert) Group(v mysqlModel.GroupModel) mongoModel.GroupModel { func (convert) Group(v mysqlmodel.GroupModel) mongomodel.GroupModel {
return mongoModel.GroupModel{ return mongomodel.GroupModel{
GroupID: v.GroupID, GroupID: v.GroupID,
GroupName: v.GroupName, GroupName: v.GroupName,
Notification: v.Notification, Notification: v.Notification,
@ -94,8 +94,8 @@ func (convert) Group(v mysqlModel.GroupModel) mongoModel.GroupModel {
} }
} }
func (convert) GroupMember(v mysqlModel.GroupMemberModel) mongoModel.GroupMemberModel { func (convert) GroupMember(v mysqlmodel.GroupMemberModel) mongomodel.GroupMemberModel {
return mongoModel.GroupMemberModel{ return mongomodel.GroupMemberModel{
GroupID: v.GroupID, GroupID: v.GroupID,
UserID: v.UserID, UserID: v.UserID,
Nickname: v.Nickname, Nickname: v.Nickname,
@ -110,8 +110,8 @@ func (convert) GroupMember(v mysqlModel.GroupMemberModel) mongoModel.GroupMember
} }
} }
func (convert) GroupRequest(v mysqlModel.GroupRequestModel) mongoModel.GroupRequestModel { func (convert) GroupRequest(v mysqlmodel.GroupRequestModel) mongomodel.GroupRequestModel {
return mongoModel.GroupRequestModel{ return mongomodel.GroupRequestModel{
UserID: v.UserID, UserID: v.UserID,
GroupID: v.GroupID, GroupID: v.GroupID,
HandleResult: v.HandleResult, HandleResult: v.HandleResult,
@ -126,8 +126,8 @@ func (convert) GroupRequest(v mysqlModel.GroupRequestModel) mongoModel.GroupRequ
} }
} }
func (convert) Conversation(v mysqlModel.ConversationModel) mongoModel.ConversationModel { func (convert) Conversation(v mysqlmodel.ConversationModel) mongomodel.ConversationModel {
return mongoModel.ConversationModel{ return mongomodel.ConversationModel{
OwnerUserID: v.OwnerUserID, OwnerUserID: v.OwnerUserID,
ConversationID: v.ConversationID, ConversationID: v.ConversationID,
ConversationType: v.ConversationType, ConversationType: v.ConversationType,
@ -149,9 +149,9 @@ func (convert) Conversation(v mysqlModel.ConversationModel) mongoModel.Conversat
} }
} }
func (convert) Object(engine string) func(v mysqlModel.ObjectModel) mongoModel.ObjectModel { func (convert) Object(engine string) func(v mysqlmodel.ObjectModel) mongomodel.ObjectModel {
return func(v mysqlModel.ObjectModel) mongoModel.ObjectModel { return func(v mysqlmodel.ObjectModel) mongomodel.ObjectModel {
return mongoModel.ObjectModel{ return mongomodel.ObjectModel{
Name: v.Name, Name: v.Name,
UserID: v.UserID, UserID: v.UserID,
Hash: v.Hash, Hash: v.Hash,
@ -165,8 +165,8 @@ func (convert) Object(engine string) func(v mysqlModel.ObjectModel) mongoModel.O
} }
} }
func (convert) Log(v mysqlModel.Log) mongoModel.LogModel { func (convert) Log(v mysqlmodel.Log) mongomodel.LogModel {
return mongoModel.LogModel{ return mongomodel.LogModel{
LogID: v.LogID, LogID: v.LogID,
Platform: v.Platform, Platform: v.Platform,
UserID: v.UserID, UserID: v.UserID,
@ -179,8 +179,8 @@ func (convert) Log(v mysqlModel.Log) mongoModel.LogModel {
} }
} }
func (convert) SignalModel(v mysqlModelRtc.SignalModel) mongoModelRtc.SignalModel { func (convert) SignalModel(v mysqlmodelrtc.SignalModel) mongomodelrtc.SignalModel {
return mongoModelRtc.SignalModel{ return mongomodelrtc.SignalModel{
SID: v.SID, SID: v.SID,
InviterUserID: v.InviterUserID, InviterUserID: v.InviterUserID,
CustomData: v.CustomData, CustomData: v.CustomData,
@ -202,8 +202,8 @@ func (convert) SignalModel(v mysqlModelRtc.SignalModel) mongoModelRtc.SignalMode
} }
} }
func (convert) SignalInvitationModel(v mysqlModelRtc.SignalInvitationModel) mongoModelRtc.SignalInvitationModel { func (convert) SignalInvitationModel(v mysqlmodelrtc.SignalInvitationModel) mongomodelrtc.SignalInvitationModel {
return mongoModelRtc.SignalInvitationModel{ return mongomodelrtc.SignalInvitationModel{
SID: v.SID, SID: v.SID,
UserID: v.UserID, UserID: v.UserID,
Status: v.Status, Status: v.Status,
@ -212,8 +212,8 @@ func (convert) SignalInvitationModel(v mysqlModelRtc.SignalInvitationModel) mong
} }
} }
func (convert) Meeting(v mysqlModelRtc.MeetingInfo) mongoModelRtc.MeetingInfo { func (convert) Meeting(v mysqlmodelrtc.MeetingInfo) mongomodelrtc.MeetingInfo {
return mongoModelRtc.MeetingInfo{ return mongomodelrtc.MeetingInfo{
RoomID: v.RoomID, RoomID: v.RoomID,
MeetingName: v.MeetingName, MeetingName: v.MeetingName,
HostUserID: v.HostUserID, HostUserID: v.HostUserID,
@ -225,16 +225,16 @@ func (convert) Meeting(v mysqlModelRtc.MeetingInfo) mongoModelRtc.MeetingInfo {
} }
} }
func (convert) MeetingInvitationInfo(v mysqlModelRtc.MeetingInvitationInfo) mongoModelRtc.MeetingInvitationInfo { func (convert) MeetingInvitationInfo(v mysqlmodelrtc.MeetingInvitationInfo) mongomodelrtc.MeetingInvitationInfo {
return mongoModelRtc.MeetingInvitationInfo{ return mongomodelrtc.MeetingInvitationInfo{
RoomID: v.RoomID, RoomID: v.RoomID,
UserID: v.UserID, UserID: v.UserID,
CreateTime: v.CreateTime, CreateTime: v.CreateTime,
} }
} }
func (convert) MeetingVideoRecord(v mysqlModelRtc.MeetingVideoRecord) mongoModelRtc.MeetingVideoRecord { func (convert) MeetingVideoRecord(v mysqlmodelrtc.MeetingVideoRecord) mongomodelrtc.MeetingVideoRecord {
return mongoModelRtc.MeetingVideoRecord{ return mongomodelrtc.MeetingVideoRecord{
RoomID: v.RoomID, RoomID: v.RoomID,
FileURL: v.FileURL, FileURL: v.FileURL,
CreateTime: v.CreateTime, CreateTime: v.CreateTime,

@ -29,14 +29,14 @@ import (
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
gormMysql "gorm.io/driver/mysql" gormmysql "gorm.io/driver/mysql"
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/logger" "gorm.io/gorm/logger"
"github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/mgo" "github.com/openimsdk/open-im-server/v3/pkg/common/db/mgo"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/unrelation" "github.com/openimsdk/open-im-server/v3/pkg/common/db/unrelation"
rtcMgo "github.com/openimsdk/open-im-server/v3/tools/up35/pkg/internal/rtc/mongo/mgo" rtcmgo "github.com/openimsdk/open-im-server/v3/tools/up35/pkg/internal/rtc/mongo/mgo"
) )
const ( const (
@ -56,7 +56,7 @@ func InitConfig(path string) error {
func GetMysql() (*gorm.DB, error) { func GetMysql() (*gorm.DB, error) {
conf := config.Config.Mysql conf := config.Config.Mysql
mysqlDSN := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", conf.Username, conf.Password, conf.Address[0], conf.Database) mysqlDSN := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", conf.Username, conf.Password, conf.Address[0], conf.Database)
return gorm.Open(gormMysql.Open(mysqlDSN), &gorm.Config{Logger: logger.Discard}) return gorm.Open(gormmysql.Open(mysqlDSN), &gorm.Config{Logger: logger.Discard})
} }
func GetMongo() (*mongo.Database, error) { func GetMongo() (*mongo.Database, error) {
@ -116,11 +116,11 @@ func Main(path string) error {
func() error { return NewTask(mysqlDB, mongoDB, mgo.NewS3Mongo, c.Object(config.Config.Object.Enable)) }, func() error { return NewTask(mysqlDB, mongoDB, mgo.NewS3Mongo, c.Object(config.Config.Object.Enable)) },
func() error { return NewTask(mysqlDB, mongoDB, mgo.NewLogMongo, c.Log) }, func() error { return NewTask(mysqlDB, mongoDB, mgo.NewLogMongo, c.Log) },
func() error { return NewTask(mysqlDB, mongoDB, rtcMgo.NewSignal, c.SignalModel) }, func() error { return NewTask(mysqlDB, mongoDB, rtcmgo.NewSignal, c.SignalModel) },
func() error { return NewTask(mysqlDB, mongoDB, rtcMgo.NewSignalInvitation, c.SignalInvitationModel) }, func() error { return NewTask(mysqlDB, mongoDB, rtcmgo.NewSignalInvitation, c.SignalInvitationModel) },
func() error { return NewTask(mysqlDB, mongoDB, rtcMgo.NewMeeting, c.Meeting) }, func() error { return NewTask(mysqlDB, mongoDB, rtcmgo.NewMeeting, c.Meeting) },
func() error { return NewTask(mysqlDB, mongoDB, rtcMgo.NewMeetingInvitation, c.MeetingInvitationInfo) }, func() error { return NewTask(mysqlDB, mongoDB, rtcmgo.NewMeetingInvitation, c.MeetingInvitationInfo) },
func() error { return NewTask(mysqlDB, mongoDB, rtcMgo.NewMeetingRecord, c.MeetingVideoRecord) }, func() error { return NewTask(mysqlDB, mongoDB, rtcmgo.NewMeetingRecord, c.MeetingVideoRecord) },
) )
for _, task := range tasks { for _, task := range tasks {

Loading…
Cancel
Save