1.什么叫日志
电脑的日志相当于我们平常写的日记,日志里面记录的是服务器的状态。
日志的存在可以使管理员提前知道服务器的各种状态,如果服务器出现什么问题可以提前处理。
对于多台主机服务器产生的日志集中在一起管理,放在一台主机上管理,将其他服务器的日志都传到这台管理日志的主机上,这样就方便多了。
注意:系统启动自动打开的shell会一直产生日志
2.实验环境的搭建
(1)在真机上打开两台虚拟机,分别为desktop和server
(2)设置两台虚拟机的ip地址
(3)测试两台虚拟机可以互相通信
(4)将desktop作为发送方,server作为接收方
3.系统日志管理
(1)rsyslog:此服务是用来采集系统日志的,它自己不产生日志,只是起到采集日志的作用(搬运工)
(2)rsyslog的管理:
/var/log/message | 系统服务日志 |
---|---|
/var/log/secure | 系统登陆日志 |
/var/log/cron | 定时任务日志 |
/var/log/maillog | 邮件日志 |
/var/log/boot.log | 系统启动日志 |
(3)日志主要包含日志的类型和级别
查看var/log/file文件
日志类型:
auth pam | 产生的日志 |
---|---|
authpriv | ssh,ftp等登陆信息的验证信息 |
cron | 时间任务相关 |
kern | 内核 |
日志级别:
debug | 有调试信息的,日志信息最多 |
---|---|
info | 一般日志信息,最常用的 |
notice | 最具有重要性的普通条件信息 |
warrning | 警告级别 |
err | 错误级别 ,某个功能不能使用 |
crit | 严重级别,整个系统或软件不能使用 |
alet | 需要立刻修改信息 |
emerg | 系统奔溃 |
none | 什么都不记录 |
注: 从上到下,级别从低到高,记录的信息越来越少,详细的可以查看手册:man 3 syslog
4.日志的定向采集
1.日志定向发送
将系统产生的日志定向采集到具体的目录
使用一台虚拟机(desktop)
vim /etc/rsyslog.conf ##修改日志的规则,以及定向的目录
重启服务
systemctl restart rsyslog.server
测试:
logger westos1
查看定向目录中,是否存在日志westos1
cat 定向目录
日志的定向采集主要包括在发送方与接收方进行的操作
5.日志的远程同步
当一台服务器对多台服务器进行管理时,需要远程同步
(1)发送方:
首先要确定发送什么类型与什么级别的日志
其次要确定发送到什么地方
最后要确定以哪种方式(协议)去发送
测试:发送一个日志,在日志管理文件中是否生成
vim /etc/rsyslog.conf ##对该文件进行修改,确保以特定的方式发送特定日志到特定的接收方
重启服务:
(2)接收方:
首先要关闭防火墙,确定日志可以传送成功
其次要确定以那个接口进行接收
最后与发送方保持同一个方式(协议)
测试:是否接收成功
注:先关闭防火墙,在重启服务。
6.日志采集格式的设定
当对日志的格式进行设定,以便于查看
注:该实验在定向实验的基础上进行操作
打开vim /etc/rsyslog.conf
显示:
$template LOGFMT,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
【1】 【2】 【3】 【4】 【5】 【6】
日志生成名字 日志生成时间 显示主机ip 日志记录目标 日志内容 换行
实验:
1】对/etc/rsyslog.conf
文件进行修改日志产生格式
$template WES, "%FROMHOST-IP% %msg% %syslogtag%\n"
2】
*.* /var/log/message;WES #在指定的日志中采用WES格式
3】测试:发送端发送日志,在接收端查看日志的格式是否更改
7.时间同步服务
如果日志发送方和接收方的时间不一致很麻烦
让时间保持一致,也就是服务端同步客户端,客户端共享系统时间,让别人读
服务端和客户端都是自己的时间,设置自身时间用date命令
(1)怎样在一个环境里面让所有主机的时间保持一致?
服务名称:chronyd
(2)具体步骤
1】在服务端: vim /etc/chrony.conf
22行: allow 172.25.254.0/24 允许那些客户端来同步本机时间
29行: local stratum 10 本机不同步任何主机的时间,本机作为时间源
systemctl restart chronyd
注:发送方需要共享时间,故关闭防火墙
2】在客户端:vim /etc/chrony.conf
server 172.25.254.103(服务端的ip) iburst(删除其他的) 本机立即同步103主机的时间
systemctl restart chronyd
3】客户端测试:
chronyc sources -v
出现^* 就说明好了
查看时间是否同步
注:相差几秒是由于输入命令相差几秒
8.设置时间
timedatectl set-time “时间” | 设置时间 |
---|---|
timedatectl set-timezone 时区 | 设置时区 |
timedatectl set-locaal-rtc 0 (1) | 设定是否使用UTC时间 |
timedatectl list-timezone | 查看支持的所有时区 |
timedatectl set-ntp true (false) | 是否同步,在UTC为0时改 |
timedatectl set-time “时间”
timedatectl set-timezone Asia/Shanghai
timedatectl set-locaal-rtc 0 (1)
timedatectl set-ntp true (false)
(1)timedatectl 管理系统时间
Local time | 本地时间 |
---|---|
Universal time | 国际时间 |
RTC time | 硬件时间 |
timezone 时区 |
timedatectl set-time “2019-10-21 17:50:50”
9.日志同步journal
rsyslog采集日志,从磁盘读取,速度慢,reboot 重启系统之后系统之前的日志会被清除 journal 不采集日志,直接从内核存看日志,速度更快,reboot 重启系统之后系统之前的日志会被清除
(1)journal 的用法
journal -n 4 | 查看最近的4条日志,不加数字,默认最机 10 条 |
---|---|
journal -p err | 查看错误日志 |
journal -o verbose | 查看日志的详细参数 |
journal --since | 查看从什么时候开始的日志 |
journal --until | 查看直到什么时候为止的日志 |
(2)使用journal采集日志
在硬盘上传创建一个文件来存放journal采集的信息
默认systemd-journal是不会保存系统日志到硬盘的
那么关机之后再次开机时只能看到本次开机之后的日志 关机之前的日志是无法看到的
1】首先创建一个文件,存放日志
mkdir /var/log/journal
2】修改文件的用户权限
chgrp systemd-journal /var/log/journal
系统初始化程序控制这个日志,改这个文件的所有组为systemd-journal
这样系统就能识别这个文件了,把这个文件放入这个组,让组控制这个文件
3】修改文件权限,使组可以查看文件
chmod 2755 /var/log/journal
4】进程重新加载配置,不会关闭进程
killall -1 /usr/lib/systemd/systemd-journald
5】date 查看系统当前时间
6】查看机器号
ls /var/log/journal/
7】查看当前时间
8】重启
reboot
9】再次查看日志
journalctl
注:可以看到重启之前采集的日志,不会造成日志的丢失
date(查看系统当前时间) reboot(重启系统 相当于关机) journalctl(再次查看仍然能看到系统当前时间之前的日志了)
因为采集的日志放到了硬盘里面,只有这样使用journalctl查看日志的时候,才会看到系统开机之前的日志,只有硬盘的东西才可以永久保存,内存里面的东西都是开机之后才有的