蓝鲸组件配置文件

开源组件

开源组件的实际配置均在 /data/bkce/etc 目录下,而这些配置文件其实是通过变量替换/data/src/service/support-files/templates/ 下的预设模板文件生成的,所以要从源头修改配置应该修改/data/src下的,然后通过以下命令同步,并渲染模板文件:

  • ./bkcec sync 模块
  • ./bkcec render 模块
    渲染模板时,bkcec 脚本通过调用 templates_render.rc 里定义的函数 render_cfg_templates 来实现举例说明,假设/data/src/service/support-files/templates/目录下有如下文件:

  • etc#nginx#job.conf那么当模板渲染时,它里面的占位符诸如 BK_HOME 会被对应的 $BK_HOME变量的值替换掉然后生成 /data/bkce/etc/nginx/job.conf 这个文件。可以发现,脚本将文件名中的#替换成/,然后放到$INSTALL_PATH目录下,也就是默认的 /data/bkce

  • kafka#config#server.properties这个形式的模板文件和上述的不同之处时没有以#开头,那么它表示一个相对模块安装路径的配置,也就是对于 /data/src/service/来说,它会被安装到 /data/bkce/service,那么kafka#config#server.properties就会生成到 /data/bkce/service/kafka/config/server.properties

  • etc#my.cnf.tpl这类文件名和第一个不同之处在于多了.tpl的后缀名,生成时tpl后缀会被去掉。

其他模块文件,以此类推。

以下列举当前所有的开源组件配置文件路径:

nginx

  • etc#nginx.confnginx主配置文件,安装时会 ln -s /data/bkce/etc/nginx.conf /etc/nginx/nginx.conf

  • etc#nginx#paas.confPaaS 平台的nginx server配置

  • etc#nginx#cmdb.confcmdb的nginx server配置,主配置会include /data/bkce/etc/nginx/ 下的配置文件

  • etc#nginx#job.conf job的nginx server配置

  • etc#nginx#miniweb.conf存放agent安装时所需要下载的脚本和依赖软件包

rabbitmq

  • etc#rabbitmq#rabbitmq-env.conf

  • etc#rabbitmq#rabbitmq.config

  • etc#rabbitmq#enabled_plugins

mongodb

  • etc#mongodb.yaml

mysql

  • etc#my.cnf.tpl

redis

  • etc#redis.conf

consul

consul的配置文件比较特殊,因为它是全局依赖,consul的配置文件会存放在/data/bkce/etc/consul.conf它没有对应的模板文件,是由 /data/install/parse_config 这个脚本来生成。不过 consul 启动的 supervisor 配置文件模板在

  • etc#supervisor-consul.conf

zookeeper

  • etc#zoo.cfg

elasticsearch

  • es#config#elasticsearch.yml.tpl

kafka

  • kafka#config#server.properties

influxdb

  • etc#influxdb.conf

beanstalk

  • etc#beanstalkd

蓝鲸组件

蓝鲸组件除了job和gse,其他均用supervisor来做进程启停,所以都会存在一个对应的supervisor进程配置文件它的标准规范是:#etc#supervisor-模块名-工程名.conf,如果没有子工程,则工程名等于模块名。例如 bkdata 存在三个子工程,所以各自的supervisor配置为:

  • etc#supervisor-bkdata-dataapi.conf

  • etc#supervisor-bkdata-databus.conf

  • etc#supervisor-bkdata-dataapi.conf

    fta模块,因为没有子工程,所以它的supervisor配置文件为:

  • etc#supervisor-fta-fta.conf

    因为supervisor配置具有一致性,下面不再具体列举supervisor相关配置文件。

CMDB

CMDB的后台是微服务化架构,每个进程对应一个配置文件,所以配置文件模板也有很多,

  • server#conf#模块名.conf
    模块名对应进程名,比如进程名叫 cmdb_webserver 那它对应的配置文件名叫 webserver.conf

  • etc#nginx#cmdb.conf

    cmdb 进程对应的 nginx 配置,里面会通过url rewrite兼容 v2的接口。cmdb_webserver 提供的web页面也是经过这层nginx 反向代理。

Job

作业平台的配置文件比较简单。一个配置文件,一个启动脚本:

  • etc#job.conf

    主配置文件,里面的中文注释非常详尽,这里不再赘述。

  • job#bin#job.sh
    job进程的启停脚本,里面可以设置一些调试参数,Java虚拟机内存分配大小等

PaaS

PaaS 平台在 src 目录下叫 open_paas 它实际上由 appengine login esb paas 四个子工程组成。

  • etc#uwsgi-open_paas-工程名.ini

    这里工程名用上面四个工程分别替换可得到,是这四个python工程uwsgi的配置文件

