Ethan-J’s
往期整理
  •   历史归档
  •   文章分类
  •   文章标签
English
Ethan
Article
10
Category
5
Tags
3
往期整理
历史归档
文章分类
文章标签
English
技术分享
系统日志接入
Post on: 2024-9-26
Last edited: 2024-9-26
Views
开发
type
status
date
slug
summary
tags
category
icon
password

需求背景

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

工作流

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

日志样例

notion image

设备上如何查看日志?

输出所有日志

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
RAG
Wi-Fi 自组网方案调研
NS-3 仿真
Cloudflared 实现内网穿透ai-hedge-fund 各 Agent 处理逻辑
Loading...
Catalog
0%
需求背景工作流日志样例设备上如何查看日志?输出所有日志输出最近 1000 行实时输出日志实时输出某个模块日志系统配置详情rsyslogd 配置配置解析logrotate 配置配置解析启动与初始化rsyslogd 启动脚本配置解析Crontab 配置配置解析其他模块日志接入hostapdwpa_supplicant
Ethan
Ethan
一个博客
Article
10
Category
5
Tags
3
Latest posts
ai-hedge-fund 各 Agent 处理逻辑
ai-hedge-fund 各 Agent 处理逻辑
2025-3-24
NS-3 仿真
NS-3 仿真
2025-2-6
付鹏《2024 年终回顾和 2025 年展望 —— 对冲风险 VS 软着陆》
付鹏《2024 年终回顾和 2025 年展望 —— 对冲风险 VS 软着陆》
2024-12-2
RAG
RAG
2024-9-26
系统日志接入
系统日志接入
2024-9-26
Redmi AX6 OpenWRT 刷机
Redmi AX6 OpenWRT 刷机
2024-9-26
Announcement
 
 
Catalog
0%
需求背景工作流日志样例设备上如何查看日志?输出所有日志输出最近 1000 行实时输出日志实时输出某个模块日志系统配置详情rsyslogd 配置配置解析logrotate 配置配置解析启动与初始化rsyslogd 启动脚本配置解析Crontab 配置配置解析其他模块日志接入hostapdwpa_supplicant
2024-2025 Ethan.

Ethan-J’s | 一个博客

Powered by NotionNext 4.7.2.