准备工作:

(1)打开两个虚拟机并更改他们的ip
    nm-connection-eidtor              #图形方式设定ip

(2)更改两个虚拟机的名称
    hostnamectl set-hostname 名字      #更改主机名

实验环境:

node1(desktop): 172.25.254.130
node2(sesrver): 172.25.254.230

1.rsyslog服务

(1)作用:采集日志,而不是产生日志

(2)管理
systemctl start rsyslog.service   #开始收集日志的服务
systemctl stop rsyslog.service    #停止收集日志的服务

2.日志是如何产生的?

  日志是由程序本身产生的

3.日志的采集规则

一般格式: 日志类型.日志级别    日志存放的文件(必须用绝对路径)

管理日志的配置文件:  /etc/rsyslog.conf

在这里插入图片描述
(1)日志类型

auth          #用户登陆日志(pam产生的日志)
authpriv      #服务认证日志(sshd认证,ftp等登陆信息的验证信息)
kern          #内核日志
cron          #定时任务日志
lpr           #打印日志
mail          #邮件日志
news          #新闻组
user          #用户程序产生的相关信息日志
uucp          #unix to unix copy,unix主机之间相关的通讯
local  1-7    #用户自定义日志

(2)日志级别

debug              #系统调试信息,日志信息最多
info               #常规信息,最常用
notice      	   #最具有重要性的普通条件的信息
warning            #警告信息
err                #报错信息(级别低,阻止了某个工作不能正常工作)
crit               #严重报错信息(级别高,阻止了整个软件或整个系统不能正常工作)
alert              #需要立即修改的信息
emerg              #内核崩溃等严重信息
none               #不采集任何日志信息

注意:从上到下,日志级别从低到高。记录的信息越来越少

(3)系统常用日志

/var/log/messages     #所有日志级别的常规信息(不包含邮件,服务认证,定时任务)
/var/log/maillog      #邮件认证
/var/log/secure       #服务认证日志
/var/log/cron         #定时任务日志
例如:
    *.*  /var/log/log.all            #将所有级别所有类型的日志采集到/var/log/log.all里
    auth.debug  /var/log/westos      #用户登陆的系统调试信息放到/var/log/westos里
    auth.*     /var/log/file         #将用户登陆的所有级别的日志放到/var/log/file里

    注意:日志可以直接看出系统中的错误,日志存在于内存中,修改rsyslog(配置文件)的意义在于将内存中的日志采集放到硬盘里
实验1:日志管理

(1)清空系统日志信息
##清空常规日志
[root@node2 ~]# > /var/log/messages
[root@node2 ~]# cat /var/log/messages 
Oct 15 11:10:01 localhost systemd: Starting Session 15 of user root.
Oct 15 11:10:01 localhost systemd: Started Session 15 of user root.
Oct 15 11:10:03 localhost rc.local: /etc/rc.d/rc.local: connect: No route to host
Oct 15 11:10:03 localhost rc.local: /etc/rc.d/rc.local: line 18: /dev/tcp/content.example.com/80: No route to host
##清空系统日志
[root@node2 ~]# > /etc/rc.d/rc.local
##必须重启才能生效
[root@node2 ~]# reboot
Connection to 172.25.254.230 closed by remote host.
Connection to 172.25.254.230 closed.
[kiosk@foundation66 Desktop]$ ssh root@172.25.254.230
root@172.25.254.230's password: 
Last login: Mon Oct 15 09:47:28 2018 from 172.25.254.66
[root@node2 ~]# > /var/log/messages 
[root@node2 ~]# cat /var/log/messages

在这里插入图片描述

(2)管理日志
##重启sshd服务
[root@node2 ~]# systemctl restart sshd
##可查看到日志中记录了有关重启sshd服务的一系列信息
[root@node2 ~]# cat /var/log/messages
Oct 15 11:14:16 node2 systemd: Stopping OpenSSH server daemon...
Oct 15 11:14:16 node2 systemd: Starting OpenSSH server daemon...
Oct 15 11:14:16 node2 systemd: Started OpenSSH server daemon.
[root@node2 ~]# systemctl status rsyslog.service 
rsyslog.service - System Logging Service
   Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled)
   Active: active (running) since Mon 2018-10-15 11:10:44 EDT; 4min 16s ago
 Main PID: 472 (rsyslogd)
   CGroup: /system.slice/rsyslog.service
           └─472 /usr/sbin/rsyslogd -n