以下四个分别是对应工程的 配置文件

  • paas#conf#settings_production.py.tpl
  • login#conf#settings_production.py.tpl
  • esb#configs#default.py.tpl
  • appengine#controller#settings.py.tpl
    其中esb的配置中,配置了访问其他周边模块的接口域名和端口。

GSE

GSE 目录下的模板文件分为 agent、plugins、proxy、后台。

GSE后台的配置模板,需要留意的是生成后的配置中监听的IP地址是否符合预期:

  • etc#gse#api.conf

  • etc#gse#btsvr.conf

  • etc#gse#data.conf

  • etc#gse#dba.conf

  • etc#gse#task.conf

    GSE proxy后台的配置模板:

  • proxy#etc#btsvr.conf

  • proxy#etc#proxy.conf
  • proxy#etc#transit.conf
    GSE agent 的配置模板,* 表示匹配所有的,这里agent按系统和CPU架构区分了不同的目录

  • agent_*#etc#agent.conf

  • agent_*#etc#iagent.conf
  • agent_*#etc#procinfo.conf
    GSE agent plugins 的配置模板

  • plugins_*#etc#basereport.conf

  • plugins_*#etc#alarm.json

paas_agent

paas_agent是appo、和appt模块对应的后台代码目录,它的配置文件由两部分构成:

  • etc#nginx.conf #etc#nginx#paasagent.conf

    paas_agent依赖一个nginx做路由转发,这里是它的nginx配置

  • etc#paas_agent_config.yaml.tpl

    paas_agent的主配置,需要特别注意的是,这里的sidtoken是激活paas_agent成功后,获取返回的字符串自动填充的,里面的配置应该和开发者中心,服务器信息页面看到的一致。

bkdata

bkdata分为dataapidatabusmonitor三个工程,dataapi是python工程,databus是java工程,monitor是python工程。

dataapi的配置:

  • dataapi#conf#dataapi_settings.py
  • dataapi#pizza#settings_default.py
  • dataapi#tool#settings.py
    databus的配置:

  • databus#conf#es.cluster.properties

  • databus#conf#jdbc.cluster.properties
  • databus#conf#tsdb.cluster.properties
  • databus#conf#etl.cluster.properties
  • databus#conf#redis.cluster.properties
    monitor的配置:

  • monitor#bin#environ.sh

  • monitor#conf#worker#production#community.py

fta

故障自愈后台的配置

  • fta#project#settings_env.py

常用配置调整

调整后的配置模板文件请自行备份好,如果遇到升级,需要手工对比后再覆盖,如果升级后的文件没有新增配置,可以直接覆盖,但如果升级后的配置文件有新增,需要自行处理合并。

调整redis使用的最大内存大小

编辑 /data/src/service/support-files/templates/#etc#redis.conf

插入一行,比如限制最大使用4GB内存:

  1. maxmemory 4G

再执行以下命令生效:

  1. ./bkcec sync redis
  2. ./bkcec render redis
  3. ./bkcec stop redis
  4. ./bkcec start redis

调整bkdata的databus内存使用大小

databus目前有五个进程,对应的配置文件分别是:

  1. /data/src/bkdata/support-files/templates/databus#conf#es.cluster.properties
  2. /data/src/bkdata/support-files/templates/databus#conf#etl.cluster.properties
  3. /data/src/bkdata/support-files/templates/databus#conf#jdbc.cluster.properties
  4. /data/src/bkdata/support-files/templates/databus#conf#redis.cluster.properties
  5. /data/src/bkdata/support-files/templates/databus#conf#tsdb.cluster.properties

分别修改这五个文件里的"deploy.cluster.memory.max"的值,根据实际情况调大小。原则:如果内存够用,但CPU占用很高,适当调大;如果内存不够用,cpu占用正常,可以适当调小。

调整 ES 的内存使用大小

修改 /data/bkce/service/es/config/jvm.options 里的

  1. -Xms1G
  2. -Xmx1G

为合适的数值,如果不需要用日志检索,那可以尽量调低。

调整 Kafka 的内存使用大小

修改 /data/bkce/service/kafka/bin/kafka-server-start.sh 里的

KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"

调整 Fta 进程数

/data/bkce/etc/supervisor-fta-fta.conf里numprocs和gunicorn的进程数

调整 Bkdata-dataapi的worker数

/data/bkce/etc/supervisor-bkdata-dataapi.conf里的gunicorn的 -w 参数

调整 Bkdata-monitor的进程数

/data/bkce/etc/supervisor-bkdata-monitor.conf里的numprocs配置项

调整 PaaS的worker数量

/data/bkce/etc/uwsgi-open_paas*.ini里的workers 配置

调整 Job 的内存使用大小

/data/bkce/job/job/bin/job.sh里startup()函数下的JOB_JAVA_OPTS="-Xms256M -Xmx256M"