type
status
date
slug
summary
tags
category
icon
password
需求背景
原先的日志存在问题:
- 固件侧日志在设备断电后会丢失
- 需要持久化固件侧日志以供分析
- 便于快速定位故障设备关键信息
通过接入日志系统,可以在意外掉电后保证系统日志不丢失。
我们将原先由syslogd管理的日志系统改为了rsyslogd,并通过日志文件和管道将日志输出到服务器。此外,还使用logrotate进行日志轮转管理,确保日志文件不会无限制增长。
此功能涉及云 AC 侧支持,相关文档:http://wiki.bigo.sg:8090/pages/viewpage.action?pageId=1033438725
工作流

画板
- 日志记录:rsyslogd记录系统和内核日志,按照配置将所有日志输出到/var/log/all.log和管道/tmp/agent.pipe。
- 日志采集与上报:bigo_agent进程通过管道/tmp/agent.pipe采集日志并上报到服务器。
- 日志轮转:每天凌晨,logrotate按照配置轮转/var/log/all.log日志文件,保留最近三天的日志,并压缩前两天的日志文件。
- 服务重启:日志轮转后,通过postrotate脚本重新启动syslog和rsyslog服务,确保日志记录不中断。
日志样例

设备上如何查看日志?
输出所有日志
log
输出最近 1000 行
log 1000
实时输出日志
logf
实时输出某个模块日志
logf hostapd
系统配置详情
rsyslogd 配置
在本系统中,rsyslogd用于记录和管理系统日志。其配置文件如下:
配置解析
- module(load=“imuxsock”) 和 module(load=“imklog”) 用于加载系统日志和内核日志模块。
- module(load=“imudp”) 和 input(type=“imudp” port=“514”) 用于启用UDP日志输入,监听514端口。
- module(load=“ompipe”) 用于启用日志输出到管道的功能。
- template(name=“SkynetFormat”…) 定义了日志输出的格式模板,使用RFC 3339格式的时间戳。
- action(type=“ompipe” Pipe=“/tmp/agent.pipe” Template=“SkynetFormat”) 将所有日志按照SkynetFormat格式输出到管道/tmp/agent.pipe。
- . /var/log/all.log 将所有日志记录到/var/log/all.log文件中。
- 其他配置项将特定类别的日志输出到相应的日志文件中。
logrotate 配置
为了防止日志文件无限制增长,我们使用logrotate进行日志轮转。其配置文件如下:
配置解析
- daily 指定日志轮转的频率为每天。
- rotate 3 保留最近三天的日志。
- create 在轮转后创建新的日志文件。
- compress 启用日志压缩。
- delaycompress 延迟压缩,直到下一个轮转周期。
- missingok 忽略缺失的日志文件,不产生错误。
- notifempty 忽略空日志文件。
- /var/log/all.log 配置了/var/log/all.log文件的轮转规则。
- postrotate 脚本在轮转后重新启动syslog和rsyslog服务,确保日志记录不中断。
启动与初始化
rsyslogd 启动脚本
rsyslogd的启动脚本位于/etc/init.d/rsyslog,内容如下:
配置解析
- START=20 指定启动顺序。
- USE_PROCD=1 使用procd进行进程管理。
- start_service 函数在启动时创建管道/tmp/agent.pipe并启动rsyslogd。
Crontab 配置
在设备首次启动时,会自动执行reconfig脚本,配置crontab以每日执行logrotate。相关配置如下:
配置解析
- 每天凌晨0点执行logrotate,轮转/var/log/all.log日志文件。
其他模块日志接入
为日后方便定位关联认证异常问题,将 hostapd 与 wpa_supplicant 的日志也接入 rsyslog,如需更详细的日志,可将如下脚本中的 ‘-d’ 改为 ‘-ddd’。
hostapd
wpa_supplicant
- Author:Ethan
- URL:https://zheyu.ink/article/system-log
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts