一、实验环境(rhel7.0版本)

主机环境:rhel7.0

各主机信息

主机名 IP
server 172.25.254.1
client 172.25.254.2

二、日志文件介绍

1、Linux  常见的日志文件文件名

日志文件可以帮助我们了解很多系统重要地事件,包括登录者的部分信息,因此日志文件地权限通常设置为仅有 root 能够读取而已。

(1)/varlog/boot.log

开机启动的时候系统内核会去检测与启动硬件,接下来开始启动各种内核支持的功能等。这些流程都会记录在  /var/log/boot.log  里面。不过这个文件只会存储本次开机启动的信息,之前的启动信息并不会被保留下来。

(2)/var/log/cron

你的  crontab  任务有没有实际被执行?执行过程有没有发生错误?你的  /etc/crontab  是否编写正确?在这个日志文件内查询看看。

(3)/var/log/dmesg

记录系统在开机的时候内核检测过程所产生的各项信息。由于  CentOS  默认将开机启动时内核的硬件检测过程取消显示,因此额外将数据记录一份在这个文件中。

(4)/var/log/lastlog

可以记录系统上面所有账号最近一次登录系统时的相关信息。lastlog  命令就是利用这个文件的记录信息来显示的。

(5)/var/log/maillog

记录邮件的往来信息,其实主要是记录  postfix (SMTP 协议提供者)与 dovecot(POP3 协议提供者)所产生的信息。SMTP  是发送邮件所使用的通讯协议,POP3 则是接收邮件使用的通讯协议。postfix  与 dovecot  则分别是两个完成通讯协议的软件,

(6)/var/log/messages

这个文件相当重要,几乎系统发生的错误信息(或是重要的信息)都会记录在这个文件中,如果系统发生莫名的错误时,这个文件是一定要查看的日志文件之一。

(7)/var/log/secure

基本上,只要牵涉到【需要输入账号密码】的软件,那么当登录时(不管登录正确或错误)都会被记录在此文件中。包括系统的 login 程序、图形用户界面模式登录所使用的  gdm、su、sudo  等程序,还有网络连接的  ssh、telnet  等程序,登录信息都会被记录在这里。

(8)/var/log/wtmp

这两个文件可以记录正确登录系统者的账户信息(wtmp),last  命令就是来读取  wtmp  显示的,这对于检查一般账号者的使用操作很有帮助。

