日志是可以直接看出系统中的错误,日志在内存里,由服务决定
##一、查看系统中的日志rsyslog
1.rsyslog
此服务是用来采集系统日志的。其不产生日志,只是起到采集作用。
2.rsyslog的管理
#系统常用日志
/var/log/messages ----所有日志级别的常规信息(不包含邮件,服务认证,定时任务)
/var/log/secure --------- 系统登陆日志
/var/log/maillog --------- 邮件日志
/var/log/crog -------------定时任务日志
/var/log/secure ----------服务认证日志
/var/log/boot.log --------系统启动日志
/var/log/cron -------------定时任务日志
#日志类型
auth | 用户登陆日志(pam生产日志) |
---|---|
authpriv | 服务认证日志(sshd认证) |
kern | 内核日志 |
lpr | 打印机日志 |
cron | 定时任务日志 |
邮件日志 | |
news | 新闻 |
user | 用户相关程序日志 |
local | 用户自定义日志 |
#日志级别
debug | 系统调试信息 |
---|---|
info | 常规信息 |
notice | 最具有重要性的普通条件的信息 |
warning | 警告信息 |
err | 报错(级别低,阻止了某个功能不能正常工作) |
crit | 报错(级别高,组织整个软件或整个系统不能正常工作) |
alert | 需要立即修改信息 |
emerg | 内核崩溃 |
none | 不采集任何日志信息 |
注意:从上到下,级别从低到高,记录的信息越来越少
##二、日志的远程同步
做实验前要清空其它没有的数据,以防出错!
> /var/log/messages #清空日志
> /etc/rc.d/rc.local #清空虚拟机一直产生的日志和脚本
日志的远程同步实验步骤:
注意:
1)这个实验中自定义发送方和接受方,只要自己能记住就可以,但是千万不能混乱,可以用“ifconfig”查看IP
2)更改完配置文件后一定要“systemctl restart rsyslog.service”重启服务器,否则后面的操作毫无意义
3)一定要在接收方关闭防火墙,否则会对外来发送方发送的日志进行屏蔽
(1)在日志发送方
vim /etc/rsyslog.conf
##########################修改文件
*.* @172.25.254.200 ##"@"表示udp协议发送,“@@”表示tcp协议发送(将所有日志的所有调试信息发送到接收方地址)(172.25.254.200为日志接收方IP)
##########################
systemctl restart rsyslog.service ##重启rsyslog服务器
systemctl restart sshd.service ##重启后在接收方才可以看到日志
vim /etc/rsyslog.conf
##########################修改文件
15 $ModLoad imudp ##开启日志接收模块
16 $UDPServerRun 514 ##开启接收端口
#########################
systemctl restart rsyslog.service ##重启rsyslog服务器
systemctl stop firewalld ##关闭防火墙
systemctl disable firewalld ##关闭防火墙对接收的屏蔽
systemctl status firewalld ##查看防火墙状态
1)在发送方和接收方都清空日志文件
> /var/log/messages ##清空日志
2)在日志的发送方
logger hahaha ##建立日志
cat /var/log/messages ##查看日志信息文件(看是否产生日志hahaha)
cat /var/log/messages ##查看日志信息文件(看是否接收到日志hahaha)
三、设定日志采集格式
参数对应的含义:
%timegenerated% ------ #日志生成时间
%FROMHOST-IP% ----- #日志来源主机的IP
%syslogtag% ------------- #日志生成程序
%msg% -------------------- #日志内容
\n ----------------------------- #换行
vim /etc/rsyslog.conf
########################编辑文件
$template 格式名称,“日志采集格式” ##格式名称随便写
*.info;mail.none;authpriv.none;cron.none /var/log/messages;格式名称
#########################
$template HAHAHA,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n" (在rules下写)
示例:
vim /etc/rsyslog.conf
1.时间同步服务
服务名称:chronyd
1)在服务器端共享时间
vim /etc/chrony.conf
####################文件修改
29 local stratum 10 ##开启时间共享功能,本机作为时间源(时间源的优先级为10)
##这个参数开启后本机不去同步别人的时间到本机
22 allow 172.25.254.0/24 ##允许那些客户端来访问本机共享的时间
####################
systemctl restart chronyd ##重启chronyd
systemctl stop firewalld ##关闭火墙
vim /etc/chrony.conf
删掉3,4,5,6行
输入 server 172.25.254.72 iburst----##server 服务端IP iburst(立即更改)
systemctl restart chronyd ##重启
3)测试,在客户端
[root@localhost ~]# date 11111111
Mon Nov 11 11:11:00 EST 2019
[root@localhost ~]#
[root@localhost ~]#chronyc sources -v
如果出现“^* ”就说明试验成功,已经和172.25.254.72的时间同步
utc时间计算方式:世界时间+时区
2.修改时间------timedatectl 命令
timedatectl ##显示当前时间信息
timedatectl set-timezone "America/New_York" ##更改时区为西五区
timedatectl set-time "2012-12-12 12:12" ## 设置时间为2012-12-12 12:12
法1: timedatectl set-local-rtc 0/1 ##设置是否使用utc时间
##0--否,1--是
法2: vim /etc/adjtime ##文件中LOCAL和UTC只能运行一个
timedatectl list-timezones ##查看支持的时区
五、查看内存中的日志
1.日志查看工具:journalctl
journalctl -n 4 ##查看最近四条日志
journalctl -p err ##查看错误日志
journalctl --since 11:00
journalctl --since 11:00 --until 11:00:30 ##查看11:00以后,11:00:30以前的日志
journalctl -o verbose ##查看日志的详细参数,例如:_PID=651 journalctl _PID=651
journalctl -f ##用户ctrl+c结束监控
2.如何使用systemd-journald保存系统日志到硬盘中
默认此程序只负责对日志进行查看而不对日志进行保存和采集
那么关机后再开机,对日志进行查看,只能查看到开机后的日志
系统之前的日志因为是保存在内存中的,所以关机后就被清空了,那么在开机是用journalctl看不到
使用下列命令可以保存系统日志(一般情况下不建议使用)
mkdir /var/log/journal
chown root.systemd-journal /var/log/journal ##更改文件所有人
chmod g+s /var/log/journal ##在目录中创建的文件都自动归属到目录所在组
killall -1 systemd-journald
journalctl -n 3 ##查看日志前三行内容
date ##查看现在的时间
reboot ##退出系统
ssh [email protected] ##再次连接
journalctl ##查看日志
存入硬盘后可以看到关机前的内容,这是因为把这些日志都保存到了硬盘里。就算关机重启日志也不会清空
使用systemd-journald保存系统日志(慎用,不会自动关,会占用内存越来越大)