Linux系统的日志管理

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Linux系统的日志管理

一、systemd-journald服务

1.systemd-journald介绍

# 系统时间日志的核心服务
# 收集包括来自内核,早期引导阶段啊,进程启动,运行时的标准输出和错误输出,以及syslog时间等
# 保存在二进制的日志文件中,具有易失性,重启后不保存

2.系统日志默认保存路径

保存目录为/run/log/journal

[root@tianyi 4f596c775d924b618367d1c448fd5578]# pwd
/run/log/journal/4f596c775d924b618367d1c448fd5578
[root@tianyi 4f596c775d924b618367d1c448fd5578]# ls
system@f51ef91c90ff4fd48133fe727841edb8-000000000011b8bf-0005c7be331e995d.journal
system@f51ef91c90ff4fd48133fe727841edb8-000000000011d6a0-0005c7c4724c57e6.journal
system@f51ef91c90ff4fd48133fe727841edb8-000000000011f42f-0005c7cab33cc55b.journal
system@f51ef91c90ff4fd48133fe727841edb8-0000000000121201-0005c7cf0099fa95.journal
system@f51ef91c90ff4fd48133fe727841edb8-0000000000122fca-0005c7db1bc72be2.journal
system@f51ef91c90ff4fd48133fe727841edb8-0000000000124d63-0005c7e173a7688d.journal
system@f51ef91c90ff4fd48133fe727841edb8-0000000000126bf3-0005c7e70d3d55d0.journal
system@f51ef91c90ff4fd48133fe727841edb8-0000000000128a4c-0005c7ebf2c2f08f.journal
system@f51ef91c90ff4fd48133fe727841edb8-000000000012a845-0005c7ef788f2d0b.journal
system@f51ef91c90ff4fd48133fe727841edb8-000000000012c602-0005c7f31a53c98f.journal
system@f51ef91c90ff4fd48133fe727841edb8-000000000012e3d8-0005c7f8cdf9eace.journal
system.journal

3.systemd-journald的配置文件修改

①配置文件目录

/etc/systemd/journald.conf

②配置文件修改

persistent: 将日志存储在/var/log/journal目录中,若该目录不存在,则systemd-journald服务自动创建。
volatile: 将日志存储在易失性的目录/run/log/journal目录中,若该目录不存在,则systemd-journald服务自动创建。
auto: 如果/var/log/journal目录存在,那么rsyslog会使用持久存储,否则为易失性存储,此为默认配置。

[root@tianyi systemd]# grep auto journald.conf 
#Storage=auto

4.检索日志消息

①journalctl命令的相关选项

-n 指定显示末尾几条消息,默认最后10条日志消息
-f 与tail -f 命令相似
-p 指定显示某个优先级以上的日志
--since或者--until   限制特定的时间段,时间格式为“YYYY-MM-DD hh:mm:ss”等
-o verbose 查看日志的详细信息
_PID 进程的PID
_UID  运行该进程的用户ID
_SYSTEMD_UNIT  启动该进程的systemd单元
_COMM 指定命令的名称
_EXE 京城的可执行文件的路径

②示例

[root@tianyi systemd]# journalctl -n 5  _SYSTEMD_UNIT=sshd.service
-- Logs begin at Fri 2021-07-23 06:56:38 CST, end at Mon 2021-07-26 23:20:45 CST. --
Jul 26 23:20:33 tianyi sshd[10011]: pam_unix(sshd:auth): check pass; user unknown
Jul 26 23:20:33 tianyi sshd[10011]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=1.117.46.219
Jul 26 23:20:36 tianyi sshd[10011]: Failed password for invalid user vbox from 1.117.46.219 port 41028 ssh2
Jul 26 23:20:36 tianyi sshd[10011]: Received disconnect from 1.117.46.219 port 41028:11: Bye Bye [preauth]
Jul 26 23:20:36 tianyi sshd[10011]: Disconnected from invalid user vbox 1.117.46.219 port 41028 [preauth

二、rsyslog服务

1.日志保存相关路径

/var/log/message 系统绝大多数的日志文件都会记录在该文件中
/var/log/secure 记录与安全相关的日志,比如创建用户,修改密码,切换用户等操作
/var/log/cron 记录与计划任务相关
/var/log/maillog 记录与邮件相关的日志
/var/log/boot.log 记录与启动相关的

2.日志消息的类型

lpr: 打印相关的日志
auth:认证相关的日志
user:用户相关的日志
cron:计划任务相关的日志
kern:内核相关的日志
mail:邮件相关的日志
daemon:系统服务相关的日志
authpri:授权相关的日志
security:安全相关的日志
local0-local7:自定义相关的日志信息

3.日志消息优先级

优先级 代码 严重性
none 不记录任何信息
emerg 0 内核崩溃等严重信息
alert 1 需要立即修改的信息
crit 2 严重错误级别
err 3 错误级别
warning 4 警告级别
notice 5 具有重要性的普通信息
info 6 一般信息
warning 7 调试信息

4.自定义日志规则

①日志定义的格式

facility.priority Target
mail.info /var/log/maillog 比指定级别更高的日志级别,包括级别自身,保存到 /var/log/maillog
mail.=info /var/log/maillog 明确指定级别为info,保存到/var/log/maillog 
mail.!info /var/log/maillog 除了指定的日志级别以外的级别,都保存到/var/log/maillog 
*.info info /var/log/maillog 所有类型的info级别都保存到/var/log/maillog
mail.*  /var/log/maillog mail类型的所有级别日志都保存到/var/log/maillog

三、日志查看

[root@tianyi log]# grep -E -C 5 '(err|not|no)' messages
Jul 25 05:44:39 tianyi systemd[1]: dev-disk-by\x2duuid-c30fcda5\x2dd830\x2d4c90\x2db818\x2d831e33389b2e.device: Job dev-disk-by\x2duuid-c30fcda5\x2dd830\x2d4c90\x2db818\x2d831e33389b2e.device/start timed out.
Jul 25 05:44:39 tianyi systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-c30fcda5\x2dd830\x2d4c90\x2db818\x2d831e33389b2e.device.
Jul 25 05:44:39 tianyi systemd[1]: Dependency failed for /dev/disk/by-uuid/c30fcda5-d830-4c90-b818-831e33389b2e.
Jul 25 05:44:39 tianyi systemd[1]: dev-disk-by\x2duuid-c30fcda5\x2dd830\x2d4c90\x2db818\x2d831e33389b2e.swap: Job dev-disk-by\x2duuid-c30fcda5\x2dd830\x2d4c90\x2db818\x2d831e33389b2e.swap/start failed with result 'dependency'.
Jul 25 05:44:39 tianyi systemd[1]: dev-disk-by\x2duuid-c30fcda5\x2dd830\x2d4c90\x2db818\x2d831e33389b2e.device: Job dev-disk-by\x2duuid-c30fcda5\x2dd830\x2d4c90\x2db818\x2d831e33389b2e.device/start failed with result 'timeout'.
Jul 25 07:40:57 tianyi rsyslogd[1750]: imjournal: sd_journal_get_cursor() failed: Cannot assign requested address [v8.37.0-9.el8]
Jul 25 07:40:57 tianyi rsyslogd[1750]: imjournal: journal reloaded... [v8.37.0-9.el8 try http://www.rsyslog.com/e/0 ]
Jul 25 07:41:56 tianyi systemd[1]: Starting dnf makecache...
Jul 25 07:42:02 tianyi dnf[6483]: Docker CE Stable - x86_64                       690  B/s | 3.5 kB     00:05
Jul 25 07:42:07 tianyi dnf[6483]: Zabbix                                          590  B/s | 2.9 kB     00:05
Jul 25 07:42:12 tianyi dnf[6483]: huawei-AppStream                                875  B/s | 4.3 kB     00:05
--
Jul 25 13:17:42 tianyi NetworkManager[1936]: <info>  [1627190262.1609] dhcp4 (eth0):   hostname 'host-192-168-1-209'
Jul 25 13:17:42 tianyi NetworkManager[1936]: <info>  [1627190262.1609] dhcp4 (eth0):   gateway 192.168.1.1
Jul 25 13:17:42 tianyi NetworkManager[1936]: <info>  [1627190262.1609] dhcp4 (eth0):   static route 169.254.169.254/32 gw 192.168.1.254
Jul 25 13:17:42 tianyi NetworkManager[1936]: <info>  [1627190262.1609] dhcp4 (eth0):   mtu 1500
Jul 25 13:17:42 tianyi NetworkManager[1936]: <info>  [1627190262.1611] dhcp4 (eth0): state changed bound -> bound
Jul 25 13:17:42 tianyi dbus-daemon[614]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.33' (uid=0 pid=1936 comm="/usr/sbin/NetworkManager --no-daemon ")
Jul 25 13:17:42 tianyi systemd[1]: Starting Network Manager Script Dispatcher Service...
Jul 25 13:17:42 tianyi dbus-daemon[614]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Jul 25 13:17:42 tianyi systemd[1]: Started Network Manager Script Dispatcher Service.
Jul 25 13:17:42 tianyi nm-dispatcher[11673]: req:1 'dhcp4-change' [eth0]: new request (5 scripts)
Jul 25 13:17:42 tianyi nm-dispatcher[11673]: req:1 'dhcp4-change' [eth0]: start running ordered scripts...
Jul 25 13:19:12 tianyi systemd[1]: dev-disk-by\x2duuid-c30fcda5\x2dd830\x2d4c90\x2db818\x2d831e33389b2e.device: Job dev-disk-by\x2duuid-c30fcda5\x2dd830\x2d4c90\x2db818\x2d831e33389b2e.device/start timed out.
Jul 25 13:19:12 tianyi systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-c30fcda5\x2dd830\x2d4c90\x2db818\x2d831e33389b2e.device.

四、日志服务器搭建

1.日志服务器介绍

rstslog是一个C/S架构,可以基于TCP和UDP工作,默认监听端口为514

2.服务端配置

①修改服务端配置文件

[root@IT-01 log]# vim  /etc/rsyslog.conf 
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

②重启服务及防火墙关闭

[root@IT-01 log]# systemctl restart rsyslog.service 
[root@IT-01 log]# systemctl stop firewalld

3.客户端配置

①修改配置文件

 vim  /etc/rsyslog.conf 

*.info                        @192.168.200.129

②重启服务

[root@node1 ~]# systemctl restart rsyslog.service 

4.测试日志

服务端查看

[root@IT-01 log]# tail -n 5 /var/log/messages
Jul 27 00:03:02 node1 dnf[3099]: Repository AppStream is listed more than once in the configuration
Jul 27 00:03:02 node1 dnf[3099]: Repository BaseOS is listed more than once in the configuration
Jul 27 00:03:02 node1 dnf[3099]: Repository AppStream is listed more than once in the configuration
Jul 27 00:03:02 node1 dnf[3099]: Repository BaseOS is listed more than once in the configuration
Jul 27 00:03:13 node1 dnf[3099]: CentOS-8 - AppStream - mirrors.aliyun.com       0.0  B/s |   0  B     00:10

五、日志轮询

1.logrotate介绍

logrotate工具会轮询日志文件,防止日志文件占用过多的系统空间。

配置文件
[root@IT-01 log]# /etc/logrotate.d/*
[root@IT-01 log]# /etc/logrotate.conf

2.日志目录查看

[root@IT-01 log]# ls
anaconda           cron                      firewalld            maillog-20210623   qemu-ga            spooler-20210725      vmware-network.9.log
audit              cron-20210623             gdm                  maillog-20210707   rhsm               sssd                  vmware-network.log
boot.log           cron-20210707             glusterfs            maillog-20210717   samba              swtpm                 vmware-vgauthsvc.log.0
boot.log-20210506  cron-20210717             hawkey.log           maillog-20210725   secure             tuned                 vmware-vmsvc-root.log
boot.log-20210507  cron-20210725             hawkey.log-20210623  messages           secure-20210623    vmware                vmware-vmtoolsd-root.log
boot.log-20210508  cups                      hawkey.log-20210707  messages-20210623  secure-20210707    vmware-network.1.log  vmware-vmusr-root.log
boot.log-20210511  dnf.librepo.log           hawkey.log-20210717  messages-20210707  secure-20210717    vmware-network.2.log  wtmp
boot.log-20210531  dnf.librepo.log-20210623  hawkey.log-20210725  messages-20210717  secure-20210725    vmware-network.3.log  zabbix
boot.log-20210613  dnf.librepo.log-20210707  httpd                messages-20210725  speech-dispatcher  vmware-network.4.log
boot.log-20210722  dnf.librepo.log-20210717  lastlog              mysql              spooler            vmware-network.5.log
btmp               dnf.librepo.log-20210725  libvirt              php-fpm            spooler-20210623   vmware-network.6.log
btmp-20210707      dnf.log                   mail                 ppp                spooler-20210707   vmware-network.7.log
chrony             dnf.rpm.log               maillog              private            spooler-20210717   vmware-network.8.log
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
121 3
|
27天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
172 78
|
6天前
|
存储 安全 Java
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
36 8
|
30天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
63 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
17天前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
35 7
|
2月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
198 48
|
26天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
94 13
|
20天前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
1月前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
2月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
58 3