系统日志以及日志的管理与分析,时间同步,时间更改

1.系统日志默认分类

/var/log/messages     # 系统服务日志,包括服务的信息,报错等等
/var/log/secure       # 系统认证信息日志
/var/log/maillog      # 系统邮件服务日至
/var/log/cron         # 系统定时任务日志
/var/log/boot.log     # 系统启动日志

[root@desktop Desktop]# > /var/log/messages    # 清空desktop的messages日志
[root@desktop Desktop]# cat /var/log/messages
[root@desktop Desktop]# systemctl restart sshd.service  # 可以任意重启一个服务
[root@desktop Desktop]# cat /var/log/messages     # 会生成日志	

在这里插入图片描述

2.日志管理服务rsyslog(rsyslog负责采集日志和分类存放日志)

(1)日志设备(可以理解为日志类型)
auth                     # pam产生的日志
authpriv                 # ssh,ftp等登录信息的验证信息
cron                     # 时间任务相关
kern                     # 内核
lpr                      # 打印
mail                     # 邮件
mark(syslog)–rsyslog     # 服务内部的信息,时间标识
news                     # 新闻组
user                     # 用户程序产生的相关信息
uucp                     # unix to unix copy, 即unix主机之间相关的通讯
local 1~7                # 自定义的日志设备
(2)日志级别
debug       # 有调式信息的,日志信息最多
info        # 般信息的日志,最常用
notice      # 最具有重要性的普通条件的信息
warning     # 警告级别
err         # 错误级别,阻止某个功能或者模块不能正常工作的信息
crit        # 严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert       # 需要立刻修改的信息
emerg       # 内核崩溃等严重信息
none        # 什么都不记录

注意:从上到下,级别从低到高,记录的信息越来越少,详细的可以查看手册: man 3 syslog连接符号	
(3)修改主配置文件中日志采集规则(/etc/rsyslog.conf )
格式:
日志类型.日志级别      日志处理方式

注:如果有多个规则可以用分号隔开	

举例:   
*.*          /var/log/westos          # 所有级别,所有类型的日志都存放在/var/log/westos里   
*.*;authpriv.none    /var/log/westos  # 在所有级别,所有类型中除了authpriv.none日志,其余的都放在/var/log/westos里

[root@desktop Desktop]# vim /etc/rsyslog.conf 
55  *.*                    /var/log/westos     # 所有类型所有级别的日志都记录在/var/log/westos中
[root@desktop Desktop]# ll /var/log/westos       # 查看自己刚才定义的日志文件,发现不存在,因为没有重启服务,更改文件还没有生效	
ls: cannot access /var/log/westos: No such file or directory	
[root@desktop Desktop]# systemctl restart rsyslog.service   # 改完配置文件之后记得重启服务
[root@desktop Desktop]# ll /var/log/westos
-rw-r--r-- 1 root root 487 Oct 13 03:51 /var/log/westos

3.日志同步

udp协议    # 快(类似于发短信),不需要回应
tcp协议    # 慢,但稳定(类似于打电话),需要回应	

在日志发送方
vim    /etc/rsyslog.conf
*.*      @172.25.254.1            # 通过udp协议把日志发送到1主机
*.*      @@172.25.254.1           # 通过tcp协议把日志发送到1主机 

在日志接收方
vim    /etc/rsyslog.conf   # 日志规则的主配置文件
15 $ModLoad imudp                       # 日志接收插件
16 $UDPServerRun 514                    # 日志接收插件所使用的端口

[root@server ~]# vim /etc/rsyslog.conf             # 在server端(日志发送方)设定日志同步对象(以udp协议的方式同步)
55 *.*                         @172.25.254.138
[root@server ~]# systemctl restart rsyslog.service

# 在desktop端(日志接收方)打开接收日志的接口(server端开启的是哪个接口,desktop端就开哪个接口,即此处开启udp的接口)

[root@desktop Desktop]# vim /etc/rsyslog.conf 
14 # Provides UDP syslog reception 
15 $ModLoad imudp 
16 $UDPServerRun 514	

在这里插入图片描述

[root@desktop Desktop]# systemctl restart rsyslog.service   # 重启服务
[root@desktop Desktop]# systemctl stop firewalld    # 关闭防火墙	

# 在客户(server)端测试:
[root@server ~]# logger hello     # 在server端生成测试日志
[root@server ~]# logger hello
[root@server ~]# logger hello
[root@server ~]# logger hello
[root@server ~]# cat /var/log/messages     # 先在本机查看是否生成

在这里插入图片描述

[root@desktop Desktop]# cat /var/log/messages   # 再在desktop端查看是否同步成功

在这里插入图片描述

4.日志采集

