[RH124] 12-日志管理

1.学会提问

1.我在做什么?

2.我要实现什么样的效果,而我的结果是什么?提供结果对比。

3.报错信息是什么?

4.日志怎么显示的?

2.如何解决问题

 

1.定位问题:通过查看日志。

 

2.解决问题

3.rsyslog

Linux的日志是用一个服务来管理的。

rsyslog:RHEL6开始就叫rsyslog。

syslog:RHEL5以前叫syslog。

这个日志管理服务是默认开机启动的。

4.rsyslog的配置文件

/etc/rsyslog.*“:rsyslog的配置文件,其中包含rsyslog.conf以及rsyslog.d里的listen.conf。

 

rsyslog.conf文件解析:

MODULES:MODULES段里的配置决定各个模块的开启与关闭。

[RH124] 12-日志管理

GLOBAL DIRECTIVES:rsyslog全局配置,一般保持默认,不用修改。

[RH124] 12-日志管理

RULES:定义各种日志。

[RH124] 12-日志管理

Linux系统中内置很多种事件(大概八九十种),每种事件都有以下级别。

级别有以下几种:

 

 

 

[RH124] 12-日志管理

 

 

级别高低:emerg>aler>crit>err>warning>notice>info,debug只是调试使用。

 

RULES格式:

   "事件.级别   file":意思是,事件的级别 >= 级别时,日志保存到file中。

 

例如:

[RH124] 12-日志管理

 

 

这个配置的意思:

  "*"表示所有事件,*.info:即所有事件中,级别大于等于info的都写入日志/var/log/messages里。

  mail.none:表示关于邮件的事件,不写日志。同理authpriv.none和cron.none。

 

为什么要将mail,authpriv,cron的日志去除掉,因为我们要把他们单独放到日志文件中。如图:

 

[RH124] 12-日志管理

意思是把authpriv、mail、cron相关的所有信息记录到对应的日志文件中。

"-/var/log/maillog"中的"-"是异步的意思,即将内存中的内容写到硬盘中是一批一批写入的,效率比同步写入要高。

 

[RH124] 12-日志管理

上图中:

*.emerg:表示所有达到emerg级别的事件发生时,会触发":omusrmsg:*",系统会想所有在线终端发送通告。

例如,我们模拟一个emerg事件:logger -p local5.emerg 'this is a test':模拟事件local5发生,级别是emerg,输出通告是"this is a test",这条通告会实时发送到每个终端。如图:

 

[RH124] 12-日志管理

模拟一个日志输出:

1.我们在rsyslog.conf中,另起一行:

 

[RH124] 12-日志管理

 

 

2.重启rsyslog日志管理服务:systemctl restart rsyslog

3.然后我们模拟local5事件发生,级别为debug。

  logger -p local5.debug 'This is a log about local5.debug...'

4.看/var/log/xx.log中是否记录日志:

[RH124] 12-日志管理

 

5.日志服务器

同时管理很多服务器的时候,不可能每台机器登录上去查看日志。

那么我们可以配置一台日志服务器,来收集每台被管理服务器的日志。

 

配置远程日志服务器:

1.在host67(被监控机器)修改/etc/rsyslog.conf中:

 

[RH124] 12-日志管理

如果发生local6事件级别大于或等于debug,就将该日志发送给192.168.1.68服务器的rsyslog处理。

2.重启host67的rsyslog服务。systemctl restart rsyslog。

3.在host68(日志服务器)上修改/etc/rsyslog.conf配置:

 

[RH124] 12-日志管理

打开UDP、TCP远程接收日志的模块。

 

 

 

[RH124] 12-日志管理

定义local6事件级别大于等于debug,如何处理。

4.重启host68上的rsyslog服务。systemctl restart rsyslog。

5.在host67上模拟local6.info事件发生。

6.检查host68的/var/log/messages和/var/log/yy.log里是否已写入日志:

[RH124] 12-日志管理

日志中的host67表示来自哪个主机(主机名),hanxinda表示日志产生时,登录的用户是哪个(su到其他用户的情况不算)。

 

根据主机名来设置日志存放地点:

如果节点服务器有很多,每一台都产生时间,并发送给日志服务器,那么服务器存放日志在同一个文件下就会很乱。我们可以根据主机名来分类的存放日志

