Linux系统日志管理
1、系统常用的日志(日志是用来记录重大事件的工具)
/var/log/message 系统信息日志,包含错误信息等
/var/log/secure 系统登录日志
/var/log/cron 定时任务日志
/var/log/maillog 邮件日志
/var/log/boot.log 系统启动日志
2、日志管理服务 rsyslog
【1】作用:主要用来采集日志,不产生日志
【2】配置文件:/etc/rsyslog.conf
编辑文件时的格式为: ------ *.* 存放日志文件 ------
其中第一个*代表日志类型,第二个*代表日志级别
1.日志类型分为:
auth ##pam产生的日志
authpriv ##ssh、ftp等登录信息的验证信息
corn ##时间任务相关
kern ##内核
lpr ##打印
mail ##邮件
mark(syslog)-rsyslog##服务内部的信息,时间标识
news ##新闻组
user ##用户程序产生的相关信息
uucp ##unix to nuix copy主机之间相关的通信
local 1-7 ##自定义的日志设备
2. 日志级别分为:
debug ##有调试信息的,日志通信最多
info ##一般信息日志,最常用
notice ##最具有重要性的普通条件的信息
warning ##警告级别
err ##错误级别,阻止某个功能或者模块不能正常工作的信息
crit ##严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert ##需要立刻修改的信息
emerg ##内核崩溃等重要信息
none ##什么都不记录
注意:从上到下,级别从低到高,记录信息越来越少
详细信息可查手册:man 5 syslog
3.示例:在/etc/rsyslog中添加一个日志文件/var/log/xniu,当sshd服务出错时,该文件会接收到错误
注释: ------ > /var/log/xniu ---是对文件的内容进行清空;当系统配置文件一定要重启使其生效。
3.日志的远程同步
【1】 作用:便于管理多台主机
【2】步骤:
(1)在日志发送方:vim /etc/rsyslog.conf ----->文件里添加内容: *.*@172.25.254.97 ------> systemctl restart rsyslog
注释:添加内容里面,@表示使用udp协议发送;@@表示使用tcp协议发送
(2)在日志接收方:vim /etc/rsyslog.conf ------>使第15行、16行有效------> systemctl restart rsyslog ------>systemctl stop firewalld
------>systemctl disable firewalld
注释: 配置文件里面,15行:$ModLoad imudp ##表示日志接受模块;
16行:$UDPServerRun 514##表示开启接受模块
systemctl stopfirawalld##关闭接受方防火墙
systemctl disable firewalld ##使防火墙开机不自启动
(3)发送方和接收方均清空日志文件,使用命令: > /var/log/message
(4)测试:在日志的发送方运行:logger test ------> cat /var/log/message ;完成之后,会产生日志信息
在接受方运行:cat /var/log/message ;
【3】示例:client虚拟机为发送方,server虚拟机为接受方;实现日志的同步
[root@client ~]# vim /etc/rsyslog.conf
在服务端进行操作:
[root@server ~]# vim /etc/rsyslog.conf
注意:清空日志文件的先后顺序。
4.日志采集格式的设定
【1】作用:从发送方同步过来的日志,不利于我们查看相关信息;所以要接收方采集的日志按我们自己的设定的规则来显示
【2】设定步骤:vim /etc/rsyslog.conf ------> $template LOGFMT,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
------> 在自己显示的日志文件后面,把格式添加进去:*.*/var/log/westos;LOGFMT
注释: %timegenerated% ##显示日志时间
%FROMHOST-IP% ##显示主机IP
%syslogtag% ##日志记录目标
%msg% ##日志内容
\n ##换行
【3】 示例: 在server虚拟机中设置规则,可以查看到发送方的信息
[root@server ~]# vim /etc/rsyslog.conf
在server主机测试结果:
5.日志分析和采集工具
【1】命令:journalctl##直接执行,进行日志的查看
【2】参数:-n 3 ##查看最近三条记录-perr##查看错误日志-overbose##查看日志的详细参数
--since##查看从什么时候开始的日志 --until##查看什么时候截止的日志
【3】如何使用--- systemd-journald ---保存系统日志信息
【4】示例: 使用-n命令来显示最近3条命令
使用-p命令显示错误日志:
使用-o verbose查看详细参数:
也可以用命令:journalctl _PID=2482 _COMM=sshd 来进行精确查找:
使用命令:journalctl --since "2018-07-27 12:00" --until "2018-07-19 00:00" 时间段的日志
补充:日志在系统的存储是暂时的,系统重启后之前的日志信息就不会存在。可以通过以下步骤实现日志的信息保存(在设置之后的留下的信息)
[root@client ~]# chgrp systemd-journal /var/log/journal/
[root@client ~]# chmod g+s /var/log/journal/ ## 把该文件的使用均指定为组信息
[root@client ~]# ps aux | grep systemd-journal
root 364 0.0 0.2 40864 2428 ? Ss 06:05 0:00 /usr/lib/systemd/systemd-journald
root 5298 0.0 0.0 112644 936 pts/0 R+ 12:08 0:00 grep --color=auto systemd-journal
[root@client ~]# killall -1 systemd-journald ##重新开启日志进程
[root@client journal]# ls
946cb0e817ea4adb916183df8c4fc817 ##记录日志信息的id
[root@client journal]# ll ##该日志会记录7-20 12:09以后的记录
total 0
drwxr-sr-x 2 root systemd-journal 27 Jul 20 12:09 946cb0e817ea4adb916183df8c4fc817
[root@client journal]# date
Fri Jul 20 12:10:17 CST 2018
6.日志时间同步
【1】作用:让多台虚拟机保持时间的一致。
【2】服务名称:chronyd
【3】步骤:(在两台虚拟机下进行)
(1)在服务端配置:vim /etc/chronyd
22行 allow 172.25.254.0/24 ## 允许ip为172.25.254.0、子网掩码为24的主机同步时间
28行 local stratum 10 ##表示不同步其他时间
systemctl restart chronyd
(2)在客户端配置:vim /etc/chronyd
2-5行留下一行:server 172.25.254.97 ##表示要同步的主机为172.25.254.97
systemctl restart chrond ## 重启服务
systemctl stop firewalld ## 关闭防火墙
(3)测试:在客户端输入:chronyc sources -v
若结果为如下,则表示同步成功:
注意:在做此实验前,两边的时间是不相同的(可以使用date查看);服务器端和客户端要关闭防火墙,这样可以进行数据的同步;
文件配置之后要重启。
7.时间设置timedatectl
使用timedatetcl查看系统时间
命令timedatectl list-timezones列出所有时区
使用--- timedatectl set-timezone 时区名---来修改时区
使用---timedatectl set-time "2018-7-20 12:00:00" ---对时间设定
注意:当前系统中的时间为bios时间+时区(windows下无这种计算方法);
---timedatectl set-local-rtc 0---表示使用UTC时间