内容纲要
概要描述
本文介绍当Slipstream/Kafka 数据积压或者启动失败时,如何收集异常信息,便于排查根本原因,提供对应的解决方案
详细说明
备份组件日志
登录组件对应服务器linux命令备份到数据盘目录
确认要备份日志文件 $ERR_LOG
ls -ltr /var/log/slipstream1/hive-server.log*
备份文件
DATE=$(date +%Y%m%d) && mkdir -p /mnt/disk1/log_err/$DATE && cp $ERR_LOG /mnt/disk1/log_err/$DATE
组件无法启动
1)Pod状态
执行命令“kubectl get pods -o wide | grep slipstream”,获取命令输出
对于每一个pod,执行命令“kubectl logs ”,获取命令输出
对于每一个pod,执行命令“kubectl describe po ”,获取命令输出
获取组件的日志,在slipstream安装的节点上进入路径“/var/log/”,例如/var/log/slipstream1,获取以下日志文件:
hive-metastore.log*(如果metastore共享的inceptor的,就去inceptor日志路径下获取该日志)进入Manager页面,再进入slipstream组件,右上角更多操作,更新依赖里面,查看是否和inceptor共享MetaStore
hive-server2.log*
inceptor-executor.log*
2)在Manager节点,收集/var/log/transwarp-manager/master/transwarp-manager.log*
3)进入Manager页面,再进入kafka组件,左侧"盾牌"按钮查看组件是否开了安全,截图;针对4.x版本的kafka,提供/etc//conf/server.properties文件和/transwarp/tdh_client/kafka/config/server.properties,例:/mnt/disk1/transwarp/tdh_client/kafka/config/server.properties
数据积压
1)进入Manager页面,再进入kafka组件的角色页面,查看各角色状态,截图;
2)进入Manager页面,再进入slipstram组件的角色页面,查看各角色状态,截图;
3)任务执行情况
进入Manager页面,再进入slipstrem组件的角色页面,通过slipstream-Server的Link进去4040页面,获取流任务SQL对应任务的job,stage和task页面的截图
4)获取组件的日志,在slipstream安装的节点上进入路径“/var/log/”,例如/var/log/slipstream1,获取以下日志文件:
hive-metastore.log*
hive-server2.log*
inceptor-executor.log*
5)根据脚本判断数据积压情况以及积压量:
脚本路径:manager节点,/var/lib/transwarp-manager/master/content/resources/tdh_client/kafka/bin
执行命令:./kafka-consumer-groups.sh --describe --group default-default.demo_stream(stream名字)--bootstrap-server 192.168.31.33:9092(kafka ip:port)
stream任务名称获取方式:在beeline模式下,执行show streams;
流任务执行慢
1)slipstream参数
进入Manager页面,再进入slipstream组件的配置页面,获取以下参数的值:
inceptor.executor.cores
inceptor.executor.memory
inceptor.server.memory
2)任务执行情况
进入Manager页面,再进入slipstream组件的角色页面,通过Inceptor Server的Link进去4040页面,获取流任务对应的job,stage和task页面的截图
如果一个任务长时间执行不完,对于每一个executor,获取jstack信息,例如:
执行命令“kubectl exec -it {executor pod名称} bash”进入pod
在pod中,执行命令“jps”获取executor进程的pid
执行命令“sudo -u hive jstack -l > /tmp/jstack.log”,收集这个输出文件
性能信息
1.有GC情况
2.内存,cpu,io资源偏高
1)Java堆栈信息 jstack ×10 inceptor/executor
说明:GC一定要收集
jstack工具:
PID=$(jps|grep HRegionServer| awk '{print$1}') && sudo -u hbase $(whereis jstack | awk -F':' '{print $2}') $PID
2)jmap inceptor/executor
说明:GC一定要收集,jmap不仅能生成dump文件,还可以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等
jmap工具:
jmap -histo:live 24971 | more
3)heapdump
说明:比较全面,但文件较大
jmap工具:
jmap -dump:live,format=b,file=/tmp/dump.hprof 24971
4)GC日志
说明:GC一定要收集
jstat工具+组件gc日志:
jstat -gcutil 3024 1000 10
5)SAR日志
说明:出现内存、CPU、IO资源偏高的情况下,需要记录 ; 系统状态进行取样,并持续记录
sar命令:
#每10秒采样一次,连续采样3次,报告设备使用情况
sar -d 10 3 -p
6)ganglia截图
ganglia页面集群的第一个节点,可以选择统计周期
http://第一个节点IP/ganglia