(1) 定义日志采集格 (方便对日志进行分析)
$template  格式名称 ,"日志采集格式"    

%timegenerated%          # 日志生成时间    
%FROMHOST-IP%            # 日志来源主机的ip    
%syslogtag%              # 日志生成程序    
%msg%                    # 日志内容    
\n                       # 换行

# 在服务(desktop)端

[root@desktop ~]# vim /etc/rsyslog.conf 
47 $template  WESTOS,"%timegenerated%  %FROMHOST-IP% %syslogtag% %msg%\n"   
54 *.info;mail.none;authpriv.none;cron.none    /var/log/messages;WESTOS
[root@desktop ~]# systemctl restart rsyslog.service 
[root@desktop ~]# >  /var/log/messages 

# 在客户(server)端

[root@server ~]# logger test   # 生成日志
[root@server ~]# logger test
[root@server ~]# logger test
[root@server ~]# cat  /var/log/messages     # 先查看是否在本机生成日志

在这里插入图片描述

# 在服务(desktop)端

[root@desktop ~]# cat /var/log/messages    # 查看同步过来的日志,格式是否改变

在这里插入图片描述

5.时间同步

# 在服务端(desktop端)设置时间同步
[root@desktop ~]# vim /etc/chrony.conf
22 allow 172.25.254/24      # 允许谁看 		
		172.25.254  # 所属网段
		24          # 子网掩码
		注:如果设置成0.0.0.0,则表示任何人都可以访问
29 local stratum 10          # 自己作为时间源
[root@desktop ~]# systemctl restart chronyd.service


# 在客户端(server端)查看同步

[root@server ~]# vim /etc/chrony.conf     # 设置同步138这台主机的时间
3 server 172.25.254.138 iburst    # iburst表示使得设定立即生效
[root@server ~]# systemctl restart chronyd.service
[root@server ~]# chronyc sources -v     # 检测时间是否同步成功

系统日志以及日志的管理与分析,时间同步,时间更改_第1张图片

^       # 表示138这台主机是一个服务器
*       # 表示已经同步过了

watch      # 监控进程
tail       # 监控文件		

6.日志分析工具journalctl

  journalctl主要保证日志的时效性和详细性,保存,备份,以及定时删除日志不是他的特长,但是,他也可以实现

注:journalctl查到的是系统当前生成的日志;系统重启之后,内存断过电,保存的日志就会丢失,用journalct就查看不到日志;而/var/log/messages文件里记录的是被采集过的日志,系统重启不影响其对日志的记录

journalctl                         # 查看系统当前的所有日志
journalctl       -n 3              # 查看最新的三条日志    
journalctl       -p err            # 查看报错日志
journalctl       -f                # 监控日志
journalctl     --since --until     # -从什么时间到什么时间的日志
journalctl       -o verbose        # 显示日志能够使用的详细进程参数				

[root@desktop ~]# journalctl          # 查看所有日志
[root@desktop ~]# journalctl -n 3      # 查看最新的三条日志
[root@desktop ~]# journalctl --since 9:00   # 查看从9点开始的日志
[root@desktop ~]# journalctl --since 9:00 --until 9:01   # 查看9点到9:01的日志,但是发现并没有9:01的日志

系统日志以及日志的管理与分析,时间同步,时间更改_第2张图片

[root@desktop ~]# journalctl --since 9:00 --until 9:01:50    # 此时就可以看到9:01的日志

系统日志以及日志的管理与分析,时间同步,时间更改_第3张图片

[root@desktop ~]# journalctl -p err    # 查看错误日志

系统日志以及日志的管理与分析,时间同步,时间更改_第4张图片

# 当有两个相同的进程,但是进程的PID不同,想要查找其中一个进程的日志时,/var/log/messages就不能满足我们

[root@desktop ~]# systemctl status sshd 

系统日志以及日志的管理与分析,时间同步,时间更改_第5张图片

[root@desktop ~]# systemctl restart sshd.service 
[root@desktop ~]# systemctl status sshd

系统日志以及日志的管理与分析,时间同步,时间更改_第6张图片

[root@desktop ~]# journalctl -o verbose    # 查看日志的详细信息,包括PID等
[root@desktop ~]# journalctl _PID=1254 _COMM=sshd   # 根此时就可以据自己的需求来查找特定的日志
[root@desktop ~]# journalctl _PID=2426  _COMM=sshd

系统日志以及日志的管理与分析,时间同步,时间更改_第7张图片

对systemd-journald的管理  
  默认此程序只负责对日志进行查看而不对日志进行保存和采集,那么关机后再开机,对日志进行查看,
只能查看开机后的日志,系统之前的日志全部都保存在内存里,关机后内存释放后就被清空了,开机
后用journalctl看不到

