Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。
1.rsyslog ##此服务时用来采集系统日志的,它不产生日志,只是起到采集的作用
2.rsyslog的管理
/var/log/messages ##服务信息日志
/var/log/secure ##系统登陆日志
/var/log/cron ##定时任务日志
/var/log/maillog ##邮件日志
/var/log/boot.log ##系统启动日志
日志类型分为:
auth ##pam产生的日志
authpriv ##ssh,ftp等登陆信息的验证信息
cron ##时间任务相关
kern ##内核
lpr ##打印
mail ##邮件
mark(syslog)-rsyslog ##服务内部的信息,时间标识
news ##新闻组
user ##用户程序产生的相关信息
uucp ##unix to unix copy,unix主机之间相关的通讯
local 1~7 ##自定义的日志设备
debug ##有调试信息的,日志信息最多
info ##一般信息的日志,最常用
notice ##最具有重要信息的普通条件的信息
warning ##警告级别
err ##错误级别,阻止某个功能或者模块不能正常工作的信息
crit ##严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert ##需要立刻修改的信息
emerg ##内核奔溃等严重的信息
none ##什么都不记录
##注意:从上到下,级别从低到高,记录的信息越来越少(none除外)
##详细的可以查看手册:man 3 syslog
准备工作:
(1)打开两个虚拟机(desktop和server)并更改他们的ip(可用nm-connection-eidtor #图形设定ip)
(2)更改两个虚拟机的名称(hostnamectl set-hostname linux1.example.com #将虚拟机的名字改为linux1)
(3)在真机中打开两个shell,用ssh命令分别连接两个虚拟机(注:ctrl+shift+t #再打开一个shell)
实验环境:
linux1(desktop): 发送端 172.25.254.27
linux2(sesrver): 接受端 172.25.254.127
vim /etc/rsyslog.conf
. @172.25.254.127
##"@"表示udp协议发送,“@@”表示tcp协议发送
systemctl restart rsyslog.service ##重启服务
vim /etc/rsyslog.conf
15 $ModLoad imudp ##日志接收模块
16 UDPServerRun 514 ##开启接收端口
将15和16行#去掉
systemctl restart rsyslog .service 重启服务
systemctl stop firewalld ##关闭火墙
systemctl disable firewalld ##设定火墙开机关闭
测试:
在日志的发送方
> /var/log/messages ##先清空日志
logger test ##新建日志
cat /var/log/messages ##查看日志已经生成
在日志接受方查看
> /var/log/messages ##同样也先清空
cat /var/log/messages
测试
tail -f /var/log/message ##日志接收方
做实验的时候我们会发现有很多次其他日志的生成,不方便实验的查看
所以我们可以进行以下操作将相关文件清除掉:
> /etc/rc.d/rc.local ##清空相关文件
reboot ##重启内核
ssh [email protected] ##重新连接主机
> /var/log/messages ##清空文件
logger test ##新建日志
cat /var/log/messages ##查看
(1)采集日志格式的设定:vim /etc/rsyslog.conf
$template WESTOS,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
%timegenerated% ---->显示日志时间
%FROMHOST-IP% ---->显示主机IP
%syslogtag% ---->日志记录目标
%msg% ---->日志内容
\n ---->换行
WESTOS---->表示用此格式显示
*.info;mail.none;authpriv.none;cron.none /var/log/westos;WESTOS
systemctl restart rsyslog.service ##设置好重启服务
测试:
cat /var/log.wessages
###按自己设置的格式显示
systemd-journald服务:
提供一种改进的日志管理服务,可以手机来自内核/启动服务,标准输出,系统日志及守护进程启动和运行期间错误的消息,它将这些消息写入到一个结构化事件日志中
### q退出
journalctl -n 3 ##查看最近3条日志
journalctl -p err ##查看错误日志
journalctl -o verbose ##查看日志的详细参数
journalctl --since ##查看从什么时间开始的日志
–until ##查看到什么时间为止的日志、
journalctl --since 04:10 ##查看04:30开始的日志
journalctl --since 04:10 --until 04:15##查看04:10到04:15的日志
journalctl -f ##监控日志(ctrl+c退出)
systemctl status sshd#查看服务状态(PID=1245)
journalctl _PID=1245 _COMM=sshd ##用PID和名字查询日志
(1)默认systemd-journald是不保存系统日志到硬盘的,那么关机后再次开机只能看到本次开机后的日志,上一次关机之前的日志是无法查看的
(2)如果将日志保存在/var/log/journal目录,这样做的优点是启动后就可以利用历史数据,形成永久日志
mkdir /var/log/journal ##新建目录
chgrp systemd-journal /var/log/journal ##修改目录所有组
chmod g+s /var/log/journal##给所有组添加s权限
ps aux |grep systemd-journald ## 生成的进程都属于该组
killall -1 num ---- num为进程号,-1信号为重新启动
cd /var/log/journal
ls
bootctl
ll 主机号
reboot ## 重启
journalctl ##已经采集到的日志会保存,journalctl命令会自动搜寻到该日志并显示
服务名称
chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟与时钟服务器同步
实验环境:
linux1(desktop): 发送端 172.25.254.27
linux2(sesrver): 接受端 172.25.254.127
在发送端:
1.vim /etc/chrony.conf
22 allow 172.25.254/24 ##允许那些客户端来同步本机时间
29 local stratum 10 ##本机不同步任何主机的时间,本机作为时间源(允许同步)
2.systemctl restart chrony ##重启服务
3.关闭火墙systemctl stop firewalld
timedatectl set——timezone Asia/Shanghai ##设置时区
在客户端:
vim /etc/chrony.conf
server 172.25.254.xxx iburst ##本机立即同步xxx主机的时间
systemctl restart chronyd ##重启服务
timedatectl set——timezone Asia/Shanghai ##设置时区
测试:
#在客户端
输入chronyc sources -v
最后出现“^* 172.25.254.27 ”成功
###5.timedatectl命令###
timedatectl status ##显示当前时间信息
timedatectl list-timezones ##查看支持的所有时区
timedatectl set-time “2018-11-11 11:11:11” ##设定当前时间
timedatectl set-timezone Asia/Shanghai ##设定当前时区
timedatectl set-local-rtc 0 ##设定是否使用utc时间
timedatectl set-local-rtc 1 ##RTC=local