(9)/var/log/httpd/*、/var/log/samba/*

不同的网络服务会使用自己的日志文件来记录它们自己产生的各项信息,上述的目录则是个别服务所产生的日志文件。

2、日志文件所需相关服务(daemon)与程序

  • systemd-journald.service:最主要的信息记录者,由  systemd  提供
  • rsyslog.service:主要收集登录系统与网络等服务的信息
  • logrotate:主要在进行日志文件的轮循功能。

所谓的  logrotate  基本上就是将旧的日志文件更改名称,然后建立一个空的日志文件,如此一来,新的日志文件将重新开始记录,然后只要将旧的日志文件留下一阵子,就可以达到将日志文件【轮循】的目的。此外,如果旧的记录(大概要保存几个月)保存了一段时间没有问题,那么就可以让系统自动地将它删除,免得占用很对宝贵地硬盘空间。

3、Redhat 7.x  使用  systemd  提供的  journalctl  日志管理

基本上,系统由  systemd  所管理,那所有经由  systemd  启动的服务,如果再启动或结束的过程中发生一些问题或是正常的信息,就会将该信息由 systemd-journald.service 以二进制的方式记录下来,之后再将这个信息发送给 rsyslog.service  作进一步的记录。

4、日志文件内容的一般格式

系统产生的信息并记录下来的内容中,每条信息均会记录下面几个重要内容:

  • 事件发生的日期与时间;
  • 发生此事件的主机名;
  • 启动此事件的服务名称(systemd、crond  等)或命令与函数名称(如  su、login...);
  • 该信息的实际内容。

另外,不知道你会不会觉得很奇怪?为什么日志文件就是登录本机的数据,那怎么日志文件格式中,第二个字段项目是【主机名】?这是因为日志文件可以做成日志文件服务器,可以收集来自其他服务器的日志文件数据。所以,为了了解到该信息主要是来自于哪一台主机,当然得要有第二个字段项目说明该信息来自哪一台主机名。

三、rsyslog.service:记录日志文件的服务

1、rsyslog.service 的配置文件:/etc/rsyslog.conf

(1)/etc/rsyslog.conf  文件基本模块介绍

/etc/rsyslog.conf   这个文件规定了【(1)什么服务  (2)的什么等级信息  (3)需要被记录在哪里(设备或文件)】这三个东西。所以设置的语法会是这样:

服务名臣[.=!]信息等级         信息记录的文件名或设备或主机
# 下面以 mail 这个服务产生的 info 等级为例。60 mail.*                                                  -/var/log/maillog
# 这一行说明:mail 服务产生的大于等于 info 等级的信息,都记录到 /var/log/maillog 文件中

我们将上面的数据简单的分为三部分来说明:

【1】、服务名称

可使用 man  3  syslog  查询到相关的信息

相对序号 服务类别 说明
0 kern(kernel) 就是内核(kernel)产生的信息,大部分都是硬件检测以及内核功能的启用
1 user 在用户层级所产生的信息,例如后续会介绍到的,用户使用 logger 明厘米嗯来记录日志文件的功能
2 mail 只要与邮件收发有关的信息记录都属于这个
3 daemon 主要是系统的服务所产生的信息,例如 systemd  的信息就与这个有关
4 auth 主要与认证/授权有关的机制,例如 login、ssh、su 等需要账号/密码的东西
5 syslog 就是由  syslog  相关协议产生的信息,其实就是 rsyslogd 这个程序本身产生的信息
6 lpr 亦即是打印相关的信息
7 news 与新闻组服务器有关的东西
8 uucp 全名为 UNIX  to  UNIX  Protocol,早期用于 UNIX  系统间的程序数据交换
9 cron 就是计划任务 cron、at 等产生信息记录的地方
10 authpriv 与 auth 类似,但记录较多账号的私人信息,包括 pam 模块的运行等
11 ftp 与 FTP 通讯协议有关的信息输出
16~23 local0~local7 保留给本机用户使用的一些日志信息,较常与终端互动

举例来说,sendmail 与 postfix 及 dovecot 都是与邮件有关的软件,这些软件在设计日志文件记录时,都会主动调用   syslog  内的  mail  服务名称。所以上述三个软件(sendmail、postfix、dovecot)产生的信息在 syslog 看起来,就会是【mail】类型的服务了。

【2】、信息等级

可使用 man  3  syslog  查询到相关的信息

等级数值 等级名称 说明
8 none 什么都不记录
7 debug 用来 debug (除错)时产生的数据
6 info 仅是一些基本的信息说明而已
5 notice 虽然是正常信息,但比 indo 还需要被注意到的一些信息内容
4 warning(warn) 警示的信息,可能有问题,但是还不至于影响到某个 daemon 运行的信息。基本上,info、notice、warn 这三个信息等级都是在告知一些基本信息而已,应该还不至于造成一些系统运行困扰
3 err(error) 一些重大的错误信息,例如篇日志文件的某些设置值造成该服务无法启动的信息说明,通常借由 err 的错误告知,应该可以了解到该服务无法启动的问题
2 crit 比 erroe  还要严重的错误信息,这个 crit 是临界点(critical)的缩写,这个错误已经很严重了
1 alert 警告,已经很有问题的等级,比 crit 还要严重
0 emerg(panic) 疼痛等级,意指系统已经几乎要宕机的状态,很严重的错误等级。通常大概只有硬件出问题,导致整个内核无法顺利运行,就会出现这样的等级的信息。

特别留意一下在信息等级之前还有【.=!】的连接符号,它代表的意思是这样的:

  • .:代表【比后面还要严重的等级(含该等级)都会被记录下来】的意思,例如:mail.info 代表只要是 mail 的信息,而且该信息等级严重于  info (含 info 本身)时,就会被记录下来的意思。
  • .=:代表所需要的等级就是后面接的等级而已,其他的不要
  • .!:代表不等于,亦即是除了该等级外的其他等级都记录

【3】、信息记录的文件名或设备或主机

下面是一些常见的放置处:

  1. 文件的绝对路径:通常就是放在 /var/log  里面的文件
  2. 打印机或其他:例如  /dev/lp0  这个打印机设备
  3. 用户名称:显示给用户
  4. 远程主机:例如  @student,当然,也要对方主机也能支持才行
  5. *::代表【目前在线的所有人】,类似 wall  这个命令的意义。

(2)例题

【1】、如果我要将我的 mail 相关的数据写入到 /var/log/maillog  当中,那么 /etc/rsyslog.conf  的语法如何设计?

mail.info    /var/log/maillog

【2】、我要将新闻组数据(news)及计划任务(cron)的信息都写入到一个称为  /var/log/cronnews 的文件中,但是这两个程序的警告信息则额外地记录在 /var/log/cronnews.warn  中,那我该如何设置 rsyslog.conf

news.*;cron.*    /var/log/cronnews
news.=warn;cron.=warn    /var/log/cronnews.warn

【3】、我的  messages  这个文件需要记录所有的信息,但是就是不想要记录  cron、mail 及 news  的信息,那么应该怎么写才好?

可以有下面的两种写法:

*.*;cron,mail,news.none    /var/log/messages
*.*;cron.none;mail.none;news.none    /var/log/messages

使用【,】分隔时,那么等级只要接在最后一个即可,如果是以【;】来分的话,那么就需要将服务与等级都写上去。

(3)Redhat  7.x  默认的 rsyslog.conf  内容

[root@server ~]# vim /etc/rsyslog.conf50 #kern.*                                                 /dev/console54 *.info;mail.none;authpriv.none;cron.none                /var/log/messages57 authpriv.*                                              /var/log/secure60 mail.*                                                  -/var/log/maillog64 cron.*                                                  /var/log/cron67 *.emerg                                                 :omusrmsg:*70 uucp,news.crit                                          /var/log/spooler73 local7.*                                                /var/log/boot.log
  1. #kern.*:只要是内核产生的信息,全部都送到  console(终端)去。console  通常是由外部设备连接到系统而来。
  2. *.info;mail.none;authpriv.none;cron.none:由于 mail、authpriv、cron 等类别产生的信息较多,且已经写入到下面的数个文件中,因此在 /va/log/messages 里面就不记录这些项目,除此之外的其他信息都写入  /var/log/messages 中。
  3. authpriv.*:认证方面的信息均写入 /var/log/secure 文件。
  4. mail.*:邮件方面的信息则均写入  /var/log/maillog 文件。
  5. cron.*:计划任务均写入  /var/log/cron  文件。
  6. *.emerg:当产生最严重的错误等级时,将该等级的信息以  wall  的方式广播给所有系统登录的账号,要这么做的原因是希望在线的用户能够赶紧通知系统管理员来处理这么可怕的错误问题
  7. uucp,news.crit:uucp  是早期  UNIX-linke  系统进行数据传递的通讯协议,后来常用在新闻组,news 则是新闻组。当新闻组方面的信息有严重错误时就写入  /var/log/spoller  文件中。
  8. local7.*:将本机启动时应该吸纳是到屏幕的信息写入到  /var/log/boot.log  文件中。

上面第四行关于  mail  的记录中,在记录的文件  /var/log/maillog  前面有个减号【-】是干什么用的?由于邮件所产生的信息比较多,因此我们希望邮件产生的信息先存储在速度较快的内存缓冲区中(buffer),等到数据量足够打了才一次性地将所由数据都写入磁盘,这样有助于日志文件地读取性能。只不过有与信息是暂存在内存中,因此若不正常关机导致登录信息未回到日志文件中,可能会造成部分数据地丢失。

(4)自行增加日志文件文件功能

【1】、范例一:如果你想要让【所有的信息】都额外写入到  /var/log/admin.log  这个文件时,你该怎么做?

1、先设置好所要添加的参数
[root@server ~]# vim /etc/rsyslog.conf    #在文件的任意地方,加入下面这两行内容75 # Add by root 2019/06/16   <==再次强调,自己修改的时候加入一些说明76  *.*             /var/log/admin.log2、重新启动 rsyslog.service
[root@server ~]# systemctl restart rsyslog.service
[root@server ~]# ll -d /var/log/admin.log
-rw-r--r--. 1 root root 531 Jun 16 14:30 /var/log/admin.log
# 看吧,自动建立了这个日志文件

2、日志文件的安全性设置

有没有办法防止日志文件被删除?或是被  root  自己不小心修改?

基本上,我们可以通过一个隐藏的属性来设置你的日志文件,成为【只可以增加数据,但是不能被删除】的状态——使用 chattr  的a 这个属性,那么或许可以达到些许的保护。

不过,如果你的  root  账号被破解,那么下面的设置是无法保护的,因为你要记得【root  是可以在系统上面进行任何事情的】

另外,要注意的是,当【你不小心“手动”修改过日志文件后,例如  /var/log/messages,当你不小心用 vim 打开它,离开却执行  :wq  的参数,那么该文件未来将不会再继续进行记录操作】,这个问题真的经常发生。由于你以  vim  存储了日志文件,则 rsyslog.service 会被误判为该文件已被修改过了,将导致 rsyslog.service  不再写入新内容到该文件。要想让该日志文件继续写入,你只要重启 rsyslog.service  即可。

[root@server ~]# chattr +a /var/log/admin.log
[root@server ~]# lsattr /var/log/admin.log
-----a---------- /var/log/admin.log

3、日志文件服务器的设置

Redhat 7.x  默认的 rsyslog.service  本身就已经具有这个日志文件服务器的功能了,只是默认并没有启动该功能而已。你可以通过 【man  rsyslogd】去查询一下相关的选项就能够知道。

既然是日志文件服务器,那么我们的  Linux  主机当然会启动一个端口来监听,这个默认的端口就是 UDP  或  TCP 的514 端口。

(1)服务端(日志接收方)——172.25.254.1

1、编辑配置文件
[root@server ~]# vim /etc/rsyslog.conf
# 找到下面这几行 14 # Provides UDP syslog reception15 #$ModLoad imudp16 #$UDPServerRun 51417 18 # Provides TCP syslog reception19 #$ModLoad imtcp20 #$InputTCPServerRun 514
# 上面的是 UDP 端口,下面的是 TCP 端口。UDP:不可靠传输协议(无连接);TCP:可靠传输协议(有连接)
# 下面使用 UDP 端口,即取消 15 和 16 行的注释 15 $ModLoad imudp         # 日志接受模块16 $UDPServerRun 514      # 开启接受端口2、重启服务
[root@server ~]# systemctl restart rsyslog.service
[root@server ~]# netstat -antulpe | grep 514
udp        0      0 0.0.0.0:514             0.0.0.0:*                           0          82148      5314/rsyslogd
udp6       0      0 :::514                  :::*                                0          82149      5314/rsyslogd  3、关闭防火墙
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld

(2)客户端(日志发送方)——172.25.254.2

1、编辑配置文件
[root@client ~]# vim /etc/rsyslog.conf     #在文件的任意地方,加入下面这行内容75 *.*                                                     @172.25.254.1
### *.*                                                    @@172.25.254.1  #若用 TCP 传输,设置要变成这样2、重启服务
[root@client ~]# systemctl restart rsyslog.service 

(3)测试

(1)在发送方和接受方都清空日志文件

[root@server ~]# > /var/log/messages[root@client ~]# > /var/log/messages

(2)在日志发送方:

[root@client ~]# logger test
[root@client ~]# cat /var/log/messages   # 查看日志是否生成
...(省略)...
Jun 16 15:22:31 client root: test

(3)在日志接受方查看

[root@server ~]# cat /var/log/messages | grep test
Jun 16 15:26:15 client root: test

4、日志采集格式的设定

(1)客户端(日志发送方)——172.25.254.2

1、编辑配置文件
[root@client ~]# vim /etc/rsyslog.conf   #在文件的任意地方加入如下两行的内容45 $template LOGFMT,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"   77 *.*                                                     /var/log/xin;LOGFMT2、重启服务
[root@client ~]# systemctl restart rsyslog.service ### 参数介绍 ###
LOGFMT                   <==相当于变量名
%timegenerated%          <==显示日志时间
%FROMHOST-IP%            <==显示主机IP
%syslogtag%              <==日志记录目标
%msg%"                   <==日志内容
\n                       <==换行

(2)测试

(1)在发送方和接受方都清空日志文件

[root@server ~]# > /var/log/messages[root@client ~]# > /var/log/messages
[root@client ~]# > /var/log/xin 

(2)在日志发送方:

[root@client ~]# logger world
[root@client ~]# cat /var/log/messages | grep world
Jun 16 16:01:29 client root: world
[root@client ~]# cat /var/log/xin | grep world
Jun 16 16:01:29 127.0.0.1 root: world

(3)在日志接受方查看

[root@server ~]# cat /var/log/messages | grep world
Jun 16 16:01:29 client root: world

四、日志文件的轮循(logrotate)

rsyslog  使用  daemon  的方式来启动,当有需求的时候立刻就会被执行,但是  logrotate  却是在规定的时间到了之后才来进行日志文件的轮循,所以这个  logrotate  程序当然就是挂在  cron  下面进行的。

仔细看一下,/etc/cron.daily/ 里面的文件,嘿嘿,/etc/cron.daily/logrotate  就是记录了每天要进行的日志文件轮循的操作。

1、logrotate 的配置文件

既然 logrotate  主要是针对日志文件来进行轮循的操作,所以,它当然必须要记录【在什么状态下才经日志文件进行轮循】的设置。那么  logrotate  这个程序的参数配置文件在哪里?那就是:

  • /etc/logrotate.conf
  • /etc/logrotate.d/

其中 logrotate.conf  才是主要的参数文件,至于 logrotate.d  则是一个目录,该目录里面的所有文件都会被主动地读入  /etc/logrotate.conf  当中来使用。另外,在 /etc/logrotate.d/ 里面地文件中,如果没有规定到一些详细设置,则以  /etc/logrotate.conf  这个文件地规定来指定为默认值。

下面,我们来看一下默认的  logrotate  的内容吧!

[root@server ~]# vim /etc/logrotate.conf
# 下面的设置是"logrotate 的默认设置值",如果个别的文件设置了其他的参数,
# 则将以个别的文件设置为主,若该文件没有设置到的参数则以这个文件的内容为默认值。3 weekly         <==默认每个星期对日志文件进行一次轮循的任务6 rotate 4       <==保留几个日志文件,默认是保留4个9 create         <==由于日志文件被更名,因此建立一个新的来继续存储之意12 dateext        <==就是这个设置值,可以让被轮循的文件名称加上日期18 include /etc/logrotate.d     <==将 /etc/logrotate.d 这个目录中的所有文件都读进来执行轮循的任务21 /var/log/wtmp {           <==仅针对/var/log/wtmp 所设置的参数22     monthly           <==每个月一次,替换每周23     create 0664 root utmp     <==指定新建文件的权限与所属账号/组24         minsize 1M         <==文件容量一定要超过 1M 后才进行轮循(略过时间参数)25     rotate 1           <==仅保留一个,亦即仅有 wtmp.1 保留而已26 }

现将 /etc/logrotate.conf 文件的语法总结如下:

日志文件的绝对路径与文件名...{

个别的参数设置值,如 monthly,compress 等

}

下面,我们再以  /etc/logrotate.d/syslog  这个轮循 rsyslog.service  服务的文件,来看看该如何设置它的轮循?

[root@server ~]# vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{sharedscriptspostrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || trueendscript
}

在上面的语法当中,我们知道正确的  logrotate  的写法为:

  • 文件名:被处理的日志文件绝对路径文件名写在前面,可以使用空格符分隔多个日志文件;
  • 参数:上述文件名进行轮循的参数使用 {} 包括起来;
  • 执行脚本:可调用外部命令来进行额外的命令执行,这个设置值需与 sharedscripts...endscript 设置合用才行。至于可用的环境为:
  1. prerotate:在启动  logrotate  之前进行的命令,例如修改日志文件的属性等操作;
  2. postrotate:在做完 logrotate  之后启动的命令,例如重新启动(kill  -HUP)某个服务;
  3. prerotate  与  postrotate:对于已机上特殊属性的文件处理上面,是相当重要的执行程序。

那么  /etc/logrotate.d/syslog  内设置的 5 个文件的轮循功能就变成了:

  1. 该设置只对  /var/log  内的cron、maillog、messages、secure、spoller 有效;
  2. 日志文件轮循每周一次,保留4个且轮循下来的日志文件不进行压缩(未给该默认值)
  3. 轮循完毕后(postrotate)取得 syslog  的PID 后,以 kill  -HUP  重新启动  syslogd。

请特别留意,那么/bin/kill  -HUP  的意义,这一行的目的在于将系统的  rsyslogd  重新以其参数文件(rsyslog.conf)的数据读入一次,也可以想成是  reload  的意思。由于我们建立了一个空的记录文件,如果不执行此行来重新启动服务的话,那么记录的时候将会发生错误。

假设我们针对  /var/log/message  这个文件增加  chattr  +a  的属性时,依据  logrotate  的工作原理,我们知道,这个  /var/log/messages 这个文件将被更名成为  /var/log/messages.1。但是由于加上这个  +a  的参数,所以更名是不可能成功的。那怎么办?就利用  prerotate  与 postrotate  来进行日志文件轮循前、后所需要做的操作。

[root@server ~]# vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{sharedscriptsprerotate /usr/bin/chattr -a /var/log/messages          <==新增的内容endscript            <==新增的内容sharedscripts          <==新增的内容postrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true/usr/bin/chattr -a /var/log/messages           <==新增的内容endscript
}

2、实际测试 logrotate 的操作

logrotate [-vf] logfile
选项与参数:
-v:启动显示模式,会显示 logrotate 运行的过程
-f:不论是否符合配置文件的数据,强制每个日志文件都进行轮循的操作

【1】、范例一:强制执行一次 logrotate  看看整个流程是什么

[root@server ~]# logrotate -v /etc/logrotate.conf
reading config file /etc/logrotate.conf    <==读取主要配置文件
including /etc/logrotate.d                <==调用外部的设置
reading config file chrony                <==就是外部设置
...(中间省略)...
Handling 20 logs            <==共有20个日志文件被记录
...(中间省略)...
rotating pattern: /var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spoolerweekly (4 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/cron   <==开始处理 messagelog does not need rotating    <==因为时间未到,不需要修改

五、systemd-journald.service  简介

虽然  systemd-journald  所记录的数据在内存中,但是系统还是利用文件属性是将它记录到  /run/log  下面。不过  /run  在 Redhat  7.x 的系统上,其实是内存中的数据,所以重新启动后,这个  /run/log  下面的数据当然就被刷新,旧的就不存在了。

1、使用 journalctl  查看登录信息

journalctl [-nrpf] [--since TIME] [--util TIME] _optional
选项与参数:
默认会显示全部的 log 内容,从旧的输出到最新的信息
-n:显示最近的几行的意思,找最新的信息相当有用
-r:反向输出,从罪新娘的输出到最旧的信息
-p:显示后面所接的信息重要性排序。参看上面的 rsyslogd 的信息等级对应的表格
-f:类似 tail -f 的功能,持续显示 journal 日志的内容(即时监控时相当有帮助)
--since --util:设置开始与结束的时间,让在该期间内的数据输出而已
_SYSTEMD_UNIT=unit.service:只输出 unit.service 的信息而已
_COMM=bash:只输出与 bash 有关的信息
_PID=pid:只输出此 PID 号的信息
_UID=uid:只输出此 UID 号的信息
SYSLOG_FACILITY=[0-23]:使用 syslog.h 规范的服务对应的序号来调用出正确的数据。参看上面的 rsyslogd 的服务名称对应的表格

【1】、范例一:显示目ian系统中所有的 journal 日志数据

通过  less  一页页翻动给管理员查看,数据量相当大。

【2】、范例二:仅显示出 2019/06/16 整天以及(2)仅今天(3)仅昨天的日志数据内容

通过  less  一页页翻动给管理员查看,数据量相当大。

【3】、范例三:只找出 crond.service 的数据,同时只列出最新的 10 条即可

通过  less  一页页翻动给管理员查看,数据量相当大。

【4】、范例四:找出 su 、login 执行的日志文件,同时只列出最新的 10 条即可

【5】、范例五:找出信息严重等级为错误(error)的信息

通过  less  一页页翻动给管理员查看,数据量相当大。

【6】、范例六、找出与登录认证服务(auth、authprive)有关的日志文件信息

【7】、查看日志的详细参数

sshd服务重启之后,进程号发生改变

2、logger  命令的应用

logger [-p 服务名称.等级] "信息"
选项与参数:
服务名称.等级:参考上面 rsyslogd 的内容

【1】、范例一:指定一下,让 root 来使用  logger  来传送数据到日志文件中

3、保存 journal  的方式

再强调一次,这个  systemd-journald.service  的信息是不会放到下一次开机启动后的,所以,重新启动后,之前的记录会丢失。虽然我们大概都有启动  rsyslogd  这个服务来进行后续的日志文件放置,不过如果你比较喜欢  journalctl  的读写方式,那么可以将这些数据保存下来。

systemd-journald.service  的配置文件为:/etc/systemd/journald.conf。也可以通过  【man 5 journald.conf】 来查看。

第一步:mkdir  /var/log/journal

第二步:chown root:systemd-journal /var/log/journal/

第三步:chmod  2775  /var/log/journal

第四步:重新加载该配置进程

killall -1 systemd-journald   或  systemctl  restart  systemd-journald.service

第五步:ls /var/log/journal,会发现生成了b398e018986f4c65894352dec2a79216目录(用于存放journal日志)

系统重启之后的日志,存放在/var/log/journal/b398e018986f4c65894352dec2a79216/目录中

六、分析日志文件

1、Redhat  默认提供的  logwatch

Redhat  7.x  上面默认的  logwatch  所提供的分析工具,它会每天分析一次日志文件,并且将数据以  email  的格式寄送给  root。

不过,在我们的安装方式里面,默认并没有安装 logwatch,所以,需要手动安装  logwatch。

[root@server ~]# yum install logwatch -y    <==安装 logwatch
[root@server ~]# ll /etc/cron.daily/0logwatch
-rwxr-xr-x. 1 root root 434 Dec 29  2013 /etc/cron.daily/0logwatch

安装完毕后,logwatch  就已经写入到了  cron  的执行列表中。未来则每天会发送一封邮件给  root。因为我们刚刚安装,那可以来分析一下。很简单,直接执行 0logwatch  即可。

[root@server ~]# /etc/cron.daily/0logwatch [root@server ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 logwatch@server.loca  Mon Jun 17 16:00 138/5131  "Logwatch for server (L"
& 1
Message  1:
From root@server.localdomain  Mon Jun 17 16:00:40 2019
Return-Path: <root@server.localdomain>
X-Original-To: root
Delivered-To: root@server.localdomain
To: root@server.localdomain
From: logwatch@server.localdomain
Subject: Logwatch for server (Linux)
Auto-Submitted: auto-generated
Precedence: bulk
Content-Type: text/plain; charset="iso-8859-1"
Date: Mon, 17 Jun 2019 16:00:39 +0800 (CST)
Status: R# logwatch 会说明分析的时间与 logwatch 版本等信息 ################### Logwatch 7.4.0 (03/01/11) #################### Processing Initiated: Mon Jun 17 16:00:38 2019Date Range Processed: yesterday( 2019-Jun-16 )Period is day.Detail Level of Output: 0Type of Output/Format: mail / textLogfiles for Host: server################################################################## # 开始一项一项的进行数据分析。--------------------- Cron Begin ------------------------ **Unmatched Entries**INFO (RANDOM_DELAY will be scaled with factor 53% if used.)INFO (RANDOM_DELAY will be scaled with factor 25% if used.)---------------------- Cron End ------------------------- ...(中间省略)...
# 当然也得说明一下目前系统的磁盘使用状况。--------------------- Disk Space Begin ------------------------ Filesystem      Size  Used Avail Use% Mounted on/dev/vda3       8.4G  3.4G  5.0G  40% /devtmpfs        489M     0  489M   0% /dev/dev/vda1       197M  102M   95M  52% /boot---------------------- Disk Space End -------------------------

七、时间同步服务(chronyd.service)

(1)服务端——172.25.254.1

1、编辑配置文件
[root@server ~]# vim /etc/chrony.conf22 allow 172.25.254.0/24       允许哪些客户端来同步本机时间29 local stratum 10          本机不同步任何主机的时间,本机作为时间源2、重启服务
[root@server ~]# systemctl restart chronyd.service 

(2)客户端——172.25.254.2

1、编辑配置文件
[root@client ~]# vim /etc/chrony.conf3 server 0.rhel.pool.ntp.org iburst4 server 1.rhel.pool.ntp.org iburst5 server 2.rhel.pool.ntp.org iburst6 server 3.rhel.pool.ntp.org iburst
# 删除 4、5、6行,并将第 3 行内容修改为如下的内容3 server 172.25.254.1 iburst2、重启服务
[root@client ~]# systemctl restart chronyd.service 

(3)测试:

在客户端:chronyc sources -v

看到*,表示时间同步成功

七、timedatectl命令——永久修改

1、timedatectl       管理系统时间,显示当前时间信息

2、timedatectl    list-timezones           查看支持的所有时区

3、timedatectl    set-timezone   时区             设定当前时区

4、cat /etc/adjtime               用于查看UTC时间还是Local时间

5、timedatectl    set-local-rtc       0|1              设定是否使用UTC时间

6、timedatectl    set-time     时间         设定当前时间

7、timedatectl    status            管理系统时间,显示当前时间信息(效果同1)

Linux运维之认识与分析日志文件(rsyslog服务),时间同步服务(chronyd服务)及时间管理命令(timedatectl)相关推荐

  1. linux运维人员如何最大限度避免误删文件

    运维人员如何最大限度避免误删除文件 很多工作的网友对运维工作的定位,背黑锅的,"黑锅侠"! 企业运维工作中50%以上的故障都是因内部人员管理失误造成的,"某程" ...

  2. Note For Linux By Jes(13)-认识与分析日志文件

    什么是登录文件: Linux 常见的登录文件档名 /var/log/dmesg: 记录系统在启动的时候核心侦测过程所产生的各项资讯.由於CentOS 默认将启动时核心的硬件侦测过程取消显示,因此额外将 ...

  3. Linux运维一定要看的互联网行业薪酬分析!!!

    什么样的职业需求量大薪资高?选产品.技术还是运维?什么是最好的编程语言?Linux运维的薪资到底有多高?运维的职位需求及发展前景怎么样?下面都将会通过数据呈现出来,达妹希望这篇文章能够帮你更好地制定职 ...

  4. Linux运维工程师岗位要求,从业Linux运维工程师岗位有哪些要求?负责哪些工做?

    随着社会的进步互联网的发展,Linux运维工程师变得愈来愈受欢迎了,其岗位也在企业中受到了足够的重视,薪资待遇也在不断的提高中,正由于这样愈来愈多的人想要加入Linux行列中,那么Linux运维工程师 ...

  5. linux运维 职友集,为你介绍一下Linux运维到底是干啥的?

    今天小编为大家带来的文章是关于Linux运维的介绍的,通过本篇文章你可以解决以下疑问: Linux网络运维是什么? 为什么网络运维的人才紧缺? 网络运维学了到底有没有前途? Linux运维是什么? 对 ...

  6. Linux运维工程师主要做什么工作?

    Linux在现在社会发展是非常受欢迎的一个行业,对于从事Linux方面工作的人来说,属于互联网背后的英雄,没有他们的付出,就没有如今的互联网时代.而在Linux从事岗位之中,Linux运维工程师这样一 ...

  7. 【IT运维】Linux运维需要掌握哪些技能?

    在当下Linux运维是每个企业都不能缺少的岗位.其以服务为中心,以稳定.安全.高效为基本,确保公司互联网业务能够7*24小时为用户提供高质量的服务,在企业当中有着十分重要的地位和作用.因此越来越多的小 ...

  8. 小猿看图CDN_小猿圈分析Linux运维工程师面试

    原标题:小猿圈分析Linux运维工程师面试 互联网发展到了今天,很多同学都开始学习编程,java.python.linux.html5前端都是现在比较火爆的行业之一,而学习linux前端的同学也是最多 ...

  9. linux前景分析,linux运维发展前景分析

    原标题:linux运维发展前景分析 linux运维是随着近年来互联网的快速发展,相关岗位的需求量不断在增加,想从事相关行业的朋友也越来越多.很多人在选择学习linux运维之前,都会担心未来前景问题.上 ...

最新文章

  1. java动态url_使用url Param的动态主题
  2. 蓝桥杯java第四届决赛第一题--猜灯谜
  3. 电脑控制iphone_如何把苹果 iPhone/iPad 投屏到电脑
  4. 『设计模式』开发设计的七大原则,我做人还是挺有原则,那些代码呢?
  5. sql count用法_SQL学习笔记3:count(*)函数
  6. python换源还是不行_浅析Python3 pip换源问题
  7. Redis中的事务和watch(乐观锁)
  8. 如何才干创建一个空的IBM DB2 ECO数据库
  9. matlab常用函数通俗解释(fft2和fftshift函数设置问题等)
  10. 构建LALR(1)项目集族
  11. pytube——下载YouTube视频的python库
  12. Cadence制作flash焊盘时找不到
  13. C语言之i++,++i,i--,--i
  14. Android 9 低内存应用程序保活
  15. 整合腾讯云地图的绘制和编辑几何图形
  16. java ping域名
  17. Ubuntu移除PDF密码
  18. Internet Information Services 5.0 技术概述(转)
  19. GitHub开源项目地址
  20. kitex 中 consistent hashing 的实现

热门文章

  1. [Nikon D80]南京新庄立交桥
  2. matlab simulink锂离子电池智能充电策略研究
  3. 明星热图|童瑶、万茜、周冬雨、宁静、吴昕、宋威龙、李荣浩等签约新品牌...
  4. 哨兵2a 波段组合_基于Sentinel-2(哨兵2)遥感卫星的植被覆盖度提取
  5. 游戏加盟能赚钱?游戏代理加盟优势好处是什么?
  6. Js 下载文件流支持IE
  7. 分享几个css素材的网站
  8. LDA与QDA分类数据的简单应用(python)
  9. 进化算法——多目标优化
  10. 电脑超时空保卫者——光华反病毒软件(转)