Linux系统中的日志管理
实验环境
westos_linux:172.25.254.9
westos_node1:172.25.254.109
systemctl stop firewald
journald
-
服务名称:systemd-journald.service
#此服务用于查看日志
#所处位置在/run/log/journal。
#日志重启后就消失了,只有重启后的日志systemctl status systemd-journald.service ##查看服务的状态 cd /run/log/journal ##找寻服务
-
journal命令用法
1、journalctl -n 3 ##日志的最新的三条 --since "10:00:00" ##显示十点之后的日志 --since "2020-05-02 11:00:00” ## 显示十一点之后的日志 --until “2020-05-02 11:00:00“ ## 显示日志到十一点
2、 journalctl -o 设置日志的显示方式
journalctl -o short ##经典模式显示日志
journalctl -o verbose ##显示日志的全部内容
journalctl -o export ##适合传出和备份的二进制格式
journalctl -o json ##js格式显示输出。一般配合生成网页之类的模式
3、journalctl -p 显示制定级别的日志
journalctl -p 0 ##系统的严重问题日志
journalctl -p 1 ##系统中立即要更改的信息
journalctl -p 2 ##严重级别会导致系统软件不能正常工作
journalctl -p 3 ##程序报错
journalctl -p 4 ##程序警告
journalctl -p 5 ##重要信息的普通日志
journalctl -p 6 ##普通信息
journalctl -p 7 ##程序排错信息
journalctl -F PRIORITY ##查看可控日志级别
journalctl -u sshd ##指定查看服务
journalctl --disk-usage ##查看日志大小
journalctl --vacuum-size=1G ##设定日志存放大小
journalctl --vacuum-time=1w ##日志在系统中最长存放时间
journalctl -f ##监控日志
journalctl _PID=1024 ##关于PID的日志
#_后的内容可更改,使用journalctl -o verbose 来看都可以查什么的日志
journalctl MACHINE_ID=a9bf2464da25407a9b70608b3e39f37d
-
用journal服务永久存放日志
##系统默认的日志在/run/log/journal中,默认方式在系统重启后会被清理,如果需要永久保存需要进行以下的操作mkdir /var/log/journal ##新建文件;var是硬盘存储 ls -ld /var/log/journal/ ##查看权限 chgrp systemd-journal /var/log/journal/ ##设定目录的组为ststemd-journal chmod 2775 /var/log/journal/ ##目录中新建文件自动归属到目录若属组中 ls -ld /var/log/journal/ cd /var/log/journal/ ls cd a9bf2464da25407a9b70608b3e39f37d ls systemctl restart systemd-journald ##重启服务 journal ##看日志记录
##完成以上操作后,如果重启电脑,之前 登陆所产生的日志不会被清除。
##要想永久的删除日志则需要删掉此文件 /var/log/journal/ 里面的东西即可
rsyslog.service
-
实验环境
1、创建第二个虚拟机,并且给他配置IPwestos-vmctl create westos_node2 ##在主机中创建新的虚拟机 virt-manage ##连接网桥,在主机中操作 nm-connection-editor ##设置IP,在新的虚拟机中进行
2、 为了区分这两个虚拟机,可以对其进行重命名。
hostnamectl set-hostname westos_node1.westos.org
-
服务名称:rsyslog-service
1、日志存放:/var/log/message ##系统服务日志,常规信息,服务报错 /var/log/secure ##系统认证信息日志 /var/log/maillog ##系统邮件日志信息 /var/log/cron ##系统定时任务 /var/log/boot.log ##系统启动日志信息
2、配置文件 : /etc/rsyslog.conf
3、rsyslog服务用于把日志采集到硬盘里面systemctl status rsyslog ##查看服务确定他是开启状态 systemctl restart sshd ##重启一个服务 tail /var/log/message ##在系统信息里面看到日志生成 systemctl stop rsyslog.service ##关掉这个服务 > /var/log/message ##清除掉信息 systemctl restart sshd ##重启服务 cat /var/log/messages ##在系统信息里面没有看到日志生成,但是日志是生成的 systemctl start rsyslog.service ##再次打开这个采集服务,他会立即采集 cat /var/log/messages
-
自定义日志采集路径
vim /etc/rsyslog.conf ##编辑此文件进行自定义,大约在47行 日志类型.日志级别 日志存放路径 *.* /var/log/westos ##把系统中所有级别的日志存放到westos中 *.*;authprive.none /var/log/westos ##把系统中所有级别的日志存放到westos中, authpriv不存放到westos中 日志类型 auth ##用户认证 aythpriv ##服务认证 cron ##时间任务 kern ##内核类型 mail ##邮件 news ##系统更新信息 user ##用户 日志级别 debug ##程序排错信息 info ##程序常规运行信息 notice ##重要信息的普通日志 waring ##程序警告 err ##程序报错 crit ##严重级别会导致系统软件不能正常工作 alert ##系统中立即要更改的信息 emerg ##系统的严重问题日志 none ##不采集
-
如何更改日记采集模式(假设我的虚拟机node1是接受方)
man 5 rsyslog.conf ##查看此服务
systemctl disable --now firewalld.service ##关掉火墙
vim /etc/rsyslog.conf ##根据man查看的服务提示,我们应该在接受方编辑此文件进行自定义,大约在19行
systemctl restart rsyslog.service ##重新启动服务
ss -alntupe | grep rsyslog ##查看端口是否正确
vim /etc/rsyslog.conf ##在日志的发送方,编写此文件47行
##IP谁是接受方就写谁的IP
systemctl restart rsyslog.service ##在发送方重启服务
> /var/log/message ##将接收方和发送方的日志都清除,方便观察测试
tail -f /var/log/messages ##在接受方监控
logger haohaoxuexi ##在发送方编写日志用logger命令,只是为了简便测试
-
如何更改日志采集格式 (调整接受方的格式)
1、定义日志采集格式#WESTOS_FORMAT: 格式名称 #%FROMHOST-IP%: 日志来源主机IP #%timegenerated%: 日志生成时间 #%syslogtag%: 日志生成服务 #%msg%: 日志内容 #\n: 换行 vim /etc/rsyslog.conf ##编辑此服务的文件 $template WESTOS , "%FROMHOST-IP% %timegenerated% %syslogtag% %msg%\n" ##WESTOS这个名字是任意的,需要与另外一个需要更改的地方名字一致。
##更改34行这个格式的时候,首先复制备份一个比较好。 WESTOS只是我自己设定的,可以是任意的,代表了格式而已,两个更改的地方必须是一样的。
timdatectl
-
实验环境:两台虚拟机,一个用于监控,一个做检测
-
-如何修改系统时间
timedatectl set-time "2021-01-21 10:15:00" ##设定系统时间 timedatectl list-timezones ##显示系统的所有时区 timedatectl set-timezone "Africa/Bamako" ##设定系统时区 timedatectl set-local-rtc 1|0 ##设定系统时间计算方式,0代表RTC时间与UTC时间一致; 1代表RTC时间与本地时间一致,一般都是0
1、UTC是伦敦时间,RTC是硬盘时间,CST是本机时间。
硬件时间RTC加时区值Time就是本机时间CST,这个可以作修改。但是 UTC时间不能改。timedatectl
watch -n 1 timedatectl ##在node2虚拟机中作出时间戳的监控
timedatectl list-timezones
vim /etc/adjtime ##在此文件中可以看见硬盘时间RTC是和谁一致。
时间同步服务
如果说node_2共享出去时间,则node_2是服务端,拿到别人时间的node_1是客户端。
-
在服务端(关闭火墙)
vim /etc/chrony.conf ##编辑此文件更改23和25行
##23行更改的是“把时间共享出去谁能来看”,我所改的是所有人都可以访问我。25行中10表示当前主机时间服务器的时间级别,用man 5 chrony.conf命令可以看其作用
systemctl enable --now chronyd ##开启这个服务
systemctl status chronyd.service ##查看服务状态
watch -n 1 timedatectl ##监控时间变化
-
在客户端(如何把服务端的时间同步过来)
vim /etc/chrony.conf ##编辑这个文件的第三行。将poor后面的IP改为此服务端的IP
systemctl restart chronyd.service ##重启此服务
watch -n 1 timedatectl ##作出一个监控
##如果作出以上修改后RTC时间和UTC时间不同,可能是因为我们是手动改的,没有将电脑重启同步过来,利用以下两个命令即可
clock -w ## 把我们的系统时间同步到硬件
clock -s ## 把硬件时间同步到系统
##在客户端输入chronyc sources -v命令可查看是否已经同步
##同步之后不能再改时间 ,需要把服务关掉才可以再次修改时间