您的位置:首页 >Java日志Ubuntu中如何审计
发布于2026-05-02 阅读(0)
扫一扫,手机访问

搭建一套有效的日志审计体系,首先得明确我们到底要审什么。核心目标通常覆盖四个方面:
明确了目标,接下来看如何落地。一套建议的架构可以这么规划:
trace_id、userId、tenantId、ip、timestamp、level、action、status、duration、msg等核心字段。systemd journal统一纳入采集范围,避免信息孤岛。日志的质量,从应用输出那一刻就决定了。以下是几个关键实践点:
System.out或printStackTrace(),它们难以管理和收集。来看一个Logback的配置示例,它包含了审计所需的关键字段:
logs/app.log
logs/app-%d{yyyy-MM-dd}.gz
30
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%line -traceId=%X{traceId} userId=%X{userId} ip=%X{ip} action=%X{action}status=%X{status} dur=%X{duration}ms - %msg%n
配置好了,关键数据怎么塞进去?通常可以在代码中,或借助MDC(Mapped Diagnostic Context)来设置审计上下文:
MDC.put("traceId", UUID.randomUUID().toString());
MDC.put("userId", getCurrentUserId());
MDC.put("ip", getClientIp());
MDC.put("action", "createOrder");
try {
// biz
MDC.put("status", "SUCCESS");
} catch (Exception e) {
MDC.put("status", "FAIL");
log.error("order create failed, orderId={}", orderId, e);
} finally {
MDC.clear();
}
最后提醒一点:如果应用是以服务形式运行,务必确保日志写入到文件,而不是仅仅输出到控制台。文件日志才是后续采集和审计追溯的可靠来源。
应用日志落地后,下一步就是在Ubuntu系统侧进行有效的采集和管理。
journald的日志以及可能被重定向的日志文件。
ps -ef | grep ja va;find /opt/myapp -name “*.log”tail -f /var/log/myapp.log;检索错误:grep -n “ERROR” /var/log/myapp.logjournalctl -u myapp.service -f;按时间筛选:journalctl --since “2025-12-25 00:00:00” -u myapp/var/log/myapp/*.log {
daily
rotate 30
compress
missingok
notifempty
copytruncate
dateext
}
这里的要点是:通过轮转避免磁盘爆满;为审计目的,通常建议保留至少30天的日志;在将日志外发到集中平台前,应考虑对敏感字段进行脱敏处理。
日志集中之后,真正的价值挖掘才刚刚开始。
input { beats { port => 5044 } }
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\] %{LOGLEVEL:level} %{DATA:logger}:%{NUMBER:line} - traceId=%{DATA:traceId} userId=%{DATA:userId} ip=%{IP:ip} action=%{DATA:action} status=%{DATA:status} dur=%{NUMBER:duration}ms - %{GREEDYDATA:msg}" }
}
date { match => [ "timestamp", "yyyy-MM-dd HH:mm:ss.SSS" ] target => "@timestamp" }
geoip { source => "ip" }
}
output { elasticsearch { hosts => ["http://localhost:9200"] index => "ja va-audit-%{+YYYY.MM.dd}" } }
status:FAIL AND action:login | timechart count by ipuserId:U123 AND action:delete* | sort @timestamp desclevel:ERROR AND @timestamp >= now-15m | stats count by logger, host上一篇:反汇编指令能做什么高级操作
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9