Oct 15 11:10:44 node2 systemd[1]: Started System Logging Service.
##停止收集日志;发现此时即便重启的服务,日志也不会记录任何信息
[root@node2 ~]# systemctl stop rsyslog.service 
[root@node2 ~]# > /var/log/messages 
[root@node2 ~]# systemctl restart sshd
[root@node2 ~]# cat /var/log/messages 
##开始收集日志的服务;此时会收集到之前重启服务的信息
[root@node2 ~]# systemctl start rsyslog.service 
[root@node2 ~]# cat /var/log/messages 
Oct 15 11:15:13 node2 systemd: Stopping System Logging Service...
Oct 15 11:15:13 node2 systemd: Stopped System Logging Service.
Oct 15 11:15:37 node2 systemd: Stopping OpenSSH server daemon...
Oct 15 11:15:37 node2 systemd: Starting OpenSSH server daemon...
Oct 15 11:15:37 node2 systemd: Started OpenSSH server daemon.

在这里插入图片描述

[root@node2 ~]# > /var/log/messages 
[root@node2 ~]# cat /var/log/messages 

在这里插入图片描述

[root@node1 ~]# ssh root@172.25.254.230
[root@node2 ~]# exit

在这里插入图片描述

##可查看到用户登陆信息
[root@node2 ~]# cat /var/log/messages 

在这里插入图片描述

实验2:将日志采集到指定位置

[root@node2 ~]# vim /etc/rsyslog.conf 
###############
55 *.*   /var/log/westos     #将所有类型所有级别的日志采集到/var/log/westos文件中 

在这里插入图片描述

[root@node2 ~]# ll /var/log/westos
ls: cannot access /var/log/westos: No such file or directory
[root@node2 ~]# systemctl restart rsyslog.service 
[root@node2 ~]# ll /var/log/westos
-rw-r--r--. 1 root root 555 Oct 15 12:06 /var/log/westos
[root@node2 ~]# > /var/log/messages 
[root@node2 ~]# > /var/log/westos

在这里插入图片描述

[root@node1 Desktop]# ssh root@172.25.254.230
[root@node2 ~]# exit

在这里插入图片描述

##/var/log/messages没有记录服务认证信息,因为/etc/rsyslog.conf配置文件中有专门的服务认证信息记录文件
[root@node2 ~]# cat /var/log/messages 
##/var/log/messages有记录服务认证信息
[root@node2 ~]# cat /var/log/westos

在这里插入图片描述

[root@node2 ~]# vim /etc/rsyslog.conf 
###############
55 *.*;authpriv.none                         /var/log/westos
##将所有类型所有级别的日志(除了用户认证信息)采集到/var/log/westos文件中

在这里插入图片描述

[root@node2 ~]# systemctl restart rsyslog.service
[root@node2 ~]# > /var/log/westos
[root@node2 ~]# cat /var/log/westos
 [root@node1 Desktop]# ssh root@172.25.254.230
 [root@node2 ~]# exit

在这里插入图片描述

##此时便没有服务认证信息
[root@node2 ~]# cat /var/log/westos

在这里插入图片描述
4.日志的远程同步

它的意义在于实现多台主机向一台主机传输日志,便于管理者高效的查看多台主机的日志。
实验:
[root@node2 ~]# man rsyslog.conf
@  表示UDP协议          @@ 表示TCP协议

在这里插入图片描述

在发送端:
[root@node2 ~]# vim /etc/rsyslog.conf
###############
56 *.*      @172.25.254.130   #接收方的ip

在这里插入图片描述

[root@node2 ~]# systemctl restart rsyslog.service 
[root@node2 ~]# > /var/log/messages 
[root@node2 ~]# cat /var/log/messages

在这里插入图片描述

在接收端:
[root@node1 Desktop]# vim /etc/rsyslog.conf
#####################
15 $ModLoad imudp     #加载模块
16 $UDPServerRun 514  #打开插件接口

在这里插入图片描述

[root@node1 Desktop]# systemctl restart rsyslog.service 
##关闭火墙
[root@node1 Desktop]# systemctl stop firewalld
[root@node1 Desktop]# systemctl disable firewalld
[root@node1 ~]# > /var/log/messages 
[root@node1 ~]# cat /var/log/messages

在这里插入图片描述

测试:
##logger表示生成日志
[root@node2 ~]# logger  westos
[root@node2 ~]# cat /var/log/messages 
Oct 16 06:19:06 node2 root: westos

在这里插入图片描述

[root@node1 Desktop]# cat /var/log/messages 

在这里插入图片描述

5.定义日志采集格式

一般格式: $template  格式名称, "日志采集格式"

具体的日志采集格式参数含义:
%timegenerated%    #日志生成时间
%FROMHOST-IP%      #日志来源主机的IP
%systag%           #日志生成程序
%msg%              #日志内容
\n                 #换行
实验:
[root@node1 Desktop]# vim /etc/rsyslog.conf 
#####################
47 $template westos,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
                     时间             来源主机ip     生成程序     日志内容
