当前位置: 首页 > news >正文

运维破案全靠日志!系统报错、入侵痕迹一键追溯。

Linux 日志管理

操作系统内核和程序记录了发生的事件日志,这些日志用于审核系统并解决问题。日志以文本方式保存在/var/log目录中。可以使用普通文本实用程序(如less和tail)检查这些日志。

Linux 内置了基于Syslog协议的标准日志记录系统。许多程序使用此系统记录事件并将其组织到日志文件中。CentOS 7 中systemd-journald和rsyslog服务负责处理syslog消息。

  • systemd-journald 服务,是操作系统事件记录体系结构的核心,收集系统各方面事件消息,包括内核、引导过程早期阶段的输出、守护程序启动和运行时的输出、syslog事件,然后将它们重组为标准格式,并写入结构化的索引系统日志中。
  • rsyslog 服务,读取systemd-journald日志,然后记录到日志文件,或根据自己的配置将日志保存到不同的文件中,以及转发给其他程序。

rsyslog 日志配置

rsyslog 服务配置

配置文件位置
  • 主配置: /etc/rsyslog.conf。主配置文件中以下配置作用是引入从配置目录中配置文件。
bash # Include all config files in /etc/rsyslog.d/ include(file="/etc/rsyslog.d/*.conf" mode="optional")
  • 从配置:/etc/rsyslog.d/*.conf。
日志记录规则

每一条日志消息都可以通过消息类型facility和priority分类,参考rsyslog.conf(5)。

日志记录规则格式:

facility+连接符号+priority 处理方式

例如cron.info

  • facility(设备类型)
facility说明
authpam产生的日志
authprivssh,ftp等登录信息的验证信息
cron周期性任务计划相关
kern内核
Ipr打印
mail邮件
news新闻组
user用户程序产生的相关信息
local 0~7自定义的日志设备,本地使用
  • priority(优先级)
优先级优先级名称严重性
0emerg系统不可用
1alert必须立即采取措施
2crit临界情况
3err非验证错误状况
4warning警告情況
5notice正常但重要的事件
6info信息性事件
7debug调式级别消息
8none代表什么都不存储
  • 连接符号
连接符号作用
.表示大于等于xxx级别的信息
.=表示等于xXx级别的信息
.!表示在xXx之外的等级的信息
  • 处理方式
  • 记录到文件
  • 发送到终端
  • 转发给其他服务器
配置文件内容

/etc/rsyslog.conf 中部分内容如下:

### RULES ##### Log all kernel messages to the console.#kern.* /dev/console*.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/securme mail.* -/var/log/maillog cron.* /var/log/cron# Everybody gets emergency messages*.emerg :omusrmsg:*# Save news errors of level crit and higher in a special file.uucp,news.crit /var/log/spooler(打印机)# Save boot messages also to boot.loglocal7.* /var/log/boot.log

日志存储位置:

  • /var/log/messages,大多数系统日志消息记录在此处,不包括与身份验证、电子邮件处理和调度作业执行相关的消息以及纯碎与调试相关的消息。
  • /var/log/secure,与安全性和身份验证事件相关的syslog消息。
  • /var/log/maillog,与邮件服务器相关的syslog消息。
  • /var/log/cron,与调度作业执行相关的syslog消息。
  • /var/log/boot.log,与系统启动相关的非syslog控制台消息。

查看日志内容

[root@server ~17:05:29]# tail -f /var/log/messagesJul2316:41:49 server systemd: Removed slice User Slice of laowang. Jul2316:50:01 server systemd: Created slice User Slice of root. Jul2316:50:01 server systemd: Started Session25of user root. Jul2316:50:01 server systemd: Removed slice User Slice of root.

日志内容说明:

  • Nov 10 10:23:34,代表日志产生时间。
  • centos7,产生日志的主机名。
  • systemd-logind,产生日志的进程。
  • 最后一个区域是日志内容,例如,“Removed session 15.”。
[root@server ~17:07:32]# tail -f /var/log/secureJul2316:33:49 server sshd[5635]: User xiaoma from client.xiaoma.cloud not allowed because not listedinAllowUsers Jul2316:33:49 server sshd[5635]: input_userauth_request: invalid user xiaoma[preauth]Jul2316:33:51 server unix_chkpwd[5637]: password check failedforuser(xiaoma)Jul2316:33:51 server sshd[5635]: pam_unix(sshd:auth): authentication failure;logname=uid=0euid=0tty=sshruser=rhost=client.xiaoma.clouduser=xiaoma

自定义日志记录规则

[root@server ~17:12:41]# vim /etc/rsyslog.d/xiaoma.conflocal5.* /var/log/xiaoma.log#重启[root@server ~17:13:53]# systemctl restart rsyslog.service[root@server ~17:14:54]# ls /var/log/xiaoma.logls: 无法访问/var/log/xiaoma.log: 没有那个文件或目录# 手动生成一个消息[root@server ~17:15:10]# logger -p local5.info "test my log"[root@server ~17:15:43]# cat /var/log/xiaoma.logJul2417:15:43 server root:testmy log

最佳实践

1.故障1:sshd_config文件丢失

模拟:

[root@server ~ 00:10:42]# mv /etc/ssh/sshd_config .[root@server ~ 00:11:05]# systemctl restart sshd

监控日志:

[root@server ~ 00:11:21]# tail -f /var/log/messagesJul2500:11:21 server systemd: Unit sshd.service entered failed state. Jul2500:11:21 server systemd: sshd.service failed. Jul2500:12:03 server systemd: sshd.service holdofftimeover, scheduling restart. Jul2500:12:03 server systemd: Stopped OpenSSH server daemon. Jul2500:12:03 server systemd: Starting OpenSSH server daemon...######################################################################Jul2500:12:03 server sshd: /etc/ssh/sshd_config: No suchfileor directory######################################################################Jul2500:12:03 server systemd: sshd.service: main process exited,code=exited,status=1/FAILURE Jul2500:12:03 server systemd: Failed to start OpenSSH server daemon. Jul2500:12:03 server systemd: Unit sshd.service entered failed state. Jul2500:12:03 server systemd: sshd.service failed.

根据提示恢复文件。

[root@server ~ 00:12:20]# mv sshd_config /etc/ssh[root@server ~ 00:14:05]# systemctl restart sshd

2.故障2:sshd_config配置错误

模拟:echo hello world >> /etc/ssh/sshd_config

[root@server ~ 00:14:38]# echo hello world >> /etc/ssh/sshd_config

监控日志:

[root@server ~ 00:15:40]# tail -f /var/log/messagesJul2500:14:38 server systemd: Started OpenSSH server daemon. Jul2500:15:40 server systemd: Stopping OpenSSH server daemon... Jul2500:15:40 server systemd: Stopped OpenSSH server daemon. Jul2500:15:40 server systemd: Starting OpenSSH server daemon...#####################################################################Jul2500:15:40 server sshd: /etc/ssh/sshd_config: line141: Bad configuration option: hello#####################################################################Jul2500:15:40 server sshd: /etc/ssh/sshd_config: terminating,1bad configuration options Jul2500:15:40 server systemd: sshd.service: main process exited,code=exited,status=255/n/a

根据提示修复配置文件错误。

补充

  • 虽然系统提供了日志服务,但并不会记录所有内容。
  • 系统中的应用程序是否使用 rsyslog 服务记录日志,取决于应用程序设计。

例如:

  • httpd 服务使用自己的日志记录。

  • sshd 服务使用 rsyslog 服务记录登录和退出日志。

    [root@server ~]# grep AUTHPRIV /etc/ssh/sshd_config SyslogFacility AUTHPRIV[root@server ~]# grep ^authpri /etc/rsyslog.conf authpriv.* /var/log/secure[root@server ~]# tail -1 /var/log/secure Jul 25 14:10:39 server sshd[20527]: pam_unix(sshd:session): session opened for user root by (uid=0) ```

systemd-journald 日志

systemd-journald 日志持久化保存

systemd-journald 配置文件/etc/systemd/journald.conf

详情参考 journald.conf(5)

Storage 参数,更改参数值后需要重启systemd-journald服务。

  • persistent:将日志存储在/var/log/journal目录中,这可在系统重启后持久保留。如果/var/log/journal目录不存在,systemd-journald服务会创建它。
  • volatile:将日志存储在易失性/run/log/journal目录中。因为/run文件系统是临时的,仅存在于运行时内存中,存储在其中的数据(包括系统日志)不会在系统启后持久保留。
  • auto:如果/var/log/journal目录存在,那么rsyslog会使用持久存储,否则使用易失性存储。如果未设置Storage参数,此为默认操作。
[root@server ~10:37:49]# vim /etc/systemd/journald.conf......[Journal]# Storage=autoStorage=persistent......[root@server ~10:39:33]# systemctl restart systemd-journald

systemd-journald 日志分析

[root@server ~10:40:47]# ls /var/log/journal/a5a99033a10f49259e32c539ed260f3a# systemd-journald日志是以二进制方式存储,不能使用常规文本工具查看# 查看所有日志条目,默认使用less查看文档[root@server ~10:41:41]# journalctl# 动态查看所有日志条目[root@server ~10:42:16]# journalctl -f# 查看本次系统启动到现在所有日志条目[root@server ~10:42:25]# journalctl -b 0# 1 第1次启动的日志# 2 第2次启动的日志# N 第n次启动的日志# 查看最近5条日志[root@server ~10:42:52]# journalctl -n 5# 查看error级别日志[root@server ~10:43:20]# journalctl -p err[root@server ~10:43:33]# journalctl -p err | cat# 根据时间查看日志[root@server ~10:45:49]# journalctl --since today[root@server ~10:46:08]# journalctl --since "2026-07-24 10:40:00" --until "2026-07-24 10:46:00"[root@server ~10:48:04]# journalctl --since "-1 hour"# 详细查看所有日志[root@server ~10:48:40]# journalctl -o verbose# 查看特定unit日志[root@server ~10:49:14]# journalctl -u sshd.service

最佳实践

故障1:配置文件丢失
[root@server ~10:49:55]# mv /etc/ssh/sshd_config .[root@server ~10:50:19]# systemctl restart sshd

处理过程:通过日志发现/etc/ssh/sshd_config: No such file or directory,文件丢失。

# 重启服务时,动态监控日志[root@server ~10:51:23]# journalctl -f-- Logs begin at 五2026-07-24 09:27:08 CST. --72410:50:46 server.xiaoma.cloud systemd[1]: sshd.service failed.72410:50:46 server.xiaoma.cloud polkitd[727]: Unregistered Authentication Agentforunix-process:4335:502033(system bus name :1.142, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)(disconnected from bus)72410:51:28 server.xiaoma.cloud systemd[1]: sshd.service holdofftimeover, scheduling restart.72410:51:28 server.xiaoma.cloud systemd[1]: Stopped OpenSSH server daemon.72410:51:28 server.xiaoma.cloud systemd[1]: Starting OpenSSH server daemon...72410:51:28 server.xiaoma.cloud sshd[4357]: /etc/ssh/sshd_config: No suchfileor directory72410:51:28 server.xiaoma.cloud systemd[1]: sshd.service: main process exited,code=exited,status=1/FAILURE72410:51:28 server.xiaoma.cloud systemd[1]: Failed to start OpenSSH server daemon.......# 移动回来,并重启服务[root@server ~10:52:21]# mv sshd_config /etc/ssh/sshd_config[root@server ~10:54:19]# systemctl restart sshd
故障2:配置文件参数错误
[root@server ~10:56:22]# echo 'PermitRootLogin hahaha' >> /etc/ssh/sshd_config[root@server ~10:57:35]# systemctl restart sshd

处理过程:通过日志发现/etc/ssh/sshd_config line 141: unsupported option "hahaha".

# 重启服务时,动态监控日志[root@server ~10:58:16]# journalctl -f-- Logs begin at 五2026-07-24 09:27:08 CST. --72410:57:59 server.xiaoma.cloud sshd[4453]: Received signal15;terminating.72410:57:59 server.xiaoma.cloud systemd[1]: Stopping OpenSSH server daemon...72410:57:59 server.xiaoma.cloud systemd[1]: Stopped OpenSSH server daemon.72410:57:59 server.xiaoma.cloud systemd[1]: Starting OpenSSH server daemon...72410:57:59 server.xiaoma.cloud sshd[4544]: /etc/ssh/sshd_config line141: unsupported option"hahaha".72410:57:59 server.xiaoma.cloud systemd[1]: sshd.service: main process exited,code=exited,status=255/n/a72410:57:59 server.xiaoma.cloud systemd[1]: Failed to start OpenSSH server daemon.72410:57:59 server.xiaoma.cloud systemd[1]: Unit sshd.service entered failed state.# 清理对应无效记录,并重启服务[root@server ~10:58:40]# sed -i '/hahaha/d' /etc/ssh/sshd_config[root@server ~10:59:19]# systemctl restart sshd
故障3:配置文件参数错误
[root@server ~10:59:31]# yum install -y httpd[root@server ~11:00:36]# sed -i 's/Listen 80/Listen 80000/g' /etc/httpd/conf/httpd.conf[root@server ~11:01:03]# systemctl restart httpd

处理过程:通过日志发现AH00526: Syntax error on line 42 of /etc/httpd/conf/httpd.conf

# 重启服务时,动态监控日志[root@server ~11:01:27]# journalctl -f-- Logs begin at 五2026-07-24 09:27:08 CST. --72411:01:01 server.xiaoma.cloud systemd[1]: Removed slice User Slice of root.72411:01:13 server.xiaoma.cloud polkitd[727]: Registered Authentication Agentforunix-process:4652:564708(system bus name :1.158[/usr/bin/pkttyagent --notify-fd5--fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)72411:01:13 server.xiaoma.cloud systemd[1]: Starting The Apache HTTP Server...72411:01:13 server.xiaoma.cloud httpd[4659]: AH00526: Syntax error on line42of /etc/httpd/conf/httpd.conf:72411:01:13 server.xiaoma.cloud httpd[4659]: Invalid address or port72411:01:13 server.xiaoma.cloud systemd[1]: httpd.service: main process exited,code=exited,status=1/FAILURE72411:01:13 server.xiaoma.cloud systemd[1]: Failed to start The Apache HTTP Server.72411:01:13 server.xiaoma.cloud systemd[1]: Unit httpd.service entered failed state.# 修改回来,并重启服务[root@server ~11:01:39]# sed -i 's/Listen 80000/Listen 80/g' /etc/httpd/conf/httpd.conf[root@server ~11:02:09]# systemctl restart httpd

全文总结

  1. rsyslog:生成文本格式系统日志,日志存放目录/var/log/;自定义规则放到/etc/rsyslog.d/,修改配置必须重启 rsyslog;tail -f实时跟踪文本日志。
  2. systemd-journald:管理 systemd 托管服务日志,使用journalctl查询;默认重启丢失日志,修改 Storage=persistent 实现持久保存。
  3. 排错思路:系统登录、定时任务报错优先查/var/log/secure/var/log/cron;自定义服务启动失败优先使用journalctl -u 服务名
  4. 运维规范:不要直接修改主配置文件;修改配置先做语法校验;开启日志轮转,防止日志无限增大打满硬盘;重要环境可远程转发日志留存证据。
http://www.jsqmd.com/news/1260370/

相关文章:

  • 深度学习在OFDM信道估计中的性能优化与实践
  • 2026年长春电缆分支箱选购参考:深博电力及行业重点企业信息盘点 - 八方八方
  • 基于YOLOv8的水果检测系统开发与优化实践
  • Atomic Agent开源智能体GAIA基准突破:从架构解析到本地部署实践
  • WSL环境下忘记root密码的4种解决方案
  • PocketBase 做一个本地低代码后台:手机表单和文件上传跑通后,用 cpolar 给产品临时验收
  • LLM在代谢性疾病与心脏缺陷诊疗中的创新应用
  • 四川仪表工业学校2026年招生简章:工业自动化仪表及应用专业详解 - 学习招生
  • 企业档案深度查询API零基础接入与字段详解
  • AI长期记忆框架Mem0:从原理到生产级部署实践
  • 从零构建AI智能体:基于Hermes Agent的工程实践指南
  • ModelScope:一站式AI模型开发与部署平台解析
  • 6G网络中量子联邦学习的应用与优化
  • FMB 数据集介绍、下载
  • 龙芯3B6000平台Docker 29.5.1源码编译与RPM打包实战指南
  • 5分钟搞定抖音批量下载:这款工具让你轻松保存无水印视频和音乐
  • 苹果AI虚拟购物助手:技术架构、应用场景与开发机遇
  • 2026年最新二手机床回收/工业设备回收/整厂物资调剂企业多维度能力评估 - 顺创机电值得关注 - 八方八方
  • 3步永久激活Beyond Compare:Python开源密钥生成器终极指南
  • Linux进程间通信(IPC)机制详解与性能优化实践
  • 2026年最新教程:手机端酷狗歌曲一键转MP3格式 - 软件工具教程方法
  • AI原生开发:从传统到智能的技术转型
  • 基于深度学习的视觉水位监测系统设计与实践
  • 开源大语言模型教程:从原理到实践
  • 告别滚动拼接:Chrome全屏截图插件让你3步保存完整网页
  • QZoneExport:3步快速备份QQ空间的终极免费工具
  • C++核心知识体系与工程实践:从面向对象到现代并发编程
  • 深入解析EDMA事件控制:从ECR/EER/CER寄存器原理到DMA链式传输实战
  • Mermaid Live Editor:用代码创作图表的极简艺术
  • NVIDIA Profile Inspector终极指南:5大高级配置方案彻底解决显卡性能瓶颈