Skip to content

[BUG] Fix the Prometheus port scraping issue for etcd and gateway during Kubernetes deployment. #3276

@kun-sig

Description

@kun-sig

OpenIM Server Version

3.8.3

Operating System and CPU Architecture

Linux (AMD)

Deployment Method

Source Code Deployment

Bug Description and Steps to Reproduce

3.8.3 镜像部署源码需要修改的地方,修复k8s部署时ectd和gateway的prometheus端口索引异常问题

1、open-im-server\pkg\common\cmd\msg_gateway.go
func (m *MsgGatewayCmd) runE() error {
m.msgGatewayConfig.Index = config.Index(m.Index())
rpc := m.msgGatewayConfig.MsgGateway.RPC
prometheus := config.Prometheus{
Enable: m.msgGatewayConfig.MsgGateway.Prometheus.Enable,
Ports: m.msgGatewayConfig.MsgGateway.Prometheus.Ports,
} //修改的地方,处理设置手动分配端口时避免promethues端口index越界
return startrpc.Start(
m.ctx, &m.msgGatewayConfig.Discovery,
&prometheus,
rpc.ListenIP, rpc.RegisterIP,
rpc.AutoSetPorts,
rpc.Ports, int(m.msgGatewayConfig.Index),
m.msgGatewayConfig.Discovery.RpcService.MessageGateway,
nil,
m.msgGatewayConfig,
[]string{},
[]string{},
msggateway.Start,
)
}
2、github.com\openimsdk\[email protected]\utils\datautil\datautil.go
func (r *RootCmd) persistentPreRun(cmd *cobra.Command, opts ...func(*CmdOpts)) error {
if err := r.initEtcd(); err != nil {
return err
}
cmdOpts := r.applyOptions(opts...)
if err := r.initializeConfiguration(cmd, cmdOpts); err != nil {
return err
}
if err := r.updateConfigFromEtcd(cmdOpts); err != nil {
return err
}
if err := r.initializeLogger(cmdOpts); err != nil {
return errs.WrapMsg(err, "failed to initialize logger")
}
if r.etcdClient != nil {
if err := r.etcdClient.Close(); err != nil {
return errs.WrapMsg(err, "failed to close etcd client")
}
} //增加判断r.etcdClient != nil,处理kubernetes部署时discovery.enable = kubernetes时 etcdClient==ni的异常问题
return nil
}

Screenshots Link

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugCategorizes issue or PR as related to a bug.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions