首页 > 系统相关 >Linux学习——日志系统

Linux学习——日志系统

时间:2023-11-29 23:26:20浏览次数:42  
标签:log 学习 logrotate Linux var 日志 root localhost

目录

Linux学习——日志系统

10.1 日志管理系统

​ ​ ​ ​ ​ ​ ​ rsyslogd进程采集与记录绝大部分与系统相关的日志,包括安全、认证、计划任务等方面。

[root@localhost ~]# ps aux |grep rsyslogd  
root 677 0.2 0.2 216388  5408 ?   Ssl  19:11   0:00 /usr/sbin/rsyslogd 
–n 
root 2408  0.0  0.0 112664 968 pts/0 R+ 19:14 0:00 grep --color=auto 
rsyslogd 

​ ​ ​ ​ ​ ​ ​ ​ Apache、Nginx、MySQL等服务以自己的方式记录与分析日志。本章主要介绍与系统相关的日志。日志文件可以存放在本地,也可以存放在远程服务器。

10.1.2 常见的日志文件

  • /var/log目录下都是日志文件,文件名称以日期结尾表示该日志已经被切割过
[root@localhost ~]# ls /var/log 
anaconda           gdm              qemu-ga    vmware-vgauthsvc.log.0 
audit              glusterfs           rhsm    vmware-vmsvc.log 
boot.log           grubby_prune_debug  sa      vmware-vmusr.log 
boot.log-20180611  lastlog             samba   wpa_supplicant.log 
btmp               libvirt             secure  wtmp 
chrony             maillog             secure-20180611    Xorg.0.log 
cron               maillog-20180611    speech-dispatcher  Xorg.0.log.old 
cron-20180611      messages            spooler            Xorg.9.log 
cups               messages-20180611   spooler-20180611   yum.log 
dmesg              ntpstats            sssd 
dmesg.old          pluto               tallylog 
firewalld          ppp                 tuned 
  • /var/log/messages文件为系统的主日志文件,几乎系统发生的所有事件都会记录到此文件中
[root@qfedu-log ~]# tail /var/log/messages 
  • /var/log/secure文件为认证、安全相关的日志文件,涉及账号与密码输入的事件都会记录在此文件中
[root@localhost ~]# tail /var/log/secure
  • 创建一个普通用户user01,并切换到该用户模式下
[root@localhost ~]# useradd ssoo
[root@localhost ~]# su ssoo
[ssoo@localhost root]$ 
  • 在/var/log/secure文件中可以查看到新增加的两条日志信息
[root@localhost ~]# tailf /var/log/secure
Nov 27 23:33:45 localhost useradd[94614]: failed adding user 'mysql', exit code: 9
Nov 27 23:34:35 localhost polkitd[788]: Registered Authentication Agent for unix-process:119926:12864964 (system bus name :1.1239 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8)
Nov 27 23:34:44 localhost polkitd[788]: Unregistered Authentication Agent for unix-process:119926:12864964 (system bus name :1.1239, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)
Nov 29 13:53:53 localhost gdm-password]: gkr-pam: unlocked login keyring
Nov 29 14:02:19 localhost gdm-password]: gkr-pam: unlocked login keyring
Nov 29 22:11:31 localhost gdm-password]: gkr-pam: unlocked login keyring
Nov 29 22:11:47 localhost useradd[95849]: new group: name=ssoo, GID=1022
Nov 29 22:11:47 localhost useradd[95849]: new user: name=ssoo, UID=1022, GID=1022, home=/home/ssoo, shell=/bin/bash
Nov 29 22:11:53 localhost su: pam_unix(su:session): session opened for user ssoo by root(uid=0)
Nov 29 22:12:05 localhost su: pam_unix(su:session): session opened for user root by root(uid=1022)
  • 使用ssh命令远程登录到这台主机,在/var/log/secure文件中可以看到登录用户的信息
[root@localhost ~]# ssh 主机号
[root@localhost ~]# tailf /var/log/secure 
  • /var/log/cron文件记录调度任务的实际情况
[root@localhost ~]# tail /var/log/cron 
  • /var/log/dmesg文件记录系统开机时内核检测过程产生的信息
