外观
查看系统日志
出问题时,日志是第一手证据。完成后,你知道某类问题该看哪一份日志、怎么在界面里搜索和下载、什么时候该切到命令行用 journalctl,以及怎么把日志同时发到另一台日志服务器。
界面里的日志
打开 诊断 → 系统日志(Diagnostics → System Logs),有两个标签:日志(Logs)和 远程(Remote)。
在 日志 标签页:
- 从顶部的下拉框选一个日志,下拉框的占位文字是「选择一个系统日志……」。
- 表格显示时间和消息两列,默认最新的在前,每页 15 行。
- 搜索框在服务器端过滤,适合找关键字,例如用户名、设备名、错误码。
- 点 下载(Download)可以把当前选中的那份日志保存下来,求助时用得上。
界面最多读取日志末尾的 100000 行,更早的内容要用命令行看。
下拉框里有哪些日志
OMV 8 里,大部分日志是系统日志服务(systemd 日志)按条件过滤出来的视图,只有少数是文件。
| 下拉项(官方中文) | 内容 | 什么时候看 |
|---|---|---|
| 系统日志(Syslog) | 全部日志,不过滤 | 不确定看哪份时先看这份 |
| 验证(Authentication) | 登录和认证:Web 界面、SSH、sudo | 登录失败、账户被锁、有人在猜密码 |
| 内核(Kernel) | 内核消息 | 硬盘 I/O 错误、USB 设备掉线、网卡链路变化、内存不足杀进程 |
| 启动(Boot) | 本次启动以来的日志 | 刚开机后服务没起来 |
| 守护进程(Daemon) | 系统服务产生的日志 | 某个服务异常 |
| 消息(Messages) | 按优先级和设施过滤后的一部分消息 | 比系统日志少,找错误以系统日志和内核为准 |
| S.M.A.R.T. | smartd 对硬盘的检查结果 | 硬盘告警 |
| Rsync - 任务 | /var/log/rsync.log,rsync 任务和 USB 备份的输出 | 备份没成功 |
| Rsync - 服务器 | rsync 守护进程的日志 | 别的机器往你这备份出问题 |
| SMB/CIFS - 审核 | 共享上的文件操作审核记录 | 要先在共享里启用审核文件操作,见 SMB 进阶 |
| 更新管理 | /var/log/apt/term.log,apt 的终端输出 | 更新失败 |
装了插件会增加新的日志,例如 restic、backup、NUT。备份插件另有 /var/log/omv-backup.log,Compose 的恢复日志是 /var/log/omv-compose-restore.log。
按症状找日志
| 症状 | 先看 |
|---|---|
| Web 界面或 SSH 登录失败 | 验证 |
| 共享连不上、要密码 | 系统日志,搜 smbd;见SMB 访问被拒绝 |
| 硬盘不见了、文件系统变只读 | 内核,搜 I/O error、ata、sd、usb;再看 S.M.A.R.T. |
| 更新失败 | 更新管理 |
| 备份任务失败 | Rsync - 任务,或插件自己的日志 |
| 机器莫名重启 | 启动,以及下面的 journalctl -b -1 |
| 点应用报错 | 系统日志和守护进程,搜 engined,见应用配置时报错 |
用 journalctl 补充
界面只能看过滤后的内容、最近的 100000 行。需要看某个服务、某个时间段或上一次启动,用 OMV 的 shell,以 root 身份执行,下面都是只读命令:
sh
# 本次启动以来的错误
journalctl -p err -b
# 某个服务最近 100 行,服务名例如 smbd、nginx、openmediavault-engined、ssh
journalctl -u <服务名> -n 100
# 上一次启动的日志(前提是日志被持久化保存)
journalctl -b -1
# 实时跟踪,按 Ctrl+C 退出
journalctl -f
# 内核消息,带可读时间
dmesg -T | tail -n 50journalctl -b -1 能不能用,取决于日志是不是持久化保存的。装了 writecache 并把日志存储设成 volatile 时,日志在内存里,重启就没了,见 writecache 插件。OMV 还把日志占用上限设成了 1 GB。
转发到远程日志服务器
远程 标签页可以把系统日志转发给另一台 syslog 服务器,这样机器重启或损坏后,日志还在别处:
- 勾选 已启动,作用是「启用 syslog 远程日志到指定的主机」。
- 填写 主机、端口(默认 514)和 协议(UDP 或 TCP,默认 UDP)。
- 保存,点黄色提示条上的 应用。
UDP 不保证送达,想要可靠一些选 TCP。这个页面只有这三项,没有加密选项,所以只转发到你信任的局域网里的日志服务器。
隐私
日志里有主机名、IP、用户名、共享名,有时还有文件路径。发到论坛或提 issue 之前先脱敏,见如何有效求助。
自动告警也来自日志
OMV 会盯着日志里的几类事件并发邮件:登录失败导致账户被锁(验证 事件),以及内核日志里的块设备 I/O 错误(杂项 事件,8.5.10 起)。想收到这些,要先配好邮件通知,并在 系统 → 通知 → 事件(System → Notification → Events)里勾选对应项。
检查结果
- 在下拉框里分别打开 系统日志、验证、内核,每份都能看到近期的内容。
- 用搜索框找一个你认识的关键字,比如你的用户名。
- 下载一份日志,在电脑上能打开。
- 在 shell 里运行
journalctl -p err -b,看看本次启动以来有没有你该关心的错误。 - (可选)配置远程日志,在日志服务器上确认收到了消息。
常见问题
日志表格是空的。 先换一份日志试试;某份日志对应的服务没运行或没有产生过消息时是空的,例如 SMB 审核日志在没启用审核时就是空的。
找不到更早的日志。 界面只读末尾 100000 行,日志占用也有上限。用 journalctl --since 指定时间范围,更早的可能已被清理。
日志里一直在刷同一个错误。 先记下错误的时间和第一次出现的时间,再对照那个时间点前后做过什么操作。不要急着清空日志,那会销毁证据。
参考资料
- 日志的来源和过滤条件定义在 OMV 源码的
usr/share/openmediavault/engined/inc/90logfilespec.inc。 - journald 的占用上限由 OMV 的
systemd-journald部署状态设置,环境变量为OMV_SYSTEMD_JOURNALD_SYSTEMMAXUSE。