文章目录
日志文件
日志的功能
:
用于记录系统、程序运行中发生的各种事件
通过阅读日志,有助于诊断和解决系统故障
日志文件的分类
内核及系统日志==:由系统服务syslog统─进行管理,日志格式基本相似配置文件/etc/rsyslog.conf
用户日志:
记录系统用户登录及退出系统的相关信息
程序日志:
程序在允许的过程中,有什么报错,就会记录下来
日志的保存位置:/var/log 目录下
主要日志文件介绍
/var/log/messages:记录Linux内核消息以及各种应用程序的公共日志信息,包括启动,IO错误,网络错误,程序故障等,对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息
/var/log/cron:记录crond计划任务产生的事件信息
/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息
/var/log/maillog:记录进入或发出系统的电子邮件活动
/var/log/secure:记录用户认证相关的安全事件信息
/var/log/lastlog:记录每个用户最近的登录事件,二进制格式
/var/log/wtmp:记录每个用户登录,注销及系统启动和停机事件,二进制格式
/var/run/btmp:记录失败的,错误的登录尝试及验证事件,二进制格式
/var/run/utmp:当前登录的每个用户的详细信息
内核以及系统日志
由系统服务 reyslog 统一管理,配置文件保存在 /etc/rsylog.conf
*.info #表示info等级及以上的所有等级的信息都写到对应的日志文件里
mail.none #表示某事件的信息不写到日志文件里(这里比如是邮件)
设备字段说明:
auth #用户认证时产生的日志
authpriv #ssh、 ftp等登录信息的验证信息
daemon #—些守护进程产生的日志
ftp #ETP产生的日志
lpr #打印相关活动
rmark #rsyslog服务内部的信息,时间标识
news #网络新闻传输协议(nntp)产生的消息。
syslog #系统日志
uucp #Unix-to-Unix Copy两个unix之间的相关通信
console #针对系统控制台的消息。
cron #系统执行定时任务产生的日志。
kern #系统内核日志
localo~ #白定义程序使用
rnail #邮件日志
user #用户进程
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要)
0 EMERG(紧急):会导致主机系统不可用的情况。如系统崩溃
1 ALERT(警告):必须马上采取措施解决的问题。如数据库被破坏
2 CRIT(严重):比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能
3 ERR(错误):运行出现错误。不是非常紧急,尽快修复的
4 WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了 85%等
5 NOTICE(注意):不会影响正常功能,但是需要注意的事件。无需处理
6 INFO(信息):一般信息。正常的系统信息
7 DEBUG(调试):程序或系统调试信息等。包含详细开发的信息,调试程序时使用
none:没有优先级,不记录任何日志消息。
日志记录的一般格式
more /var/log/messages
Nov 27 15:10:35 zzz NetworkManager[8821]: <info> [1637997035.9410] dhcp4 (ens33): plen 24 (255.255.255.0)
时间标签:Nov 27 15:10:35 消息发出的日期和时间
主机名:zzz 生成消息的计算机的名称
子系统名:NetworkManager[8821]: 发出消息的应用程序的名称
消息字段:<info> [1637997035.9410]
消息的具体内容:dhcp4 (ens33): plen 24 (255.255.255.0)
分析工具
last 命令用于查询成功登录到系统的用户记录
[root@zzz log]# last
root pts/1 192.168.232.1 Sat Nov 27 16:50 still logged in
root pts/4 192.168.232.1 Sat Nov 27 13:38 still logged in
root pts/3 :0 Sat Nov 27 13:37 still logged in
root pts/2 :0 Sat Nov 27 13:36 still logged in
lastb 命令用于查询登录失败的用户记录
[root@zzz log]# lastb
root ssh:notty zzz Sat Nov 27 17:08 - 17:08 (00:00)
root ssh:notty zzz Sat Nov 27 17:08 - 17:08 (00:00)
root ssh:notty 192.168.232.1 Wed Nov 3 17:08 - 17:08 (00:00)
root :0 :0 Sun Oct 31 17:02 - 17:02 (00:00)
程序日志分析
由相应的应用程序独立进行管理,是由开发者写入的
比如 Web服务日志,位于/var/log/httpd/
access_log ##记录客户访问事件
error_log ##记录错误事件
日志管理策略
需要及时做好日志的备份和归档
延长日志保存期限
控制日志访问权限:日志中可能包含各类敏感信息,如账户,口令等
集中管理日志:将服务器的日志文件发到统一的日志文件服务器,便于日志信息的统一收集,整理和分析,杜绝日志信息的意外丢失,恶意篡改和删除
配置日志服务器收集日志
发送服务器:客户端 192.168.232.130
收集服务器:服务端 192.168.232.129
1.两个服务器先关闭防火墙 关闭深层防护
setenforce stop firewalld
systemctl stop firewalld
systemctl disable firewalld
2.进客户端 /etc/rsyslog.conf进行配置
把TCP 和UDP 两个注释取消掉,打开端口模块
再将配置信息写入
$template myFormat, "%timestamp% %hostname% %syslogseverity-text% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate myFormat
*.info;mail.none;authpriv.none;cron.none @@192.168.232.129:514
重启服务
[root@send ~]# systemctl restart rsyslog
查看端口信息
[root@send ~]# netstat -anutp | grep 514
客户端设置完毕
接下来设置服务端
1.进 /etc/rsyslog.conf 配置
还是TCP 和UDP 两个注释取消掉,打开端口模块
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y0zPaQXk-1638082066553)(C:\Users\zhuquanhao\Desktop\截图命令集合\linux\日志文件管理\6.png)]
$AllowedSender tcp, 192.168.232.0/24 #允许 192.168.232.0 网段内的主机以tcp协议来传输
$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" #定义模板,接受日志文件路径,区分了不同主机的日志
:fromhost-ip, !isequal, "127.0.0.1" ?Remote #过滤掉 server 本机的日志
2.创建/data/log/目录
mkdir /data/log/
3.重启服务
[root@recive log]# systemctl restart rsyslog
4.cd 到 /data/log/目录当中,ls看一下
5.在客户端发送一个日志文件 看服务端能不能同步日志信息
客户端:
[root@send ~]# logger "hello world"
服务端:
journalctl日志管理工具
日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。
Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)日志的配置文件是/etc/ systemd/journald.conf
查看最新的日志文件,从尾部开始查看
[root@send ~]# journalctl -r
查看内核日志
[root@send ~]# journalctl -k
查看系统本次启动日志
[root@send ~]# journalctl -b 0
查看上一次启动的日志
[root@send ~]# journalctl -b -1
显示尾部指定 20 行的日志,并动态更新
[root@send ~]# journalctl -n 20 -f
查看某个服务的日志(比如防火墙)
[root@send ~]# journalctl -u firewalld
查看指定进程的日志
[root@send ~]# journalctl _PID=1
查看指定用户的日志
[root@send ~]# journalctl _UID=0 --since today
查看报错日志
[root@send ~]# journalctl -xe