日志管理、时间同步、timedatectl命令

准备工作:

(1)打开两个虚拟机(desktop和server)并更改他们的ip(可用nm-connection-eidtor  #图形设定ip)

(2)更改两个虚拟机的名称(hostnamectl set-hostname node1.example.com  #将虚拟机的名字改为node1

(3)在真机中打开两个shell,用ssh命令分别连接两个虚拟机(注:ctrl+shift+t  #再打开一个shell)

实验环境:

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

1.日志的采集规则:

(1)日志类型

auth          #用户登陆日志(pam生日志)
authpriv      #服务认证日志(sshd认证)
kern          #内核日志
cron          #定时任务日志
lpr           #打印机日志
mail          #邮件日志
news          #新闻
user          #用户相关程序日志
local  1-7    #用户自定义日志

(2)日志级别

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

(3)系统常用日志

/var/log/messages     #所有日志级别的常规信息(不包含邮件,服务认证,定时任务)
/var/log/maillog      #邮件认证
/var/log/secure       #服务认证日志
/var/log/cron         #定时任务日志

管理日志的配置文件:

vim /etc/rsyslog.conf       #查看并修改采集日志文件配置,使我们能够采集日志到指定位置
#####################
*.*     文件名称(绝对路径)   #日志类型.日志级别    日志存放的文件
    systemctl start rsyslog.service   #开始收集日志的服务
    systemctl stop rsyslog.service    #停止收集日志的服务
例如:
*.*  /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
##查看日志; /etc/rc.d/rc.local日志可以忽略
[root@node2 ~]# cat /var/log/messages
Sep 18 09:28:25 localhost rc.local: /etc/rc.d/rc.local: connect: No route to host
Sep 18 09:28:25 localhost rc.local: /etc/rc.d/rc.local: line 18: /dev/tcp/content.example.com/80: No route to host
Sep 18 09:28:28 localhost rc.local: /etc/rc.d/rc.local: connect: No route to host
Sep 18 09:28:28 localhost rc.local: /etc/rc.d/rc.local: line 18: /dev/tcp/content.example.com/80: No route to host
##重启sshd服务
[root@node2 ~]# systemctl restart sshd.service
##再次查看日志;可查看到日志中记录了有关重启服务的一系列信息
[root@node2 ~]# cat /var/log/messages
Sep 18 09:29:10 localhost systemd: Stopping OpenSSH server daemon...
Sep 18 09:29:10 localhost systemd: Starting OpenSSH server daemon...
Sep 18 09:29:10 localhost systemd: Started OpenSSH server daemon.
##停止收集日志;发现此时即便重启的服务,日志也不会记录任何信息
[root@node2 ~]# systemctl stop rsyslog.service 
[root@node2 ~]# > /var/log/messages
[root@node2 ~]# systemctl restart sshd.service
[root@node2 ~]# cat /var/log/messages  #无日志
##开始收集日志的服务
[root@node2 ~]# systemctl start rsyslog.service 
[root@node2 ~]# cat /var/log/messages  #有日志
Sep 18 09:35:39 node2 systemd: Stopping OpenSSH server daemon...
Sep 18 09:35:39 node2 systemd: Starting OpenSSH server daemon...
Sep 18 09:35:40 node2 systemd: Started OpenSSH server daemon.

实验1.2(将日志采集到指定位置)

[root@node2 ~]# > /etc/rc.d/rc.local   #清空虚拟机一直产生的日志和脚本(本地日志)
[root@node2 ~]# > /var/log/messages    #清空日志
[root@node2 ~]# cat /var/log/messages  #查看日志是否被清空(/etc/rc.d/rc.local日志可被忽略)
[root@node2 ~]# vim /etc/rsyslog.conf  #更改rsyslog.conf配置文件
#################################
54 *.info;mail.none;authpriv.none;cron.none                /var/log/messages
55 *.*                                                     /var/log/file
#将所有级别所有类型的日志采集到/var/log/file里

在这里插入图片描述

##更改配置文件后必须重启服务,否则不生效
[root@node2 ~]# systemctl restart rsyslog.service 
[root@node2 ~]# cat /var/log/file
Sep 18 09:45:51 node2 rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="3111" x-info="http://www.rsyslog.com"] start
Sep 18 09:45:51 node2 rsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
Sep 18 09:45:51 node2 systemd: Starting System Logging Service...
Sep 18 09:45:51 node2 systemd: Started System Logging Service.
Sep 18 09:45:54 node2 rc.local: /etc/rc.d/rc.local: connect: No route to host
Sep 18 09:45:54 node2 rc.local: /etc/rc.d/rc.local: line 18: /dev/tcp/content.example.com/80: No route to host

在这里插入图片描述
测试:

[root@node1 ~]# ssh [email protected]   #连接服务端
[email protected]'s password: 
Last login: Tue Sep 18 09:51:22 2018 from 172.25.254.130  
[root@node2 ~]# cat /var/log/file         #查看日志内容(有node1(130)登陆的记录)
Sep 18 10:13:19 node2 sshd[4021]: Accepted password for root from 172.25.254.130 port 55361 ssh2
Sep 18 10:13:19 node2 systemd: Starting Session 13 of user root.
Sep 18 10:13:19 node2 systemd: Started Session 13 of user root.
Sep 18 10:13:19 node2 systemd-logind: New session 13 of user root.
Sep 18 10:13:19 node2 sshd[4021]: pam_unix(sshd:session): session opened for user root by (uid=0)

2.日志的远程同步

它的意义在于实现多台主机向一台主机传输日志,便于管理者高效的查看多台主机的日志。

在服务端(发送方):

root@node2 ~]# > /etc/rc.d/rc.local    #清空虚拟机一直产生的日志和脚本(本地日志)
[root@node2 ~]# > /var/log/messages    #清空日志
[root@node2 ~]# cat /var/log/messages
[root@node2 ~]# vim /etc/rsyslog.conf
###############
54 *.info;mail.none;authpriv.none;cron.none                /var/log/messages
55 *.*                                                     @172.25.254.130  #日志接收方地址

在这里插入图片描述

[root@node2 ~]# systemctl restart rsyslog.service  #重启服务

在客户端(接收方):

[root@node1 ~]# > /etc/rc.d/rc.local    #清空虚拟机一直产生的日志和脚本(本地日志)
[root@node1 ~]# > /var/log/messages     #清空日志
[root@node1 ~]# cat /var/log/messages
[root@node1 ~]# vim /etc/rsyslog.conf   #设置接受方端口
###############
15 $ModLoad imudp           #打开插件
16 $UDPServerRun 514        #打开插件接口(取消注释#即可)

在这里插入图片描述

  [root@node1 ~]# systemctl restart rsyslog.service 
  [root@node1 ~]# systemctl stop firewalld    #关闭接收方防火墙
  [root@node1 ~]# systemctl disable fiewalld  #开机时关闭防火墙

测试:

##重启服务端的sshd服务
[root@node2 ~]# systemctl restart sshd.service
##在客户端可查看到相关日志信息
[root@node1 ~]# cat /var/log/messages
Sep 19 05:34:47 node2 systemd: Stopping OpenSSH server daemon...
Sep 19 05:34:47 node2 systemd: Starting OpenSSH server daemon...
Sep 19 05:34:47 node2 systemd: Started OpenSSH server daemon.

在这里插入图片描述

3.定义日志采集格式

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

具体的日志采集格式参数含义:
%timegenerated%    #日志生成时间
%FROMHOST-IP%      #日志来源主机的IP
%systag%           #日志生成程序
%msg%              #日志内容
\n                 #换行

实验:

[root@node1 ~]# > /etc/rc.d/rc.local
[root@node1 ~]# > /var/log/messages
[root@node1 ~]# cat /var/log/messages 
[root@node1 ~]# 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    #定义为westos格式

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

4. journalctl命令

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

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

例如:journalctl  --since 01:30 --until 01:40  #查看从1:30到1:40产生的日

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

默认此程序只负责对日志进行查看而不能对日志进行保存和采集,那么关机后再开机,
只能查看到开机后的日志,因为系统之前的日志是保存在内存中的,所以关机后就被清空了,
那么在开机时用journalctl看不到的
[root@node2 ~]# journalctl -n 3
-- Logs begin at Wed 2018-09-19 08:41:07 EDT, end at Wed 2018-09-19 08:42:00 EDT. -
Sep 19 08:41:50 node2.example.com systemd-logind[500]: New session 1 of user root.
Sep 19 08:41:50 node2.example.com sshd[1581]: pam_unix(sshd:session): session opene
Sep 19 08:42:00 node2.example.com fprintd[1579]: ** Message: No devices in use, exi
[root@node2 ~]# date
Wed Sep 19 08:42:30 EDT 2018
[root@node2 ~]# reboot
Connection to 172.25.254.230 closed by remote host.
Connection to 172.25.254.230 closed.
[kiosk@foundation66 Desktop]$ ssh [email protected]
[email protected]'s password: 
Last login: Wed Sep 19 08:41:50 2018 from 172.25.254.66
[root@node2 ~]# journalctl 
-- Logs begin at Wed 2018-09-19 08:42:42 EDT, end at Wed 2018-09-19 08:42:59 EDT. -
Sep 19 08:42:42 localhost systemd-journal[83]: Runtime journal is using 5.9M (max 4
Sep 19 08:42:42 localhost systemd-journal[83]: Runtime journal is using 5.9M (max 4
Sep 19 08:42:42 localhost kernel: Initializing cgroup subsys cpuset
Sep 19 08:42:42 localhost kernel: Initializing cgroup subsys cpu
Sep 19 08:42:42 localhost kernel: Initializing cgroup subsys cpuacct

在这里插入图片描述

(2)如何让systemd-journald将日志保存到硬盘中

[root@node1 ~]# mkdir /var/log/journal          #建立目录
[root@node1 ~]# groupadd systemd-journald       #建立组
[root@node1 ~]# chgrp systemd-journald /var/log/journal  #在该目录下的创建所有文件均属于systemd-journald组 ; chgrp表示更改文件的所有组
[root@node1 ~]# chmod g+s /var/log/journal      #g+s针对目录,在目录中创建的文件都自动归属到目录所在组
[root@node1 ~]# killall -1 systemd-journald     #-1表示重新加载配置
[root@node1 ~]# journalctl -n 3
-- Logs begin at Wed 2018-09-19 06:15:48 EDT, end at Wed 2018-09-19 06:20:15 EDT. -
Sep 19 06:20:15 node1.example.com systemd-journal[1639]: Journal started
Sep 19 06:20:14 node1.example.com systemd[1]: Starting Trigger Flushing of Journal 
Sep 19 06:20:14 node1.example.com systemd[1]: Started Trigger Flushing of Journal t
[root@node1 ~]# date    #查看时间
Wed Sep 19 06:20:24 EDT 2018    
[root@node1 ~]# reboot  #重启
Connection to 172.25.254.130 closed by remote host.
Connection to 172.25.254.130 closed.
[kiosk@foundation66 Desktop]$ ssh [email protected]
[email protected]'s password: 
Last login: Wed Sep 19 06:16:12 2018 from 172.25.254.66
[root@node1 ~]# journalctl    #查看日志(此时可查看到关机之前的所有日志)

在这里插入图片描述

5.时间同步

在服务端:

[root@node2 ~]# vim /etc/chrony.conf
###############
22 allow 172.25.254.0/24    #允许网络位相同的所有客户端来访问本机共享的时间

29 local stratum 10         #共享时间共享功能并设定共享级别,这个参数开启后本机不去同步别人的时间到本机

在这里插入图片描述

[root@node2 ~]# systemctl restart chronyd
[root@node2 ~]# systemctl stop  firewalld     #关闭防火墙

在客户端:

[root@node1 ~]# vim /etc/chrony.conf
#######################
3 server 172.25.254.230 iburst  #服务端的ip

在这里插入图片描述

[root@node1 ~]# systemctl restart chronyd
[root@node1 ~]# systemctl stop  firewalld     #关闭防火墙
[root@node1 ~]# chronyc sources -v            #检测是否同步成功
210 Number of sources = 1

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||                                                /   xxxx = adjusted offset,
||         Log2(Polling interval) -.             |    yyyy = measured offset,
||                                  \            |    zzzz = estimated error.
||                                   |           |                         
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 172.25.254.230               10   6    17     5  +8599ns[  +26us] +/-  165us

##注意: ^* 代表成功 (如果是^?代表未同步成功,此时检查火墙的状态以及配置文件是否编写正确,确保无误后多刷新几次即可)

在这里插入图片描述
6.与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 "年-月-日  时:分:妙"  #修改时间

例如 timedatectl set-time "2018-11-11 11:11:11" 

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lilygg/article/details/82774877