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查看日志内容
datapid=$(pgrep -x dataWorker)
ls -l /data/bkce/public/gse/data/${datapid}*
检查 KAFKA 数据
获取快照数据的topic名称
登陆任意ZK机器,查看ZK节点:
/data/bkce/service/zk/bin/zkCli.sh -server zk.service.consul:2181
# 连上zk终端后,显示CONNECTED,然后输入以下zk命令:
get /gse/config/etc/dataserver/data/1001
正常会出现类似下面的数据结构
{"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替换,再次查看是否有数据。
source /data/install/utils.fc
cd /data/bkce/service/kafka/bin
# $topic用上一步的值替换
# 确认存在topic
bash ./kafka-topics.sh --list --zookeeper zk.service.consul:2181/common_kafka | grep $topic
# 确认topic的配置
bash ./kafka-topics.sh --zookeeper zk.service.consul:2181/common_kafka --describe --topic $topic
# 查看topic中的最新数据
bash ./kafka-console-consumer.sh --bootstrap-server $LAN_IP:9092 --topic $topic
检查 databus 状态
登陆 BKDATA 机器,查看databus的任务
- 是否有任务是RUNNING状态,如果没有输出,特别是REDIS段落,则说明初始化bkdata有问题
- 查看任务状态是否有FAILED字样。
cd /data/bkce/bkdata/dataapi/bin/
bash check_databus_status.sh
- 如果databus的任务均存在且都是RUNNING,查看日志输出。
grep processed /data/bkce/logs/bkdata/databus_redis.log | tail
- 如果databus的redis任务有failed报错,查看上述日志的包含
Exception
字样的最新日志。如果提示有dataapi.service.consul
解析失败的错误,尝试重启databus:
workon databus
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升级的,则要注意。
source /data/install/utils.fc
redis-cli -h $REDIS_IP -p $REDIS_PORT -a $REDIS_PASS
subscribe ${biz_id}_snapshot