[root@localhost ~]# less /var/log/dmesg
  • /var/log/yum.log文件记录yum安装、升级软件的时间以及名称等信息
[root@localhost ~]# tail /var/log/yum.log 
  • 有一些文件是不能直接查看的,如/var/log/wtmp文件,它属于二进制文件,内容显示为乱码
[root@localhost ~]# cat /var/log/wtmp
~~~reboot3.10.0-1160.el7.x86_64�j�dP�5~~~runlevel3.10.0-1160.el7.x86_64�j�d[��#:0none:0kk�d=�#:0:0,l�dC
x):0root:0El�d-~~~reboot3.10.0-1160.el7.x86_64�}�d25~~~runlevel3.10.0-1160.el7.x86_64
�       ~�dt�:0root:0,~�di'
 pts/0/0root:0�d
:0none:0+�d��.0-1160.el7.x86_64��d5~~~runlevel3.10.0-1160.el7.x86_64�d��
              �
               pts/0/0none:0��d�X
pts/0/0none/�dh5
                  pts/0/0none:02�d"t�
                                      pts/1ts/1root192.168.15.1��d�����
                                                                         pts/1yMe��5
��pts/1/1none2ReM(tOe���pts/2ts/2root192.168.15.1�Qek�

w ”——命令可以查看/var/log/wtmp文件,了解当前登录到主机的用户

[root@localhost ~]# w                    pts/6/6root:0�Fge�
 22:19:37 up 1 day, 13:09,  9 users,  load average: 1.61, 1.50, 1.44
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0       :0               四22   ?xdm?   2:04m  1.18s /usr/libexec/gn
root     pts/0    :0               四22    5days  0.77s  0.05s vim abc.txt
root     pts/1    :0               五21    4days  0.58s  0.50s bash
none     :1       :1               五23   ?xdm?   2:04m  0.72s /usr/libexec/gn
none     pts/2    :1               五23    4days  0.09s  0.02s bash
none     pts/3    :1               五23    4days  0.03s  0.03s bash
root     pts/4    :0               13:48    7:08m  0.26s  0.03s vi /etc/sysconf
root     pts/5    :0               15:10    7:08m  0.12s  0.12s bash
root     pts/6    :0               22:11    1.00s  0.12s  0.02s w

last “——/var/log/btmp文件记录最近登录的用户,使用last命令查看

[root@localhost ~]# last
root     pts/6        :0               Wed Nov 29 22:11   still logged in   
root     pts/5        :0               Wed Nov 29 15:10   still logged in   
root     pts/4        :0               Wed Nov 29 13:48   still logged in   
root     pts/4        :0               Wed Nov 29 13:47 - 13:48  (00:00)    
root     pts/5        :0               Tue Nov 28 00:01 - 00:03  (00:02)    
root     pts/4        :0               Mon Nov 27 23:56 - 00:03  (00:06)    
root     pts/5        :0               Mon Nov 27 23:46 - 23:56  (00:10)    
root     pts/4        :0               Mon Nov 27 22:48 - 23:56  (01:07)    

10.1.3 rsylogd子系统

  • rsyslogd是默认安装的系统工具,查看其配置文件
[root@localhost ~]# rpm -qc rsyslog 
/etc/logrotate.d/syslog              //和日志轮转(切割)相关 
/etc/rsyslog.conf                    //rsyslogd的主配置文件 
/etc/sysconfig/rsyslog               //rsyslogd相关文件  
  • 查看rsyslogd的主配置文件,共有91行,文件中有一些模块,可以开启或者关闭某些功能
[root@localhost ~]# vim /etc/rsyslog.conf 
14 # Provides UDP syslog reception 
15 #$ModLoad imudp 
16 #$UDPServerRun 514 
18 # Provides TCP syslog reception 
19 #$ModLoad imtcp 
20 #$InputTCPServerRun 514 

​ ​ ​ ​ ​ ​ ​ rsyslogd可以把日志放到本地,也可以作为日志服务器接收远程发送来的日志信息。例如,允许514端口接收使用UDP协议转发过来的日志,需要打开这个模块,将14~15行“#”删除即可;允许514端口接收使用TCP协议转发过来的日志,将18~20行“#”删除即可。

  • 从第46行开始为日志文件的规则,规定不同设备对不同级别的信息的处理方式,其中“*”是通配符,代表任何设备或任何级别信息,none表示不对任何级别的信息进行记录,
46 #### RULES #### 
48 # Log all kernel messages to the console. 
49 # Logging much else clutters up the screen. 
50# kern.*                                            /dev/console 
52 # Log anything (except mail) of level info or higher. 
53 # Don't log private authentication messages! 
  • 第54行表示把所有info级别及高于该级别的信息记录到/var/log/messages文件中,不包括mail、authpriv与cron设备的信息
54*.info;mail.none;authpriv.none;cron.none      /var/log/messages
  • 第57行表示将authpriv设备中的任何级别的信息记录到/var/log/secure文件中,这主要是一些与认证、权限使用相关的信息
56 # The authpriv file has restricted access. 
57authpriv.*                                          /var/log/secure 
  • 第59行表示将mail设备中的任何级别的信息记录到/var/log/maillog文件中,这主要是与电子邮件相关的信息,
59 # Log all the mail messages in one place. 
60mail.*                                             /var/log/maillog 
  • 第64行表示将cron设备中的任何级别的信息记录到/var/log/cron文件中,这主要是与系统中定期执行的任务相关的信息
63 # Log cron stuff 
64cron.*                                            /var/log/cron 
  • 第67行表示将任何设备的emerg级别的信息发送给所有正在系统上的用户
66 # Everybody gets emergency messages 
67*.emerg                                              :omusrmsg:*
  • 第70行表示将uucp与news设备的crit级别的信息记录到/var/log/spooler文件中,
69 # Save news errors of level crit and higher in a special file. 
70uucp,news.crit                                       /var/log/spooler 
  • 第73行表示将与系统启动相关的信息记录到/var/log/boot.log文件中
72 # Save boot messages also to boot.log 
73 local7.*                                             /var/log/boot.log 

man “——查看日志文件规则中的设备和级别

[root@qfedu-log ~]# man 3 syslog 
  • 查找函数syslog()中的facility参数
acility 
LOG_AUTH                         安全认证 
LOG_AUTHPRIV                     安全认证(private) 
LOG_CRON                         cron和at 
LOG_DAEMON                       后台进程 
LOG_FTP                          ftp守护进程 
LOG_KERN                         内核消息 
LOG_LOCAL0 through LOG_LOCAL7    用户自定义设备
LOG_LPR                           行式打印系统 
LOG_MAIL                          邮件系统 
LOG_NEWS                          USENET news系统 
LOG_SYSLOG                        syslogd自身产生的日志         
LOG_USER (default)                通用用户级消息 
LOG_UUCP                          UUCP系统 
  • 查找函数syslog()中的level参数
level 
LOG_EMERG               紧急,致命,服务无法继续运行,如配置文件丢失 
LOG_ALERT               报警,需要立即处理,如磁盘空使用95% 
LOG_CRIT                致命行为 
LOG_ERR                 错误行为 
LOG_WARNING             警告信息 
LOG_NOTICE              普通 
LOG_INFO                标准信息 
LOG_DEBUG               调试信息,排错所需,一般不建议使用 

logger ”——可以往系统中写入日志

[root@qfedu-log ~]# logger -p authpriv.info qfedu 
[root@qfedu-log ~]# tail /var/log/secure 
Jun 13 16:47:46 qfedu-log root: qfedu 

10.2 logrotate 日志轮转

​ ​ ​ ​ ​ ​ ​ logrotate是十分有用的工具,它可以自动对日志进行轮转(切割)、压缩以及删除旧的日志文件,主流Linux发行版都默认安装logrotate包。

  • 查看每日计划任务下的logrotate文件
[root@localhost ~]# cat /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
  • 打开配置文件logrotate.conf,查看细节可以使用man工具
[root@localhost ~]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly //轮转周期为一周
weekly

# keep 4 weeks worth of backlogs //保留4个日志文件
rotate 4

# create new (empty) log files after rotating old ones //日志文件被重命名,新建文件继续存储
create

# use date as a suffix of the rotated file  //使用日期作为轮转日志文件的后缀名
dateext

# uncomment this if you want your log files compressed //对日志文件进行压缩
#compress

# RPM packages drop log rotation information into this directory //包含该目录下的文件
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
////对/var/log/wtmp设置日志轮转的方
/var/log/wtmp { 
   monthly                        //每月轮转一次 
   create 0664 root utmp          //轮转后创建新文件,并设置权限和属组 
   minsize 1M                    //最小达到1M才轮转 
   rotate 1                       //保留一份 
 }  
对/var/log/btmp设置日志轮转的方法
/var/log/btmp { 
   missingok                  //丢失不提示 
   monthly                    //每月轮转一次  
   create 0600 root utmp      //轮转后创建新文件,并设置权限和属组 
   rotate 1                   //保留一份 
} 
# system-specific logs may be also be configured here.

  • 轮转文件/var/log/yum.log。打开日志轮转规则文件/etc/logrotate.d/yum,其中文件/var/log/yum.log为被轮转文件
[root@localhost ~]# vim /etc/logrotate.d/yum 
/var/log/yum.log { 
   missingok 
   notifempty             //空文件不进行轮转,将其注释掉
   size 30k               //大小达到30k即进行轮转 
   yearly                 //每年进行一次轮转 
   create 0600 root root 
} 
  • 为了方便演示,修改为每天轮转一次,保留3份,并设置权限为777,其余代码行全部注释掉
/var/log/yum.log { 
    missingok 
#    notifempty 
#    size 30k 
#    yearly 
     daliy 
     rotate 3 
#    create 0600 root root 
     create 0777 root root 
} 
  • 查看当前已存在轮转日志文件
[root@localhost ~]# ll /var/log/yum*
-rw-------. 1 root root 4227 11月 27 23:34 /var/log/yum.log
  • 查看上一次轮转的时间信息
[root@localhost ~]# grep 'yum' /var/lib/logrotate/logrotate.status
"/var/log/yum.log" 2023-9-10-17:0:0
  • 手动进行轮转测试
[root@localhost ~]# logrotate -s /var/lib/logrotate/logrotate.status 
/etc/logrotate.conf  
[root@localhost ~]# ll /var/log/yum*
-rw-------. 1 root root 4227 11月 27 23:34 /var/log/yum.log 
-rw-------. 1 root root 4227 11月 29 23:10 /var/log/yum.log -20231129
  • 通过修改系统时间也可以进行轮转测试
[root@localhost ~]# date
2023年 11月 29日 星期三 22:51:57 CST
  • 重新设置系统日期
[root@localhost ~]# date 06261843
2023年 06月 26日 星期一 18:43:00 CST
[root@localhost ~]# date
2023年 06月 26日 星期一 18:43:05 CST
  • 手动轮转,并查看新的日志文件
[root@localhost ~]# logrotate -s /var/lib/logrotate/logrotate.status 
/etc/logrotate.conf 
[root@localhost ~]# ll /var/log/yum* 
-rwxrwxrwx. 1 root root 0 Jun 26 16:43 /var/log/yum.log 
-rw-------. 1 root root 4227 11月 27 23:10 /var/log/yum.log -20231129
-rw-------. 1 root root 4227 6月 26 23:29 /var/log/yum.log -20230626
  • 轮转文件/etc/logrotate.d/messages。建议先将/etc/logrotate.d/syslog中的/var/log/messages删除,以免与后续操作发生冲突。给文件/var/log/messages添加a属性
[root@qfedu-log ~]# chattr +a /var/log/messages 
[root@qfedu-log ~]# lsattr /var/log/messages 
-----a---------- /var/log/messages 
  • 此时对/var/log/messages文件做轮转会发生错误,需要对其规则文件/etc/logrotate.d/messages做配置
/var/log/messages { 
    prerotate 
       chattr -a /var/log/messages    
    endscript 
    #notifempty 
    daily 
create 0600 root root 
    missingok 
     rotate 5 
    postrotate 
        chattr +a /var/log/messages 
    endscript 
} 

10.3 本章小结

​ ​ ​ ​ ​ ​ ​ 本章主要讲解了日志系统的相关知识,包括日志处理进程和日志的轮转。在实际环境中,用户需要对日志进行采集,当数据量较大时,需要进行轮转,最终还需对日志进行分析。

10.4 参考资料

Linux日志系统

标签:log,学习,logrotate,Linux,var,日志,root,localhost
From: https://www.cnblogs.com/twlwbiubiu/p/17866150.html

相关文章

  • 音视频开发工程师需要学习哪些内容?标准技术路线是什么?
    前言音视频行业是近五年IT行业的突起的新贵,在此之前大家用到最多的无非就是ffmpeg编解码。目前来看音视频开发领域的大方向也不少,比较火热的流媒体服务器,安防,安卓NDK,苹果IOS等。咱们先来看一下音视频的运作流程!!音视频生产及消费的核心环节其实只有:采集(声音和图像的数字化)→编码(压......
  • [TS手册学习] 02_类型收窄 Narrowing
    TS官方手册:TypeScript:Handbook-TheTypeScriptHandbook(typescriptlang.org)一个变量如果声明为联合类型,而后续操作需要针对其具体的单一类型做不同处理,这个过程就叫做类型收窄(Narrowing)。常见的做法或情形有以下:typeof类型保护(typeguards)typeof是JS中的操作符,......
  • 11 29学习内容
    今天完成内容:实验一:百度机器翻译SDK实验  任务一:下载配置百度翻译Java相关库及环境(占10%)。    任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。    任务三:完成百度翻译相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻......
  • 基于深度学习网络的施工人员安全帽佩戴检测matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述        基于深度学习网络的施工人员安全帽佩戴检测是一种先进的技术,它利用深度学习算法对图像或视频进行分析,以检测施工人员是否佩戴了安全帽。基于深度学习网络的施工人员安全帽佩戴......
  • Docker 容器日志查看和清理
    ......
  • 2023-2024 20231313《计算机基础与程序设计》第十周学习总结
    2023-202420231313《计算机基础与程序设计》第十周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第十周学习总结作业内容计算机科学概论第12,13,14章《C语言程序设计》第9章并完成云班课测试,信息系统、数据库与SQL、人工智能与专家系统、人工......
  • Django学习(一) 之 环境搭建
    写在前面最近比较迷AI绘图,那就上个图吧,我感觉还挺好看的。可能会有人说,之前不一致分享的是flask吗,怎么突然改到django了?这个问题问得好,开发环境遇到了一些小困难!不过django,真的是很流行,一点都不过时,这您放心好了!不多说,直接看效果吧!环境搭建1、当前环境版本python==3.9.1......
  • 第十三周Linux教材第十四章学习笔记——MySQL数据库系统
    MySQL数据库系统MySQL是一个广泛使用的关系型数据库管理系统(RDBMS),它是开源的,支持多用户和多线程。14.1基础知识1.数据库基础概念数据库(Database):**数据库是一个包含相关数据的集合,并提供了对这些数据的有效管理和访问。表(Table):**表是数据库中的基本数据结构,用于存储相关......
  • mysql慢查询日志
    一、开启并查看慢查询日志1、查看慢查询配置showvariableslike'%query%' 可以看到slow_query_log的值是OFF,也就是mysql默认是不启用慢查询日志的。这里还有个long_query_time,默认是10秒,也就是超过了10秒即为慢查询。log_queries_not_using_indexes,如果设置为ON,则会将所......
  • openGauss学习笔记-134 openGauss 数据库运维-例行维护-检查操作系统参数
    openGauss学习笔记-134openGauss数据库运维-例行维护-检查操作系统参数134.1检查办法通过openGauss提供的gs_checkos工具可以完成操作系统状态检查。前提条件当前的硬件和网络环境正常。各主机间root互信状态正常。只能使用root用户执行gs_checkos命令。操作步骤以r......