• CMDB无快照数据问题排查
    • 环境排查
    • cmdb日志排查
    • 采集端排查
      • 检查进程是否存在
      • 检查数据上报连接
    • GSE服务端排查
    • 检查 KAFKA 数据
      • 获取快照数据的topic名称
      • 检查数据
      • 检查 databus 状态
      • 检查 bkdata 的 cron 任务
    • 检查redis通道数据

    CMDB无快照数据问题排查

    环境排查

    • 此文档描述4.0及以上的社区版的问题排查
    • windows主机暂不支持快照数据
    • 中控机上查看进程状态是否都是RUNNING: bkcec status all

    cmdb日志排查

    登陆cmdb机器,打开/data/bkce/logs/cmdb/cmdb_datacollection.INFO文件

    • 如果最近几条日志是“master check : i am still master”,那么表明数据处理进程正常工作。
    • 如果日志出现“subcribing channel 2_snapshot”后没有subChan Close,那么表明收数据协程正常工作。
    • 如果2和3条都正常,但没有”handle xx num mesg, routines xx“,说明通道里没数据,请到redis里 subscribe ${biz}_snapshot 确认通道是否没数据。具体参见本文档最后一段。

    采集端排查

    登陆无数据的agent机器,按以下指引排查:

    检查进程是否存在

    basereport进程存在且唯一

    • Linux: ps -ef | grep basereport
    • Windows: tasklist | findstr basereport
      若进程不存在,手动启动,检查启动失败的原因

    • Linux: cd /usr/local/gse/plugins/bin && ./basereport -c ../etc/basereport.conf

    • Windows(cygwin): cd /cygdrive/c/gse/plugins/bin/ && ./basereport -c ../etc/basereport.conf
    • Windows(无cygwin) : cd C:/gse/plugins/bin/ && start.bat basereport

    检查数据上报连接

    有正常ESTABLISHED的链接则ok

    • Linux netstat -antp | grep 58625 | grep ESTABLISHED
    • Windows netstat -ano | grep 58625
      若存在proxy,登陆proxy机器:检测58625端口同上。

    GSE服务端排查

    登陆 GSE后台服务器,检测 gse_data 是否连上9092端口:

    • Linux: lsof -nP -c dataWorker | grep :9092
    • Windows: netstat -ano | grep 9092
      看有没有 gse_data 的pid 开头命名的日志。 若有,tail查看日志内容
    1. datapid=$(pgrep -x dataWorker)
    2. ls -l /data/bkce/public/gse/data/${datapid}*

    检查 KAFKA 数据

    获取快照数据的topic名称

    登陆任意ZK机器,查看ZK节点:

    1. /data/bkce/service/zk/bin/zkCli.sh -server zk.service.consul:2181
    2. # 连上zk终端后,显示CONNECTED,然后输入以下zk命令:
    3. get /gse/config/etc/dataserver/data/1001

    正常会出现类似下面的数据结构

    1. {"server_id": -1, "data_set": "snapshot", "partition": 1, "cluster_index": 0, "biz_id": 2, "msg_system": 1}

    快照topic名由data_set和biz_id组成,则 topic=snapshot2

    检查数据

    登陆任意 KAFKA 机器:查看KAFKA最新数据,等待1分钟查看是否有数据。如果有数据,在最后一行命令后加上| grep $ip $ip用无快照数据的ip替换,再次查看是否有数据。

    1. source /data/install/utils.fc
    2. cd /data/bkce/service/kafka/bin
    3. # $topic用上一步的值替换
    4. # 确认存在topic
    5. bash ./kafka-topics.sh --list --zookeeper zk.service.consul:2181/common_kafka | grep $topic
    6. # 确认topic的配置
    7. bash ./kafka-topics.sh --zookeeper zk.service.consul:2181/common_kafka --describe --topic $topic
    8. # 查看topic中的最新数据
    9. bash ./kafka-console-consumer.sh --bootstrap-server $LAN_IP:9092 --topic $topic

    检查 databus 状态

    登陆 BKDATA 机器,查看databus的任务

    • 是否有任务是RUNNING状态,如果没有输出,特别是REDIS段落,则说明初始化bkdata有问题
    • 查看任务状态是否有FAILED字样。
    1. cd /data/bkce/bkdata/dataapi/bin/
    2. bash check_databus_status.sh
    • 如果databus的任务均存在且都是RUNNING,查看日志输出。
    1. grep processed /data/bkce/logs/bkdata/databus_redis.log | tail
    • 如果databus的redis任务有failed报错,查看上述日志的包含Exception字样的最新日志。如果提示有dataapi.service.consul解析失败的错误,尝试重启databus:
    1. workon databus
    2. supervisorctl -c /data/bkce/etc/supervisor-bkdata-databus.conf restart all

    检查 bkdata 的 cron 任务

    如果CMDB有快照数据,监控没有,或者部分没有时,检查下bkdata所在机器的crontab是否包含update_cc_cache.sh 的定时任务:

    crontab -l |grep update_cc_cache.sh

    如果没有,应该安装时漏执行,或者执行过./bkcec clean cron后忘记加回来。可在中控机执行./bkcec install cron 重新安装上 cron 任务

    检查redis通道数据

    登陆 Redis 机器,查看通道数据是否更新:其中biz_id和上面获取dataid时的json里保持一致,它其实时“蓝鲸”这个业务的cmdb里存储的id。全新安装一般都为2。如果是从3.x升级的,则要注意。

    1. source /data/install/utils.fc
    2. redis-cli -h $REDIS_IP -p $REDIS_PORT -a $REDIS_PASS
    3. subscribe ${biz_id}_snapshot