55 *.info;mail.none;authpriv.none;cron.none       /var/log/messages;westos

在这里插入图片描述

[root@node1 Desktop]# systemctl restart rsyslog.service 
[root@node1 Desktop]# > /var/log/messages 
[root@node1 Desktop]# cat /var/log/messages 

在这里插入图片描述

测试:
[root@node2 ~]# logger  linux

在这里插入图片描述

[root@node1 Desktop]# cat /var/log/messages 
Oct 16 06:45:10 172.25.254.230 root:  linux

在这里插入图片描述
6. journalctl命令

格式: journalctl + 参数       #日志的查看

具体参数的含义:
 -p   err               #查看报错日志
 -f                     #监控 (用户ctrl+c结束监控)
 -n      3              #最新(new)的三条日志
 -o   verbose           #查看日志详细参数
 journalctl _PID=84     #直接查看PID为84的程序产生的日志
--since  时间点 --until  时间点   #查看从何时到何时的日志
 实验:日志的查看
 
 ##查看日志
 [root@node1 ~]# journalctl

在这里插入图片描述

##查看最新的3条日志信息
[root@node1 ~]# journalctl -n 3

在这里插入图片描述

##--since表示从何时开始
[root@node1 ~]# journalctl --since 08:00 

在这里插入图片描述

##--until表示从何时结束
[root@node1 ~]# journalctl --since 08:00 --until 08:29 

在这里插入图片描述

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

在这里插入图片描述

[root@node1 ~]# > /var/log/messages 
[root@node1 ~]# cat /var/log/messages 
##ip为3161
[root@node1 ~]# systemctl status sshd
[root@node1 ~]# systemctl restart sshd
##ip变为3173 
[root@node1 ~]# systemctl status sshd
##虽然/var/log/messages文件中有记录,但不知道这是ip为829进程产生的还是ip变为1949的sshd进程产生的

在这里插入图片描述

[root@node1 ~]# cat /var/log/messages

在这里插入图片描述

##查看日志详细参数
[root@node1 ~]# journalctl -o verbose

在这里插入图片描述

##journalctl可直接查看PID为3161的进程产生的日志
[root@node1 ~]# journalctl _PID=3161

在这里插入图片描述

#查看PID为3173,进程名为sshd的日志信息
[root@node1 ~]# journalctl _PID=3173 _COMM=sshd

在这里插入图片描述
(1)对systemd-journald管理

默认此程序只负责对日志进行查看而不能对日志进行保存和采集,那么关机后再开机(重启),只能查看到开机后的日志,
因为系统之前的日志是保存在内存中的,所以关机后就被清空了,那么再开机时用journalctl是看不到的之前的日志信息的
实验:

##设定为UTC时间
[root@node1 ~]# timedatectl set-local-rtc 0
[root@node1 ~]# cat /etc/adjtime 
0.0 0 0.0
0
UTC
[root@node1 ~]# date
Tue Oct 16 09:16:42 EDT 2018
[root@node1 ~]# reboot
Connection to 172.25.254.130 closed by remote host.
Connection to 172.25.254.130 closed.
[root@foundation66 Desktop]# ssh root@172.25.254.130
root@172.25.254.130's password: 
Last login: Tue Oct 16 08:37:09 2018 from 172.25.254.66
##发现重启后无法查看到09:16:42之前的日志信息
[root@node1 ~]# journalctl

在这里插入图片描述

那么如何让systemd-journald将日志保存到硬盘中;也就是说即使系统重启,
仍然可以查看到系统重启之前的日志信息
实验:

[root@node1 ~]# mkdir /var/log/journal
[root@node1 ~]# ll -d /var/log/journal/
drwxr-xr-x 2 root root 6 Oct 16 09:20 /var/log/journal/
##/var/log/journal/中的日志信息只能被systemd-journal组所识别
##更改目录的所有组
[root@node1 ~]# chgrp systemd-journal /var/log/journal/
##使在/var/log/journal目录中出现的文件的所有组自动归属于该目录的所有组
[root@node1 ~]# chmod g+s /var/log/journal/
[root@node1 ~]# ll -d /var/log/journal/
drwxr-sr-x 2 root systemd-journal 6 Oct 16 09:20 /var/log/journal/
[root@node1 ~]# ps aux | grep systemd-journald
root       361  0.0  0.2  40864  2044 ?        Ss   09:17   0:00 /usr/lib/systemd/systemd-journald
root      1721  0.0  0.0 112640   940 pts/0    R+   09:23   0:00 grep --color=auto systemd-journald
##-1表示重启
[root@node1 ~]# kill -1 361
[root@node1 ~]# date
Tue Oct 16 09:23:44 EDT 2018
[root@node1 ~]# reboot
Connection to 172.25.254.130 closed by remote host.
Connection to 172.25.254.130 closed.
[root@foundation66 Desktop]# ssh root@172.25.254.130
root@172.25.254.130's password: 
Last login: Tue Oct 16 09:18:04 2018 from 172.25.254.66

