Linux 服务器日志管理与排查笔记

1. 云服务器 /var/log 目录大小评估

对于 2核2G 的云服务器(系统盘通常 40-50GB):

状态占用大小说明
✅ 健康< 500MB日志轮转正常
⚠️ 注意500MB - 1GB需要关注,建议检查
❌ 危险> 2GB必须立即处理,可能服务异常

2. 日志分析与排序命令

按文件大小排序

# ls 方式(仅当前目录)
ls -lhS /var/log          # 降序(大→小)
ls -lhSr /var/log         # 升序(小→大)
ls -lhSa /var/log         # 包含隐藏文件

# du + sort 方式(包含子目录)
du -sh * | sort -rh       # 当前目录下所有项目
du -ah /var/log | sort -rh | head -20  # 递归查找大文件

# find 查找大文件
find /var/log -type f -size +100M -exec ls -lh {} \;

journalctl 常用命令

journalctl --disk-usage                    # 查看 journal 占用空间
journalctl -n 100                           # 查看最近100条日志
journalctl -f                               # 实时追踪日志
journalctl -u ssh                           # 查看特定服务日志
journalctl -k                               # 查看内核日志
journalctl --since "10 minutes ago"         # 时间过滤
journalctl -p err                           # 只看错误级别
journalctl --vacuum-size=200M               # 清理到指定大小
journalctl --vacuum-time=7d                 # 保留最近7天

3. systemd journal 日志 (/var/log/journal)

包含的日志类型

类别说明
内核日志硬件识别、驱动加载、文件系统错误等
系统服务日志SSH、Nginx、MySQL 等服务的 stdout/stderr
Syslog 日志传统 syslog() 函数记录的日志
核心转储与审计程序崩溃记录、安全审计事件
用户日志各用户的活动记录

journal 配置(持久限制)

编辑 /etc/systemd/journald.conf

[Journal]
SystemMaxUse=200M      # 限制最大占用 200MB

重启服务:

sudo systemctl restart systemd-journald

4. 传统日志与 systemd 日志的区别

特性传统日志systemd日志
核心命令last, lastb, dmesgjournalctl
存储位置/var/log/wtmp, /var/log/btmp/var/log/journal/
文件格式明文二进制(需 journalctl 读取)
主要用途用户登录/注销记录全面系统日志
注意lastb 读取的是 /var/log/btmp不从 /var/log/journal 读取。

5. boringproxy 日志说明

  • boringproxy:内网穿透工具(类似 frp、ngrok),不是病毒
  • 日志中打印大量帮助信息是因为参数错误(如 -http-port 0.0.0.0:8080 应改为 -http-port 8080
  • 与 frps 无直接关系,两者是独立的内网穿透工具

6. 服务器日志正常状态判断

正常日志特征

  • 没有 ERRORFATAL 级别日志
  • CRON 定时任务正常执行
  • 服务返回 200 状态码
  • 容器正常创建/销毁

你服务器上的服务说明

服务说明
lychee定期检查定时任务,输出 "No scheduled commands are ready to run" 属于正常 INFO
CRON + stargate.lock腾讯云监控组件,正常行为
podman容器生命周期管理,正常
caddy反向代理,warn 级别可忽略
typecho博客程序,访问日志由 Web 服务器产生

7. Typecho 访问日志处理

Typecho 本身不产生 INFO 级别的访问日志,这些日志来自 Web 服务器(Nginx/Caddy/Apache)。

Nginx 关闭访问日志

# 在 server 块中
access_log off;                    # 直接关闭
# 或注释掉原有配置
# access_log /var/log/nginx/your-domain.access.log;

重载配置:

sudo nginx -t
sudo systemctl reload nginx

Caddy 调整日志级别

{
    log {
        level WARN    # 过滤 INFO 级别
    }
}

8. Podman Compose 日志配置

logging 驱动类型

驱动说明适用场景
journald(Podman 默认)发送到 systemd-journald统一用 journalctl 查看
k8s-fileJSON 格式写入普通文件兼容 K8s 生态
json-fileDocker 默认驱动的别名兼容 Docker 配置
none完全禁用容器日志临时任务、无日志需求
passthrough直接传递到客户端调试用途

配置示例

version: '3'
services:
  typecho:
    image: your-typecho-image
    logging:
      driver: journald           # 或 k8s-file / json-file / none
      # options:                 # 仅 k8s-file/json-file 支持
      #   max-size: "10m"        # 单文件最大 10MB
      #   max-file: "3"          # 最多保留 3 个文件

查看容器日志

podman-compose logs              # 查看所有日志
podman-compose logs -f typecho   # 实时追踪特定服务

9. 常用运维命令速查

# 磁盘使用
df -h                            # 查看磁盘分区使用率
du -sh /var/log                  # 查看日志目录总大小

# 日志查看
journalctl -n 100                # 最近100条
journalctl -f                    # 实时追踪
journalctl -u sshd --since today # 今日 SSH 日志

# 进程管理
ps aux | grep nginx              # 查看进程
systemctl status docker          # 查看服务状态
systemctl restart nginx          # 重启服务

# 网络相关
ss -tlnp                         # 查看监听端口
netstat -i                       # 查看网络接口统计

标签: none

添加新评论