-
问题来源:
Kafka服务出现访问异常
-
问题分析:
查看Broker日志,JVM进程在没有任何异常的情况下,直接被调用shutdownhook,退出应用。
从Kafka服务来看,无法确诊问题。通常此类状态是由于OS中运行的监控管理进程或者其他服务发送kill信号将进程杀掉。如果能够找出发送信号的进程,就可以进 一步分析原因。那么如何查找出“罪魁祸首”?
-
查找“罪魁祸首”
The Linux Audit Subsystem is a system to Collect information regarding events occurring on the system(s) 。借助OS审计日志可以找出是否有其他进程,什么进程,什么时候对Kafka的Broker进程发送什么信号导致Kafka的Broker进程退出。那么该如何操作呢?
-
首先确保审计服务正常
使用 service auditd status 查看审计服务的运行情况
如果运行异常,可使用service auditd restart 重启服务 -
在审计服务中添加审计kill操作的审计规则
auditctl -a exit,always -F arch=b64 -S kill -S tkill -S tgkill -F a1!=0 -k my_temporary_kill_audit
添加完毕后,可以使用auditctl -l命令查看是否添加成功[root@yj01 ~]# auditctl -l No rules [root@yj01 ~]# auditctl -a exit,always -F arch=b64 -S kill -S tkill -S tgkill -F a1!=0 -k my_temporary_kill_audit [root@yj01 ~]# auditctl -l -a always,exit -F arch=b64 -S kill,tkill,tgkill -F a1!=0x0 -F key=my_temporary_kill_audit
-
使用脚本kill掉进程以便测试
[root@yj01 ~]# cat kill_test.sh #!/bin/bash p=`ps -ef | grep kafka.Kafka | grep -v grep | awk '{print $2}'` echo "kill ing kafka process $p" kill -9 $p echo $$ echo "killed"
-
测试审计日志信息
-
在kafka的broker进程所在节点运行test.sh,打印如下:
[root@yj01 ~]# date Mon Jan 28 10:55:46 CST 2019 [root@yj01 ~]# sh kill_test.sh kill ing kafka process 687802 688289 killed [root@yj01 ~]# date Mon Jan 28 10:55:50 CST 2019
-
查看审计日志记录的kill信息
使用命令ausearch -k my_temporary_kill_audit
查看审计日志,如下可以看出,被kill的进程为687802,与上述日志打印的kafka进程号一致。起16进制为a7eba,与SYSCALl中中的a0一致,起a1表示接收到的为-9,即表示使用“kill -9”命令杀掉的kafka,Broker进程。而执行kill命令的进程为pid为688289,与上述脚本中打印的命令一致。如上信息可以说明是执行的kill_test.sh脚本杀掉了Kafka的broker进程。
-
-
找出进程消失的“案发现场”
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 虽然80后,90后还很年轻,80后最大的也才38岁,人生漫长,我们都还在生命线的前端。但是近年来的重疾年轻化,很多...