在这里插入图片描述

##此时便可以看到09:23:44之前的日志信息
[root@node1 ~]# journalctl

在这里插入图片描述

补充:(了解即可)
[root@node1 ~]# cd /var/log/journal
[root@node1 journal]# ls
946cb0e817ea4adb916183df8c4fc817
[root@node1 journal]# bootctl
[root@node1 journal]# ll 946cb0e817ea4adb916183df8c4fc817
total 16388
-rw-r-----  1 root systemd-journal 8388608 Oct 16 09:25 system.journal
-rw-r-----+ 1 root systemd-journal 8388608 Oct 16 09:24 user-42.journal
[root@node1 journal]# cd 946cb0e817ea4adb916183df8c4fc817
[root@node1 946cb0e817ea4adb916183df8c4fc817]# ls
system.journal  user-42.journal
当前日志         历史日志

在这里插入图片描述

[root@node1 946cb0e817ea4adb916183df8c4fc817]# file user-42.journal
user-42.journal: data  ##数据
#cat无法查看(乱码)
[root@node1 946cb0e817ea4adb916183df8c4fc817]# cat user-42.journal

在这里插入图片描述

##hexdump可以解密部分
[root@node1 946cb0e817ea4adb916183df8c4fc817]# hexdump -C user-42.journal

在这里插入图片描述

##直接用journalctl查看比较合适
[root@node1 946cb0e817ea4adb916183df8c4fc817]# journalctl

在这里插入图片描述

7.时间同步

实验:时间同步(客户端去同步服务端的时间)

在服务端:
##更改时间;确保服务端与客户端的时间不同
[root@node2 ~]# date 11111111
[root@node2 ~]# date

在这里插入图片描述

[root@node1 ~]# date

在这里插入图片描述

[root@node2 ~]# vim /etc/chrony.conf 
###############
22 allow 172.25.254.0/24   ##允许254这个网段可以同步本机时间
 
29 local stratum 10        ##共享时间

在这里插入图片描述

[root@node2 ~]# systemctl restart chronyd.service 
##服务端的火墙必须关闭;客户端火墙没要求
[root@node2 Desktop]# systemctl stop firewalld
在客户端:
[root@node1 ~]# vim /etc/chrony.conf 
###############
server 172.25.254.230 iburst

在这里插入图片描述

[root@node1 ~]# systemctl restart chronyd.service 
[root@node1 ~]# chronyc sources -v
## ^* 表示同步成功

在这里插入图片描述

测试:
[root@node1 ~]# date 

在这里插入图片描述

  [root@node2 ~]# date

在这里插入图片描述

8. timedatectl命令

timedatectl                            #查看时间信息
timedatectl list-timezones             #查看所有时区
timedatectl set-timezone Asia/Shanghai #设置为上海的时区
timedatectl set-local-rtc  0           #使用UTC时间
cat /etc/adjtime                       #在此文件中显示UTC
timedatectl set-local-rtc  1           #使用local(本地)时间
cat /etc/adjtime                       #在此文件中显示local

date                                       #查看时间 
timedatectl set-time "年-月-日  时:分:妙"  #修改时间
   实验:
   
    ##查看所有时区
    [root@node1 ~]# timedatectl list-timezones

在这里插入图片描述

##设定为上海时间
[root@node1 ~]# timedatectl set-timezone Asia/Shanghai
##查看时间详细信息;发现本地时间与硬件时间不相符
[root@node1 ~]# timedatectl

在这里插入图片描述

##设定为UTC时间(通用时间)
[root@node1 ~]# timedatectl set-local-rtc 0
[root@node1 ~]# vim /etc/adjtime

在这里插入图片描述

##设定为LOCAL时间(本地时间)
[root@node1 ~]# timedatectl set-local-rtc 1
[root@node1 ~]# vim /etc/adjtime 

在这里插入图片描述

##此时硬件时间与本地时间同步
[root@node1 ~]# timedatectl 

在这里插入图片描述

##设定时间
[root@node1 ~]# timedatectl set-time "2017-9-9 11:11:11"
##查看时间
[root@node1 ~]# date
Sat Sep  9 11:11:13 CST 2017
[root@node1 ~]# timedatectl set-time "2018-10-16 20:08"
[root@node1 ~]# date
Tue Oct 16 20:08:01 CST 2018

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