From e9e831212ea664c841a2233399849507a7ec7f28 Mon Sep 17 00:00:00 2001 From: "Xinwei Xiong (cubxxw)" <3293172751nss@gmail.com> Date: Mon, 8 Jan 2024 21:48:24 +0800 Subject: [PATCH] feat: support openim prom enbels Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> --- .github/workflows/openimci.yml | 7 +++ cmd/openim-api/main.go | 4 +- pkg/common/prommetrics/gin_api.go | 4 +- pkg/common/prommetrics/prommetrics.go | 6 +-- scripts/.spelling_failures | 3 +- scripts/make-rules/common.mk | 2 +- test/typecheck/typecheck.go | 6 ++- test/wrktest.sh | 2 +- tools/up35/pkg/convert.go | 70 +++++++++++++-------------- tools/up35/pkg/pkg.go | 16 +++--- 10 files changed, 66 insertions(+), 54 deletions(-) diff --git a/.github/workflows/openimci.yml b/.github/workflows/openimci.yml index 00339110c..a0566f3d5 100644 --- a/.github/workflows/openimci.yml +++ b/.github/workflows/openimci.yml @@ -18,6 +18,7 @@ on: push: branches: - main + - release-* paths-ignore: - "docs/**" - "README.md" @@ -26,6 +27,7 @@ on: pull_request: branches: - main + - release-* paths-ignore: - "README.md" - "README_zh-CN.md" @@ -81,6 +83,11 @@ jobs: - name: Build Source run: sudo make build + - name: Build multiarch PLATFORMS + if: startsWith(github.ref, 'refs/heads/release-') + run: | + sudo make multiarch + - name: Cleanup Build run: sudo make clean diff --git a/cmd/openim-api/main.go b/cmd/openim-api/main.go index cb9b09802..f0b62e31f 100644 --- a/cmd/openim-api/main.go +++ b/cmd/openim-api/main.go @@ -35,7 +35,7 @@ import ( "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/db/cache" 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" ) @@ -88,7 +88,7 @@ func run(port int, proPort int) error { log.ZInfo(context.Background(), "api register public config to discov success") router := api.NewGinRouter(client, rdb) 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.Use(router) } diff --git a/pkg/common/prommetrics/gin_api.go b/pkg/common/prommetrics/gin_api.go index c5ef612a2..9f2e4c99d 100644 --- a/pkg/common/prommetrics/gin_api.go +++ b/pkg/common/prommetrics/gin_api.go @@ -14,14 +14,14 @@ 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"} ApiCustomCnt.MetricCollector.(*prometheus.CounterVec).With(labels).Inc(). */ var ( - ApiCustomCnt = &ginProm.Metric{ + ApiCustomCnt = &ginprom.Metric{ Name: "custom_total", Description: "Custom counter events.", Type: "counter_vec", diff --git a/pkg/common/prommetrics/prommetrics.go b/pkg/common/prommetrics/prommetrics.go index 41719dd2d..b7c5e07f4 100644 --- a/pkg/common/prommetrics/prommetrics.go +++ b/pkg/common/prommetrics/prommetrics.go @@ -15,7 +15,7 @@ package prommetrics 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/collectors" @@ -23,10 +23,10 @@ import ( "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() - grpcMetrics := grpc_prometheus.NewServerMetrics() + grpcMetrics := gp.NewServerMetrics() grpcMetrics.EnableHandlingTimeHistogram() cusMetrics = append(cusMetrics, grpcMetrics, collectors.NewGoCollector()) reg.MustRegister(cusMetrics...) diff --git a/scripts/.spelling_failures b/scripts/.spelling_failures index 5c29b5992..2f102c450 100644 --- a/scripts/.spelling_failures +++ b/scripts/.spelling_failures @@ -3,4 +3,5 @@ go.mod go.sum third_party/ translations/ -log \ No newline at end of file +log +.golangci.yml \ No newline at end of file diff --git a/scripts/make-rules/common.mk b/scripts/make-rules/common.mk index c56f9f071..5230580da 100644 --- a/scripts/make-rules/common.mk +++ b/scripts/make-rules/common.mk @@ -100,7 +100,7 @@ endif # The OS must be linux when building docker images # PLATFORMS ?= linux_amd64 linux_arm64 # 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 ifeq ($(origin PLATFORM), undefined) diff --git a/test/typecheck/typecheck.go b/test/typecheck/typecheck.go index 83e3c63ed..eadc57c98 100644 --- a/test/typecheck/typecheck.go +++ b/test/typecheck/typecheck.go @@ -47,23 +47,27 @@ var ( crossPlatforms = []string{ "linux/amd64", "windows/386", "darwin/amd64", "darwin/arm64", - "linux/arm", "linux/386", + "linux/386", "windows/amd64", "linux/arm64", "linux/ppc64le", "linux/s390x", "windows/arm64", } + // "linux/arm", + // directories we always ignore standardIgnoreDirs = []string{ // Staging code is symlinked from vendor/k8s.io, and uses import // paths as if it were inside of vendor/. It fails typechecking // inside of staging/, but works when typechecked as part of vendor/. "staging", + "components", // OS-specific vendor code tends to be imported by OS-specific // packages. We recursively typecheck imported vendored packages for // each OS, but don't typecheck everything for every OS. "vendor", "_output", + "OpenIMSKD/tools", // This is a weird one. /testdata/ is *mostly* ignored by Go, // and this translates to kubernetes/vendor not working. // edit/record.go doesn't compile without gopkg.in/yaml.v2 diff --git a/test/wrktest.sh b/test/wrktest.sh index 01617676a..a97ebf043 100755 --- a/test/wrktest.sh +++ b/test/wrktest.sh @@ -45,7 +45,7 @@ openim::wrk::setup() { cmd="wrk -t${threads} -d${duration} -T30s --latency" } -# Print usage infomation +# Print usage openim::wrk::usage() { cat << EOF diff --git a/tools/up35/pkg/convert.go b/tools/up35/pkg/convert.go index 24d3a2781..53ada0e04 100644 --- a/tools/up35/pkg/convert.go +++ b/tools/up35/pkg/convert.go @@ -17,16 +17,16 @@ package pkg import ( "time" - 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" - 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" + 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" + 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" ) type convert struct{} -func (convert) User(v mysqlModel.UserModel) mongoModel.UserModel { - return mongoModel.UserModel{ +func (convert) User(v mysqlmodel.UserModel) mongomodel.UserModel { + return mongomodel.UserModel{ UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, @@ -37,8 +37,8 @@ func (convert) User(v mysqlModel.UserModel) mongoModel.UserModel { } } -func (convert) Friend(v mysqlModel.FriendModel) mongoModel.FriendModel { - return mongoModel.FriendModel{ +func (convert) Friend(v mysqlmodel.FriendModel) mongomodel.FriendModel { + return mongomodel.FriendModel{ OwnerUserID: v.OwnerUserID, FriendUserID: v.FriendUserID, Remark: v.Remark, @@ -49,8 +49,8 @@ func (convert) Friend(v mysqlModel.FriendModel) mongoModel.FriendModel { } } -func (convert) FriendRequest(v mysqlModel.FriendRequestModel) mongoModel.FriendRequestModel { - return mongoModel.FriendRequestModel{ +func (convert) FriendRequest(v mysqlmodel.FriendRequestModel) mongomodel.FriendRequestModel { + return mongomodel.FriendRequestModel{ FromUserID: v.FromUserID, ToUserID: v.ToUserID, HandleResult: v.HandleResult, @@ -63,8 +63,8 @@ func (convert) FriendRequest(v mysqlModel.FriendRequestModel) mongoModel.FriendR } } -func (convert) Black(v mysqlModel.BlackModel) mongoModel.BlackModel { - return mongoModel.BlackModel{ +func (convert) Black(v mysqlmodel.BlackModel) mongomodel.BlackModel { + return mongomodel.BlackModel{ OwnerUserID: v.OwnerUserID, BlockUserID: v.BlockUserID, CreateTime: v.CreateTime, @@ -74,8 +74,8 @@ func (convert) Black(v mysqlModel.BlackModel) mongoModel.BlackModel { } } -func (convert) Group(v mysqlModel.GroupModel) mongoModel.GroupModel { - return mongoModel.GroupModel{ +func (convert) Group(v mysqlmodel.GroupModel) mongomodel.GroupModel { + return mongomodel.GroupModel{ GroupID: v.GroupID, GroupName: v.GroupName, Notification: v.Notification, @@ -94,8 +94,8 @@ func (convert) Group(v mysqlModel.GroupModel) mongoModel.GroupModel { } } -func (convert) GroupMember(v mysqlModel.GroupMemberModel) mongoModel.GroupMemberModel { - return mongoModel.GroupMemberModel{ +func (convert) GroupMember(v mysqlmodel.GroupMemberModel) mongomodel.GroupMemberModel { + return mongomodel.GroupMemberModel{ GroupID: v.GroupID, UserID: v.UserID, Nickname: v.Nickname, @@ -110,8 +110,8 @@ func (convert) GroupMember(v mysqlModel.GroupMemberModel) mongoModel.GroupMember } } -func (convert) GroupRequest(v mysqlModel.GroupRequestModel) mongoModel.GroupRequestModel { - return mongoModel.GroupRequestModel{ +func (convert) GroupRequest(v mysqlmodel.GroupRequestModel) mongomodel.GroupRequestModel { + return mongomodel.GroupRequestModel{ UserID: v.UserID, GroupID: v.GroupID, HandleResult: v.HandleResult, @@ -126,8 +126,8 @@ func (convert) GroupRequest(v mysqlModel.GroupRequestModel) mongoModel.GroupRequ } } -func (convert) Conversation(v mysqlModel.ConversationModel) mongoModel.ConversationModel { - return mongoModel.ConversationModel{ +func (convert) Conversation(v mysqlmodel.ConversationModel) mongomodel.ConversationModel { + return mongomodel.ConversationModel{ OwnerUserID: v.OwnerUserID, ConversationID: v.ConversationID, 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 { - return func(v mysqlModel.ObjectModel) mongoModel.ObjectModel { - return mongoModel.ObjectModel{ +func (convert) Object(engine string) func(v mysqlmodel.ObjectModel) mongomodel.ObjectModel { + return func(v mysqlmodel.ObjectModel) mongomodel.ObjectModel { + return mongomodel.ObjectModel{ Name: v.Name, UserID: v.UserID, 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 { - return mongoModel.LogModel{ +func (convert) Log(v mysqlmodel.Log) mongomodel.LogModel { + return mongomodel.LogModel{ LogID: v.LogID, Platform: v.Platform, UserID: v.UserID, @@ -179,8 +179,8 @@ func (convert) Log(v mysqlModel.Log) mongoModel.LogModel { } } -func (convert) SignalModel(v mysqlModelRtc.SignalModel) mongoModelRtc.SignalModel { - return mongoModelRtc.SignalModel{ +func (convert) SignalModel(v mysqlmodelrtc.SignalModel) mongomodelrtc.SignalModel { + return mongomodelrtc.SignalModel{ SID: v.SID, InviterUserID: v.InviterUserID, CustomData: v.CustomData, @@ -202,8 +202,8 @@ func (convert) SignalModel(v mysqlModelRtc.SignalModel) mongoModelRtc.SignalMode } } -func (convert) SignalInvitationModel(v mysqlModelRtc.SignalInvitationModel) mongoModelRtc.SignalInvitationModel { - return mongoModelRtc.SignalInvitationModel{ +func (convert) SignalInvitationModel(v mysqlmodelrtc.SignalInvitationModel) mongomodelrtc.SignalInvitationModel { + return mongomodelrtc.SignalInvitationModel{ SID: v.SID, UserID: v.UserID, Status: v.Status, @@ -212,8 +212,8 @@ func (convert) SignalInvitationModel(v mysqlModelRtc.SignalInvitationModel) mong } } -func (convert) Meeting(v mysqlModelRtc.MeetingInfo) mongoModelRtc.MeetingInfo { - return mongoModelRtc.MeetingInfo{ +func (convert) Meeting(v mysqlmodelrtc.MeetingInfo) mongomodelrtc.MeetingInfo { + return mongomodelrtc.MeetingInfo{ RoomID: v.RoomID, MeetingName: v.MeetingName, HostUserID: v.HostUserID, @@ -225,16 +225,16 @@ func (convert) Meeting(v mysqlModelRtc.MeetingInfo) mongoModelRtc.MeetingInfo { } } -func (convert) MeetingInvitationInfo(v mysqlModelRtc.MeetingInvitationInfo) mongoModelRtc.MeetingInvitationInfo { - return mongoModelRtc.MeetingInvitationInfo{ +func (convert) MeetingInvitationInfo(v mysqlmodelrtc.MeetingInvitationInfo) mongomodelrtc.MeetingInvitationInfo { + return mongomodelrtc.MeetingInvitationInfo{ RoomID: v.RoomID, UserID: v.UserID, CreateTime: v.CreateTime, } } -func (convert) MeetingVideoRecord(v mysqlModelRtc.MeetingVideoRecord) mongoModelRtc.MeetingVideoRecord { - return mongoModelRtc.MeetingVideoRecord{ +func (convert) MeetingVideoRecord(v mysqlmodelrtc.MeetingVideoRecord) mongomodelrtc.MeetingVideoRecord { + return mongomodelrtc.MeetingVideoRecord{ RoomID: v.RoomID, FileURL: v.FileURL, CreateTime: v.CreateTime, diff --git a/tools/up35/pkg/pkg.go b/tools/up35/pkg/pkg.go index 6d16817ec..b7e7c01f5 100644 --- a/tools/up35/pkg/pkg.go +++ b/tools/up35/pkg/pkg.go @@ -29,14 +29,14 @@ import ( "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" - gormMysql "gorm.io/driver/mysql" + gormmysql "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "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/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 ( @@ -56,7 +56,7 @@ func InitConfig(path string) error { func GetMysql() (*gorm.DB, error) { 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) - 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) { @@ -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.NewLogMongo, c.Log) }, - 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.NewMeeting, c.Meeting) }, - 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.NewSignal, c.SignalModel) }, + 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.NewMeetingInvitation, c.MeetingInvitationInfo) }, + func() error { return NewTask(mysqlDB, mongoDB, rtcmgo.NewMeetingRecord, c.MeetingVideoRecord) }, ) for _, task := range tasks {