日志的管理、journalctl命令、时间同步、timedatectl命令
准备工作:(1)打开两个虚拟机(desktop和server)并更改他们的ip(可用nm-connection-eidtor#图形设定ip)(2)更改两个虚拟机的名称(hostnamectl set-hostname node1.example.com#将虚拟机的名字改为node1)(3)在真机中打开两个shell,用ssh命令分别连接两个虚拟机(注:ctrl+shift+t#...
·
准备工作:
(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
更多推荐
已为社区贡献14条内容
所有评论(0)