bk-cmdb icon indicating copy to clipboard operation
bk-cmdb copied to clipboard

求官方的debug方案 不然现在针对cmdb的二次开发复杂度增大很多

Open donallin823 opened this issue 2 years ago • 20 comments

问题描述

目前在做cmdb的自定义的二次开发,但是没有比较好的debug方案,每次都是更改完全部代码,build完再调试。有没有官方推荐的debug方案?如何使用devle能更轻易的进行debug和单步调试

donallin823 avatar Apr 24 '22 01:04 donallin823

可以用GOLAND在直接本地开发、在线调试

breezelxp avatar Apr 24 '22 02:04 breezelxp

能给一下goland的配置吗 比如我现在修改了cloud_server的内容 我直接从哪个文件开始开启debug 或者能加一下您的qq吗

donallin823 avatar Apr 24 '22 02:04 donallin823

可以类似这样配置: image

breezelxp avatar Apr 24 '22 02:04 breezelxp

十分感谢哈 还有一个小问题 假设目前只针对一个微服务修改要debug 因为有很多微服务 up主更建议 本地开启全部服务的debug模式 还是一部分放在测试机只单开一个微服务在本地

donallin823 avatar Apr 24 '22 02:04 donallin823

这个根据你自己的实际情况选一个就好,怎么方便怎么用。 你是基于那个分支开发的?二次开发的那些功能?

breezelxp avatar Apr 24 '22 02:04 breezelxp

v3.10.11 增加支持华为云同步更新逻辑 增加dashboard 增加除了云主机还有其他核心资源的更新

donallin823 avatar Apr 24 '22 02:04 donallin823

v3.10.11 增加支持华为云同步更新逻辑 增加dashboard 增加除了云主机还有其他核心资源的更新

👍🏻

建议在二次开发时,考虑下代码的设计,避免后续无法和社区版本同步升级。

breezelxp avatar Apr 24 '22 02:04 breezelxp

v3.10.11 增加支持华为云同步更新逻辑 增加dashboard 增加除了云主机还有其他核心资源的更新

👍🏻

建议在二次开发时,考虑下代码的设计,避免后续无法和社区版本同步升级。

好的 感谢up主的细心建议

donallin823 avatar Apr 24 '22 02:04 donallin823

v3.10.11 增加支持华为云同步更新逻辑 增加dashboard 增加除了云主机还有其他核心资源的更新

👍🏻

建议在二次开发时,考虑下代码的设计,避免后续无法和社区版本同步升级。

还想问一下,因为项目启动的时候有个init.py需要执行,这个执行命令放在哪里呢

donallin823 avatar Apr 24 '22 06:04 donallin823

能否也看一下admin_server 和 web_server这两个的配置 目前goland中启动失败 image image

donallin823 avatar Apr 24 '22 06:04 donallin823

同求,我现在后端搞定了Goland里Debug。 但是前端不行,直接使用yarn run serve的时候,页面会报错。只能使用cmdb_webserver。但是这样的话,每改一点东西就要Build,还要重启webserver进程

liucy1983 avatar Apr 24 '22 09:04 liucy1983

同求,我现在后端搞定了Goland里Debug。 但是前端不行,直接使用yarn run serve的时候,页面会报错。只能使用cmdb_webserver。但是这样的话,每改一点东西就要Build,还要重启webserver进程

你在goland怎么生成配置文件 init.py怎么执行?可以看看你admin_server是怎么样的吗

donallin823 avatar Apr 24 '22 09:04 donallin823

我自己写了简单的部署文档,你可以参考

安装Zookeeper

docker run -d -p 2181:2181 --name zookeeper zookeeper

安装Redis

docker run -d -p 6379:6379 --name redis redis --requirepass 'changeMe.0'

安装MongoDB

Dockerfile

FROM mongo
RUN openssl rand -base64 756 > /data/keyfile
RUN chown 999 /data/keyfile
RUN chmod 400 /data/keyfile
docker run -dti -p 27017:27017  --name mongo mongodb --auth -replSet=rs0 --keyFile=/data/keyfile
docker exec -it mongo mongo admin
rs.initiate({ _id : "rs0",members: [{ _id: 0, host: "localhost:27017" }]})

