温馨提示×

怎样过滤linux访问日志

小樊
42
2026-09-29 14:06:46
栏目: 智能运维

在 Linux 中,“访问日志”通常指 Web 访问日志(如 Nginx / Apache),也可能指 系统登录日志、SSH 访问日志 等。下面按常见场景给你讲 如何过滤和分析 Linux 访问日志。


一、Nginx / Apache 访问日志过滤

1. 查看访问日志位置

# Nginx
/var/log/nginx/access.log

# Apache
/var/log/apache2/access.log
# 或
/var/log/httpd/access_log

2. 按 IP 过滤

# 查看某个 IP 的访问记录
grep "192.168.1.100" access.log

# 统计访问最多的 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

3. 按 URL / 接口过滤

# 访问 /login 的日志
grep "/login" access.log

# 访问 API 接口
grep "/api/user" access.log

4. 按 HTTP 状态码过滤

# 只查看 404
grep " 404 " access.log

# 查看 500 错误
grep " 500 " access.log

# 状态码统计
awk '{print $9}' access.log | sort | uniq -c | sort -nr

5. 按时间范围过滤

# 查看某天的日志
grep "10/Apr/2024" access.log

# 某小时
grep "10/Apr/2024:14" access.log

6. 按请求方法过滤

# 只看 POST 请求
grep "POST" access.log

# 只看 GET 请求
grep "GET" access.log

二、SSH / 系统登录日志过滤(安全相关)

1. 查看 SSH 登录日志

# CentOS / RHEL
/var/log/secure

# Ubuntu / Debian
/var/log/auth.log

2. 过滤登录成功 / 失败

# 登录失败
grep "Failed password" /var/log/auth.log

# 登录成功
grep "Accepted password" /var/log/auth.log

3. 查看暴力破解来源 IP

grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr

三、使用 awk 精确提取字段(高级)

Nginx 默认日志格式示例:

IP - - [时间] "请求" 状态码 大小 "来源" "UA"
# 提取 IP + 状态码
awk '{print $1, $9}' access.log

# 统计访问量前 10 的 URL
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head

四、实时过滤(监控)

# 实时查看访问日志
tail -f access.log

# 实时查看 404
tail -f access.log | grep " 404 "

五、推荐工具(更高效)

  • goaccess:实时可视化日志分析
    goaccess access.log -o report.html --log-format=COMBINED
    
  • awk + sort + uniq:轻量快速
  • ELK / Grafana Loki:企业级日志分析

如果你能告诉我:

  • 用的是 Nginx / Apache / 其他
  • 想过滤的是 访问来源 / 异常 / 接口 / 安全

我可以直接给你 精准命令示例。

0 踩