在做以下实验时需先做的操作为:
(1)打开两个虚拟机(desktop和server)并更改他们的ip
(可用nm-connection-eidtor #图形设定ip)
(2)更改两个虚拟机的名称(hostnamectl set-hostname
node1.example.com #将虚拟机的名字改为node1)
(3)在真机中打开两个shell,用ssh命令分别连接两个虚拟机
注:ctrl+shift+t #再打开一个shell
1.日志的采集规则:
*.* 文件名称(绝对路径) #日志类型.日志级别 日志存放的文件
vim /etc/rsyslog.conf #查看并修改采集日志文件配置,
使我们能够采集日志到指定位置
systemctl stop rsyslog.service #停止收集日志的服务
systemctl start rsyslog.service #开始收集日志的服务
(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 #定时任务日志
例如:
*.* /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具体操作步骤如下:
在服务端(note2)
> /var/log/messages #清空日志
cat /var/log/messages #查看日志(没有日志)
systemctl restart sshd.service #重启服务
cat /var/log/messages #(有日志)
systemctl stop rsyslog.service #停止收集日志的服务
> /var/log/messages
systemctl restart sshd.service
cat /var/log/messages #(没有日志)
systemctl start rsyslog.service #开始收集日志的服务
cat /var/log/messages # (有日志)
实验1.2(将日志采集到指定位置)具体操作步骤如下:
在服务端(note2)
> /etc/rc.d/rc.local #清空虚拟机一直产生的日志和脚本(本地日志)
> /var/log/westos #清空日志
cat /var/log/messages #查看日志是否被清空
vim /etc/rsyslog.conf #更改rsyslog.conf配置文件
#################################
*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.* /var/log/file
cat /var/log/file
在客户端测试(note1)
ssh root@172.25.254.130 #连接服务端
exit #退出连接
在服务端
systemctl start sshd.service #重启服务
cat /var/log/file #查看日志内容(有node1登陆的记录)
2.日志的远程同步
它的意义在于实现多台主机向一台主机传输日志,便于管理者高效的查看多台主机的日志。
具体实验2操作步骤如下:
在服务端(发送方)
> /etc/rc.d/rc.local #清空虚拟机一直产生的日志和脚本(本地日志)
> /var/log/message #清空日志
cat /var/log/messages
vim /etc/rsyslog.conf
####################################
*.* @172.25.254.130 #日志接收方地址
systemctl restart rsyslog.service #重启配置文件
在客户端(接收方)
> /etc/rc.d/rc.local #清空虚拟机一直产生的日志和脚本(本地日志)
> /var/log/message #清空日志
cat /var/log/messages
vim /etc/rsyslog.conf #设置接受方端口
#############################
15 $ModLoad imudp # #打开插件
16 $UDPServerRun 514 #打开插件接口(取消注释#即可)
systemctl restart rsyslog.service
systemctl stop firewalld #关闭接收方防火墙
systemctl disable firewalld #开机时开启防火墙
cat /var/log/messages #查看日志
3.定义日志采集格式
$template 格式名称, "日志采集格式"
具体的日志采集格式:
%timegenerated% #日志生成时间
%FROMHOST-IP% #日志来源主机的IP
%systag% #日志生成程序
%msg% #日志内容
\n #换行
具体实验3操作步骤如下:
在客户端(接收方)
> /etc/rc.d/rc.local #清空虚拟机一直产生的日志和脚本(本地日志)
vim /etc/rsyslog.conf #编辑配置文件,定义采格式
###########################
$template westos, "%timegenerated% %FROMHOST-IP% %syslogtag% %msg% \n " #定义为westos格式
*.info;mail.none;authpriv.none;cron.none /var/log/messages;westos
systemctl restart rsyslog.service
cat /var/log/messages #查看日志
5. journalctl命令
journalctl + 参数 #日志的查看
具体参数的含义:
-p err #查看报错日志
-f #监控 (用户ctrl+c结束监控)
--since 时间点 --until 时间点 #查看从何时到何时的日志
-o verbose #查看日志详细参数
-n 3 #最新(new)的三条日志
-o verbose #从详细参数中可以查到日志的PID
journalctl _PID=84 #直接查看PID为84的程序产生的日志
例如:journalctl --since 01:30 --until 01:40 #查看从1:30到1:40产生的日
(1)对systemd-journald管理
默认此程序只负责对日志进行查看而不能对日志进行保存和采集
那么关机后再开机,只能查看到开机后的日志,因为系统之前的日志是保存在内存中的,
所以关机后就被清空了,那么在开机时用journalctl看不到的
(2)如何让systemd-journald将日志保存到硬盘中
mkdir /var/log/journal #建立目录
groupadd systemd-journald #建立组
chgrp systemd-journald /var/log/journal #在该目录下的创建所有文件 均属于systemd-journald组
chmod g+s /var/log/journal #
killall -1 systemd-journald #结束组中的所有进程
journalctl -n 3 #查看关机之前的日志,以便后边对照观察
date #查看时间
reboot #重启
ssh root@172.25.254.230
journalctl #(此时可查看到关机之前的所有日志)
6.时间同步
#在服务端共享时间
vim /etc/chrony.conf
######################
29 local stratum #共享时间共享功能并设定共享级别,
这个参数开启后本机不去同步别人的时间到本机
22 allow 172.25.254.0/24 #允许网络位相同的所有客户端来访问本机共享的时间
systemctl restart chronyd
#在客户端:
vim /etc/chrony.conf
################
server 172.25.254.230 iburst
systemctl restart chronyd
systemctl stop firewalld #关闭防火墙
chronyc sources -v
*********************************************************************
.-- 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.128 10 6 17 0 +6500ns[ +111us] +/- 988us
7.与timedatectl有关的命令
timedatectl #查看时间信息
timedatectl list-timezones #查看所有时区
timedatectl set-timezone Asia/Shanghai #设置为上海的时区
timedatectl set-local-rtc 0 #使用UTC时间
vim /etc/adjtime #在此文件中显示UTC
timedatectl set-local-rtc 1 #使用local(本地)时间
vim /etc/adjtime #在此文件中显示local
timedatectl set-time "年-月-日 时:分:妙" #修改时间
date #查看时间
例如 timedatectl set-time "2018-11-11 11:11:11"
8.与at有关的命令(延迟任务)
at 时间 #设定在该时刻要进行什么操作
at now+数字min #在几分钟后要进行什么操作
at -l #查看该操作的编号
at -c 3 #查看编号为3要做什么操做
at -r 3 #撤回编号为3的操作
例如:
at 16:00
>touch /mnt/file{1..3} #要做的操作
> #(按ctrl+d)
注:做以上操作时需打开一个shell用ssh连接相同的虚拟机
用watch -n 1 ls /mnt 来监控,便于观察现象
vim /etc/at.deny #编辑at配置文件,指定黑名单(即用户不能执行at操作)
touch /etc/at.allow #建立白名单的配置文件(系统默认没有白名单配置文件。白名单一旦出现,黑名单便会失效,即只有超级用户能执行at命令)
vim /etc/at.allow #编辑at配置文件,指定白名单,即指定用户和root用户才能>执行at操作