你知道abrt-hook-ccpp吗?

1、什么是abrt-hook-ccpp

abrt也可以叫abrtd,展开应该是automatically bug report daemon,也就是自动错误报告守护进程。
从字面意义就可以看出,他是一个守护进程,监控进程,如果进程出现崩溃,那么他就会开始工作,收集bug,收集现场。用于在发生崩溃时报告软件包中的错误

2、abrt配置文件解析

2.1、配置文件abrt.conf

配置文件完整路径:
/etc/abrt/abrt.conf

a、MaxCrashReportsSize
控制dump的最大size,如果程序崩溃也不产生dump文件,那可以试试将这个配置项改为0,无限制

b、DumpLocation
存放dump文件的目录,默认是/var/spool/abrt,当abrt工作时,会创建对应的dump文件目录

c、WatchCrashdumpArchiveDir
如果你想让abrtd自动解包出现在这个目录下的crashdump 包,启用此选项,并制定这个目录,默认是/var/spool/abrt-upload

d、DeleteUploaded
如果想要自动清除上传目录,必须调整selinux策略,默认是no

e、AutoreportingEvent
配置的是事件的名称,在检测到问题后自动运行这个事件。该事件应该执行一些快速分析,如果知道问题,则将以70退出。默认是report_uReport,并且如果想启用这个,AutoreportingEnabled需要配置为yes

f、AutoreportingEnabled
启用自动运行在AutoreportingEvent选项中配置的事件。默认为no

g、ShortenedReporting
在AutoreportingEvent完成后,启用缩短的GUI报告,默认为yes

h、PrivateReports
默认值为yes,如果你想允许普通用户有文件系统权限读取存储在DumpLocation的问题数据。那就设置为no。
问题数据包含/var/log/messages, dmesg和sosreport数据的摘要,由abrtd生成在用户根下。

i、DebugLevel
允许ABRT工具检测ABRT本身的问题。通过增加该值,可以强制ABRT检测、处理和报告ABRT中的问题。但是,在处理自身引起的问题时,ABRT可能会陷入无限循环。默认值是0(non debug mode)

2.2、配置文件abrt-action-save-package-data.conf

配置文件完整路径:
/etc/abrt/abrt-action-save-package-data.conf

a、OpenGPGCheck
只分析签名包中的崩溃,默认为yes

b、BlackList
列入黑名单的包,默认值是“nspluginwrapper, valgrind, strace, mono-core“

c、ProcessUnpackaged
处理不属于任何包的可执行文件中的崩溃?默认是no,有时候有些进程崩溃但是没有产生dump文件,可以把这个改成yes再试试。

d、BlackListedPaths
可执行路径黑名单(shell模式)
默认值是“/usr/share/doc/, /example, /usr/bin/nspluginviewer, /usr/lib/xulrunner-/plugin-container”

e、Interpreters
编译器,默认值是“python2, python2.7, python, python3, python3.3, perl, perl5.16.”

3、问题案例分享

3.1、问题现象

服务器出现两个告警
a、根目录磁盘空间告警
b、服务器内存使用率告警

你知道abrt-hook-ccpp吗?_第1张图片

3.2、问题定位

a、内存问题定位:
top命令 发现有三个abrt-hook-ccpp进程消耗资源非常大
你知道abrt-hook-ccpp吗?_第2张图片
b、根目录磁盘空间使用率问题定位:
从根目录一路使用”du ./ --max-depth=1”,找到占用空间最大的目录是/var/spool/abrt
你知道abrt-hook-ccpp吗?_第3张图片

c、确定原因
于是可以看出不管是磁盘空间使用正常还是内存使用突增,都是和abrt-hook-ccpp有关系

在messages日志中可以搜索abrt关键字,可以看到是 三个 vim 进程奔溃导致拉起的abrt-hook-ccpp
你知道abrt-hook-ccpp吗?_第4张图片

而abrt-hook-ccpp产生的目录名后面的数字也正是对应崩溃程序的进程ID,搜索之后发现是vim进程
你知道abrt-hook-ccpp吗?_第5张图片

本次问题是有人使用vim查看日志文件,而文件过大,vim崩溃导致

3.3、问题处理

解决方法很简单,kill掉三个vim进程就可以了,kill掉之后,三个abrt-hook-ccpp进程也消失了,abrt-hook-ccpp产生的文件也消失了

不过为了避免再次发生这样的事情,可以关闭abrt-hook-ccpp

systemctl stop abrt-ccpp.service
systemctl disable abrt-ccpp.service
systemctl status abrt-ccpp.service

-----------------------本文完

欢迎关注我的公众号:龙叔运维
持续分享运维经验

你可能感兴趣的:(龙叔Linux,linux,运维,abrt-hook-ccpp,coredump)