### Mongo命令符。创建admin用户
> db.createUser({ user:'admin',pwd:'changeMe.0',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},{role:'root', db: 'admin'},"readWriteAnyDatabase"]});
> db.auth('admin', 'changeMe.0')
### 创建cmdb库和cc用户
> use cmdb
> db.createUser({user:"cc",pwd:"cc",roles:[{role:"readWrite",db:"cmdb"}]})
> exit

编译cmdb

cd $GOPATH/src
git clone https://github.com/Tencent/bk-cmdb  configcenter
cd configcenter/src
go env -w GO111MODULE="auto"
go get github.com/klauspost/compress
cp ~/go/src/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s ~/go/src/configcenter/src/tools/monstache/vendor/go.mongodb.org/mongo-driver/vendor/github.com/klauspost/compress/zstd/internal/xxhash/
make

添加本地解析

localIp=`python ip.py`
sudo echo "$localIp cmdb.domain.com" >> /etc/hosts

初始化配置

cd bin/build/v3.10.x
python init.py  \
  --discovery          127.0.0.1:2181 \
  --database           cmdb \
  --redis_ip           127.0.0.1 \
  --redis_port         6379 \
  --redis_pass         changeMe.0 \
  --mongo_ip           127.0.0.1 \
  --mongo_user         cc \
  --mongo_pass         cc \
  --blueking_cmdb_url  http://cmdb.domain.com:8083 \
  --blueking_paas_url  http://paas.domain.com \
  --listen_port        8083 \
  --auth_scheme        internal \
  --auth_enabled       false \
  --auth_address       https://iam.domain.com/ \
  --auth_app_code      bk_cmdb \
  --auth_app_secret    xxxxxxx \
  --full_text_search   off \
  --es_url             http://127.0.0.1:9200 \
  --log_level          3 \
  --register_ip        cmdb.domain.com \
  --user_info admin:admin

启动后台程序

./start.sh

liucy1983 avatar Apr 24 '22 09:04 liucy1983

好详细 我编译打包环境没问题 我是debug环境goland还是不行 你是在windows开启本地debug调试?

我自己写了简单的部署文档,你可以参考

安装Zookeeper

docker run -d -p 2181:2181 --name zookeeper zookeeper

安装Redis

docker run -d -p 6379:6379 --name redis redis --requirepass 'changeMe.0'

安装MongoDB

Dockerfile

FROM mongo
RUN openssl rand -base64 756 > /data/keyfile
RUN chown 999 /data/keyfile
RUN chmod 400 /data/keyfile
docker run -dti -p 27017:27017  --name mongo mongodb --auth -replSet=rs0 --keyFile=/data/keyfile
docker exec -it mongo mongo admin
rs.initiate({ _id : "rs0",members: [{ _id: 0, host: "localhost:27017" }]})

### Mongo命令符。创建admin用户
> db.createUser({ user:'admin',pwd:'changeMe.0',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},{role:'root', db: 'admin'},"readWriteAnyDatabase"]});
> db.auth('admin', 'changeMe.0')
### 创建cmdb库和cc用户
> use cmdb
> db.createUser({user:"cc",pwd:"cc",roles:[{role:"readWrite",db:"cmdb"}]})
> exit

编译cmdb

cd $GOPATH/src
git clone https://github.com/Tencent/bk-cmdb  configcenter
cd configcenter/src
go env -w GO111MODULE="auto"
go get github.com/klauspost/compress
cp ~/go/src/github.com/klauspost/compress/zstd/internal/xxhash/xxhash_amd64.s ~/go/src/configcenter/src/tools/monstache/vendor/go.mongodb.org/mongo-driver/vendor/github.com/klauspost/compress/zstd/internal/xxhash/
make

添加本地解析

localIp=`python ip.py`
sudo echo "$localIp cmdb.domain.com" >> /etc/hosts