# 如何让journalctl 采集日志,即系统重启之后还可以通过journalctl查看到日志(让systemd-journald保存日志到硬盘中)

[root@desktop ~]# mkdir /var/log/journal      # 建立目录存放journalctl 采集的日志
[root@desktop ~]# ll -d /var/log/journal
drwxr-xr-x 2 root root 6 Oct 14 10:14 /var/log/journal
[root@desktop ~]# chgrp systemd-journal /var/log/journal/     # systemd-journal
[root@desktop ~]# ll -d /var/log/journal
drwxr-xr-x 2 root systemd-journal 6 Oct 14 10:14 /var/log/journal
[root@desktop ~]# chmod g+s /var/log/journal/    # 使得产生的日志全部属于systemd-journal组
[root@desktop ~]# ll -d /var/log/journal
drwxr-sr-x 2 root systemd-journal 6 Oct 14 10:14 /var/log/journal
[root@desktop ~]# ps aux | grep systemd-journal    # 查看systemd-journal的进程号
root       358  0.0  0.2  40864  2160 ?        Ss   09:00   0:00 /usr/lib/systemd/systemd-journald
root      2784  0.0  0.0 112640   940 pts/0    R+   10:15   0:00 grep --color=auto systemd-journal
[root@desktop ~]# kill -1 358   # 为了让更改生效,但是不想重启系统,就用这条命令实现
[root@desktop ~]# cd /var/log/journal/
[root@desktop journal]# ls
946cb0e817ea4adb916183df8c4fc817
[root@desktop journal]# bootctl     # 查看系统的id,可以看到与上面一致

系统日志以及日志的管理与分析,时间同步,时间更改_第8张图片

[root@desktop journal]# ll 946cb0e817ea4adb916183df8c4fc817
total 8192-rw-r----- 1 root systemd-journal 8388608 Oct 14 10:16 system.journal
[root@desktop journal]# date   # 查看重启之前的时间

[root@desktop journal]# reboot
[root@desktop ~]# cd /var/log/journal/
[root@desktop journal]# ls
946cb0e817ea4adb916183df8c4fc817
[root@desktop journal]# cd 946cb0e817ea4adb916183df8c4fc817/
[root@desktop 946cb0e817ea4adb916183df8c4fc817]# ls
system.journal  user-42.journal
[root@desktop 946cb0e817ea4adb916183df8c4fc817]# journalctl  # 此时就可以看到重启之前的日志了


注:user-42.journal采集的是日志数据,而不是文件,所以不能用cat user-42.journal来查看日志,直接进入到user-42.journal所在目录,用journalctl 命令直接查看日志即可	

7.timedatectl命令 # 查看系统的时间信息

timedatectl      status            # 显示当前时间信息 
timedatectl      set-time          # 设定当前时间                            
timedatectl      set-timezone      # 设定当前时区                           
timedatectl      set-local-rtc 0|1 # 设定是否使用utc时间,可以解决双系统时间错乱问题,0表示开启,1表示不开启                          
timedatectl      list-timezones    # 查看支持的所有时区

UTC      # 世界时间
RTC      # 硬件时间(bios time)
CST      # 本地时间 	 

[root@desktop ~]# timedatectl	

系统日志以及日志的管理与分析,时间同步,时间更改_第9张图片

[root@desktop ~]# timedatectl list-timezones
[root@desktop ~]# timedatectl set-timezone Asia/Shanghai
[root@desktop ~]# timedatectl

系统日志以及日志的管理与分析,时间同步,时间更改_第10张图片

[root@desktop ~]# timedatectl set-local-rtc 1    # 这个命令相当于修改/etc/adjtime文件
[root@desktop ~]# cat /etc/adjtime
[root@desktop ~]# timedatectl 

系统日志以及日志的管理与分析,时间同步,时间更改_第11张图片

[root@desktop ~]# timedatectl set-local-rtc 0
[root@desktop ~]# cat /etc/adjtime 

系统日志以及日志的管理与分析,时间同步,时间更改_第12张图片

[root@desktop ~]# timedatectl set-time "2018-08-08 22:22:22"  # 临时更改时间
[root@desktop ~]# date    # 更改成功
Wed Aug  8 22:22:24 CST 2018 

注:如果临时修改时间没有成功,可能是时间同步打开了,关闭即可

[root@desktop ~]# timedatectl set-time "2019-05-15 12:52"
Failed to set time: Automatic time synchronization is enabled
[root@desktop ~]# timedatectl set-ntp no   # 关闭同步
[root@desktop ~]# timedatectl set-time "2019-05-15 12:52"   # 临时修改成功
[root@desktop ~]# date
Wed May 15 12:52:09 CST 2019

你可能感兴趣的:(linux)