背景
logger
是一个在Linux和Unix操作系统中使用的命令行工具,可以直接向系本地syslog
文件或远程Syslog服务器发送消息。logger
为写日志提供了不同的选项,如设置优先级、指定远程系统或指定Syslog端口。在调试
rsyslog
收发功能的时候,突然出现logger
无法向本地及远程任何地方发送消息的情况,在对该问题的排查定位中使用的手段和思路,对于深入调查linux上同类问题有一定的参考价值。
问题描述
常规使用,logger
无法给本地系统日志和远端发送消息,无显式报错,而在这之前能够正常工作。
具体复现如下:
logger -p local1.info "my name is Hanmeimei"
# -p, --priority priority_level,指定输入消息的优先级
# 在执行命令后,本地的syslog收不到信息;
排查与定位
-
首先排除
rsyslog
升级、配置等原因,因为之前一直正常运行,没人修改这些配置。 -
如果重启该机器,可以立即解决这个问题,
logger -p local1.info "msg"
可以正常使用。重启机器是一个重操作,代价很大,一般不作首要处理方案,需要进一步定位原因,减轻影响。 -
我现在有3台机器都出现这个问题,我重启了2台,留下一台做对比研究使用(后分别称作对照机与问题机)。
-
因为logger命令本身无法直接查看,没有找到日志,暂无法追踪,要想其他办法去查——了解到可以使用strace指令跟踪
log