1.在日志服务器上配置/etc/host:

 

[RH124] 12-日志管理

2.在日志服务器/etc/rsyslog.conf中配置:

[RH124] 12-日志管理

3.这样,只要是来自host67的日志,都会先被写到host67.log日志文件中。同时该日志也会写到先前配置的yy.log中。因为/etc/rsyslog.conf配置文件的RULES是从上到下匹配的,只要匹配上,就会把日志写到指定的地方。

 

设置远程日志放在一些文件中,不影响本地日志:

1.在日志服务器/etc/rsyslog.conf配置:

 

[RH124] 12-日志管理

"~"表示匹配到的日志,就此打住,后面的规则就不用匹配的。所以,来自host67的日志,在写入host67.log后,就不会与本地日志混合了。

6.如何查看日志

journalctl:查看所有事件日志。

journalctl -f:查看最近事件日志。

journalctl -p err:查看err级别以上的日志。

 

journalctl --since "2018-06-13 20:00:00":查看2018-06-13 晚8点以后的所有日志。

journalctl --since "2018-06-13 20:00:00" --until "2018-06-20 20:00:00" :查看2018-6-13 晚8点到2018-6-20晚8点之间的日志。

7.NTP服务

 

date:查看时间

 

date 122010002018:设置时间为2018年12月20日10点00分。

 

kwclock -s:把时间修改为bios时间。

 

 

 

timedatectl命令:

 

timedatectl status:查看时间详细信息。简写为timedatectl。

 

timedatectl list-timezones:查看可用时区列表。

 

timedatectl set-timezone Africa/abidjan:设置时区为Africa/abidjan。

 

 

 

如果不适用timedatectl,如何修改时区呢:

 

Linux系统时区文件都放在/usr/share/zoneinfo下,按 洲来存放。

 

例如/usr/share/zoneinfo/Asia/Shanghai。

 

我们要修改时区,只需要把该时区文件覆盖/etc/localtime就可以了。

 

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

但是用这种方法修改后,时间是正常的,但是用timedatectl查看时区,还是显示的错误的

 

 

 

timedatectl set-time "2018-07-03 12:00:00":设置时间。同时会将系统时间和BIOS时间都设置了。

 

timedatectl set-time 12:00:00:设置时间为12点。

 

 

 

配置NTP服务:

 

1.关闭默认NTP服务

 

系统默认有一个NTP服务叫chronyd.service。

 

我们设置不启动它:

 

systemctl stop chronyd.service

 

systemctl disable chronyd.service

 

 

 

2.安装NTP服务:

 

mount /dev/cdrom /mnt

 

rpm -ivh /mnt/Packages/ntp-4.2.6p5-19.el7_0.x86_64.rpm

 

rpm -ivh /mnt/Packages/ntpdate-4.2.6p5-19.el7_0.x86_64.rpm

 

或者使用yum install ntp -y安装。

 

 

 

3.配置/etc/ntp.conf

[RH124] 12-日志管理

允许192.168.1.0网段的机器向我进行同步。(不含noquery表示可以询问时间)

 [RH124] 12-日志管理

127.127.1.0不是一个网段,而是一个IP地址(回环地址,主板芯片上的地址),表示我这个服务器去哪里同步时间,可以写多个。

 [RH124] 12-日志管理

 

 

4.启动ntpd

systemctl start ntpd.service

systemctl enable ntpd.service

 

5.在另外一台机器上使用ntpdate 192.168.1.67进行同步。

 

设置向服务器自动同步时间:

1.安装ssytem-config-date软件。

yum install ssytem-config-date -y

2.配置:

在界面中配置NTP服务器地址。

运行system-config-date &

可能出现界面上从网络同步时间的选项是灰色的(无法勾选

这时:我们使用timedatectl查看时间详细信息,里面的

[RH124] 12-日志管理

我们需要通过timedatectl set-ntp true来启用。

再次运行system-config-date &:

[RH124] 12-日志管理

我们修改NTP Servers框里的服务器地址:

 

[RH124] 12-日志管理

3.使用chronyc sources -v查看是否同步成功。

 

[RH124] 12-日志管理

看到左下角的"*"表示同步成功。

 

上一篇:如何在Linux机器上锁定C中的目录


下一篇:c# – 从Lock()内的UI线程调用方法