abrt也可以叫abrtd,展开应该是automatically bug report daemon,也就是自动错误报告守护进程。
从字面意义就可以看出,他是一个守护进程,监控进程,如果进程出现崩溃,那么他就会开始工作,收集bug,收集现场。用于在发生崩溃时报告软件包中的错误
配置文件完整路径:
/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)
配置文件完整路径:
/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.”
服务器出现两个告警
a、根目录磁盘空间告警
b、服务器内存使用率告警
a、内存问题定位:
top命令 发现有三个abrt-hook-ccpp进程消耗资源非常大
b、根目录磁盘空间使用率问题定位:
从根目录一路使用”du ./ --max-depth=1”,找到占用空间最大的目录是/var/spool/abrt
c、确定原因
于是可以看出不管是磁盘空间使用正常还是内存使用突增,都是和abrt-hook-ccpp有关系
在messages日志中可以搜索abrt关键字,可以看到是 三个 vim 进程奔溃导致拉起的abrt-hook-ccpp
而abrt-hook-ccpp产生的目录名后面的数字也正是对应崩溃程序的进程ID,搜索之后发现是vim进程
本次问题是有人使用vim查看日志文件,而文件过大,vim崩溃导致
解决方法很简单,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
-----------------------本文完
欢迎关注我的公众号:龙叔运维
持续分享运维经验