diff --git a/cmd/openim-api/main.go b/cmd/openim-api/main.go index b232c3762..e647b9cbc 100644 --- a/cmd/openim-api/main.go +++ b/cmd/openim-api/main.go @@ -44,11 +44,11 @@ func main() { } } -func run(port int) error { +func run(port int, proPort int) error { log.ZInfo(context.Background(), "Openim api port:", "port", port) - if port == 0 { - err := "port is empty" + if port == 0 || proPort == 0 { + err := "port or proPort is empty:" + strconv.Itoa(port) + "," + strconv.Itoa(proPort) log.ZError(context.Background(), err, nil) return fmt.Errorf(err) @@ -85,7 +85,8 @@ func run(port int) error { router := api.NewGinRouter(client, rdb) ////////////////////////////// p := ginProm.NewPrometheus("app", prom_metrics.G_api_metrics.MetricList()) - p.SetListenAddress(":90") + + p.SetListenAddress(fmt.Sprintf(":%d", proPort)) p.Use(router) ///////////////////////////////// log.ZInfo(context.Background(), "api init router success") diff --git a/config/config.yaml b/config/config.yaml index df242b326..1e72838bd 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -384,6 +384,7 @@ callback: # The number of ports needs to be consistent with msg_transfer_service_num in script/path_info.sh prometheus: enable: true + apiPrometheusPort: [20100] userPrometheusPort: [ 20110 ] friendPrometheusPort: [ 20120 ] messagePrometheusPort: [ 20130 ] diff --git a/deployments/templates/openim.yaml b/deployments/templates/openim.yaml index ff0121062..9cc335242 100644 --- a/deployments/templates/openim.yaml +++ b/deployments/templates/openim.yaml @@ -383,6 +383,7 @@ callback: # The number of ports needs to be consistent with msg_transfer_service_num in script/path_info.sh prometheus: enable: ${PROMETHEUS_ENABLE} + apiPrometheusPort: [${API_PROM_PORT}] userPrometheusPort: [ ${USER_PROM_PORT} ] friendPrometheusPort: [ ${FRIEND_PROM_PORT} ] messagePrometheusPort: [ ${MESSAGE_PROM_PORT} ] diff --git a/internal/msggateway/hub_server.go b/internal/msggateway/hub_server.go index ae12c04a3..e3b83ed11 100644 --- a/internal/msggateway/hub_server.go +++ b/internal/msggateway/hub_server.go @@ -69,9 +69,10 @@ func (s *Server) SetLongConnServer(LongConnServer LongConnServer) { s.LongConnServer = LongConnServer } -func NewServer(rpcPort int, longConnServer LongConnServer) *Server { +func NewServer(rpcPort int, proPort int, longConnServer LongConnServer) *Server { return &Server{ rpcPort: rpcPort, + prometheusPort: proPort, LongConnServer: longConnServer, pushTerminal: []int{constant.IOSPlatformID, constant.AndroidPlatformID}, } diff --git a/internal/msggateway/init.go b/internal/msggateway/init.go index ce63fb21a..94f1b2011 100644 --- a/internal/msggateway/init.go +++ b/internal/msggateway/init.go @@ -41,7 +41,7 @@ func RunWsAndServer(rpcPort, wsPort, prometheusPort int) error { if err != nil { return err } - hubServer := NewServer(rpcPort, longServer) + hubServer := NewServer(rpcPort, prometheusPort, longServer) go func() { err := hubServer.Start() if err != nil { diff --git a/pkg/common/cmd/api.go b/pkg/common/cmd/api.go index 7ce872fac..f031eaadb 100644 --- a/pkg/common/cmd/api.go +++ b/pkg/common/cmd/api.go @@ -32,9 +32,9 @@ func NewApiCmd() *ApiCmd { return ret } -func (a *ApiCmd) AddApi(f func(port int) error) { +func (a *ApiCmd) AddApi(f func(port int, promPort int) error) { a.Command.RunE = func(cmd *cobra.Command, args []string) error { - return f(a.getPortFlag(cmd)) + return f(a.getPortFlag(cmd), a.getPrometheusPortFlag(cmd)) } } @@ -42,8 +42,8 @@ func (a *ApiCmd) GetPortFromConfig(portType string) int { fmt.Println("GetPortFromConfig:", portType) if portType == constant.FlagPort { return config2.Config.Api.OpenImApiPort[0] - } else { - - return 0 + } else if portType == constant.FlagPrometheusPort { + return config2.Config.Prometheus.ApiPrometheusPort[0] } + return 0 } diff --git a/pkg/common/cmd/msg_gateway.go b/pkg/common/cmd/msg_gateway.go index c96bbd7af..5149b1939 100644 --- a/pkg/common/cmd/msg_gateway.go +++ b/pkg/common/cmd/msg_gateway.go @@ -62,7 +62,7 @@ func (m *MsgGatewayCmd) GetPortFromConfig(portType string) int { } else if portType == constant.FlagPort { return config2.Config.LongConnSvr.OpenImMessageGatewayPort[0] } else if portType == constant.FlagPrometheusPort { - return 0 + return config2.Config.Prometheus.MessageGatewayPrometheusPort[0] } else { return 0 } diff --git a/pkg/common/cmd/rpc.go b/pkg/common/cmd/rpc.go index 224edc0a0..070d8ce82 100644 --- a/pkg/common/cmd/rpc.go +++ b/pkg/common/cmd/rpc.go @@ -59,34 +59,58 @@ func (a *RpcCmd) GetPortFromConfig(portType string) int { if portType == constant.FlagPort { return config2.Config.RpcPort.OpenImPushPort[0] } + if portType == constant.FlagPrometheusPort { + return config2.Config.Prometheus.PushPrometheusPort[0] + } case RpcAuthServer: if portType == constant.FlagPort { return config2.Config.RpcPort.OpenImAuthPort[0] } + if portType == constant.FlagPrometheusPort { + return config2.Config.Prometheus.AuthPrometheusPort[0] + } case RpcConversationServer: if portType == constant.FlagPort { return config2.Config.RpcPort.OpenImConversationPort[0] } + if portType == constant.FlagPrometheusPort { + return config2.Config.Prometheus.ConversationPrometheusPort[0] + } case RpcFriendServer: if portType == constant.FlagPort { return config2.Config.RpcPort.OpenImFriendPort[0] } + if portType == constant.FlagPrometheusPort { + return config2.Config.Prometheus.FriendPrometheusPort[0] + } case RpcGroupServer: if portType == constant.FlagPort { return config2.Config.RpcPort.OpenImGroupPort[0] } + if portType == constant.FlagPrometheusPort { + return config2.Config.Prometheus.GroupPrometheusPort[0] + } case RpcMsgServer: if portType == constant.FlagPort { return config2.Config.RpcPort.OpenImMessagePort[0] } + if portType == constant.FlagPrometheusPort { + return config2.Config.Prometheus.MessagePrometheusPort[0] + } case RpcThirdServer: if portType == constant.FlagPort { return config2.Config.RpcPort.OpenImThirdPort[0] } + if portType == constant.FlagPrometheusPort { + return config2.Config.Prometheus.ThirdPrometheusPort[0] + } case RpcUserServer: if portType == constant.FlagPort { return config2.Config.RpcPort.OpenImUserPort[0] } + if portType == constant.FlagPrometheusPort { + return config2.Config.Prometheus.UserPrometheusPort[0] + } } return 0 } diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 95f4a864e..96343f9a0 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -263,6 +263,7 @@ type configStruct struct { Prometheus struct { Enable bool `yaml:"enable"` + ApiPrometheusPort []int `yaml:"apiPrometheusPort"` UserPrometheusPort []int `yaml:"userPrometheusPort"` FriendPrometheusPort []int `yaml:"friendPrometheusPort"` MessagePrometheusPort []int `yaml:"messagePrometheusPort"` diff --git a/scripts/install/environment.sh b/scripts/install/environment.sh index c5407f5e3..1c20cda03 100755 --- a/scripts/install/environment.sh +++ b/scripts/install/environment.sh @@ -335,6 +335,8 @@ def "IOS_PRODUCTION" "false" # IOS生产 ###################### Prometheus 配置信息 ###################### def "PROMETHEUS_ENABLE" "false" # 是否启用 Prometheus +# Api 服务的 Prometheus 端口 +readonly API_PROM_PORT=${API_PROM_PORT:-'20110'} # User 服务的 Prometheus 端口 readonly USER_PROM_PORT=${USER_PROM_PORT:-'20110'} # Friend 服务的 Prometheus 端口