初始化配置

cd bin/build/v3.10.x
python init.py  \
  --discovery          127.0.0.1:2181 \
  --database           cmdb \
  --redis_ip           127.0.0.1 \
  --redis_port         6379 \
  --redis_pass         changeMe.0 \
  --mongo_ip           127.0.0.1 \
  --mongo_user         cc \
  --mongo_pass         cc \
  --blueking_cmdb_url  http://cmdb.domain.com:8083 \
  --blueking_paas_url  http://paas.domain.com \
  --listen_port        8083 \
  --auth_scheme        internal \
  --auth_enabled       false \
  --auth_address       https://iam.domain.com/ \
  --auth_app_code      bk_cmdb \
  --auth_app_secret    xxxxxxx \
  --full_text_search   off \
  --es_url             http://127.0.0.1:9200 \
  --log_level          3 \
  --register_ip        cmdb.domain.com \
  --user_info admin:admin

启动后台程序

./start.sh

好详细 我编译打包环境没问题 我是debug环境goland还是不行 你是在windows开启本地debug调试?

donallin823 avatar Apr 24 '22 09:04 donallin823

我是MacOS 先保证使用start.sh可以跑起来所有的服务。cmdb.domain.com可以正常登录访问。

然后你要调试那个服务,就在bin/build/v3.1.0.x/下的那个目录下,执行stop.sh把它停掉。

然后在goland里,到对应的模块下,执行相应的入口方法。 当然,要配置执行参数,内容去取bin下面对应程序的start.sh就行了。

比如这是我apiserver的配置 image

liucy1983 avatar Apr 24 '22 09:04 liucy1983

我是MacOS 先保证使用start.sh可以跑起来所有的服务。cmdb.domain.com可以正常登录访问。

然后你要调试那个服务,就在bin/build/v3.1.0.x/下的那个目录下,执行stop.sh把它停掉。

然后在goland里,到对应的模块下,执行app/server.go/Run方法就可以了。 当然,要配置执行参数,内容去取bin下面对应程序的start.sh就行了

哈我的意思是通过ide去debug 你理解错我的意思了 也感谢你哈 我说的goland是类似vscode的IDE

donallin823 avatar Apr 24 '22 09:04 donallin823

我是MacOS 先保证使用start.sh可以跑起来所有的服务。cmdb.domain.com可以正常登录访问。 然后你要调试那个服务,就在bin/build/v3.1.0.x/下的那个目录下,执行stop.sh把它停掉。 然后在goland里,到对应的模块下,执行app/server.go/Run方法就可以了。 当然,要配置执行参数,内容去取bin下面对应程序的start.sh就行了

哈我的意思是通过ide去debug 你理解错我的意思了 也感谢你哈 我说的goland是类似vscode的IDE

我用的就是Goland,admin_server的话,在migrate.go下,使用main方法就可以调试了。 参数从start.sh取,配置文件改对 --addrport=0.0.0.0:60004 --v=3 --config=configures/migrate.yaml --enable-auth=false --register-ip=cmdb.domain.com

image

liucy1983 avatar Apr 24 '22 09:04 liucy1983

windows环境也可以直接debug吗 现在感觉就是init.py生成配置文件这里 卡住了 在windows环境如何生成

donallin823 avatar Apr 25 '22 04:04 donallin823

windows环境也可以直接debug吗 现在感觉就是init.py生成配置文件这里 卡住了 在windows环境如何生成

第一,Windows上我没有试过。 第二,init.py依赖python2,如果你是Python3的话会报错,当然修也很简单,如果你会Pytnon的话。 第三,你说的卡住,有输出吗?是到那里卡住的。如果你熟悉Python的话,可以用pycharm去调试一下,看是到那一步出不走了

liucy1983 avatar Apr 25 '22 06:04 liucy1983

@breezelxp 老哥,有没有什么二次开发的方案,方便可以跟着社区升级的,没什么思路呀。

ilaziness avatar May 12 '22 01:05 ilaziness