Linux日志分析和管理
目录
日志的作用、分类、管理、轮转和级别
日志的作用:
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断,解决系统故障
日志文件的分类:
- 内核及系统日志:由系统服务 rsyslog 统一管理,日志格式相似
- 用户日志:记录系统用户登录及退出系统的相关信息
- 程序日志:由各种应用程序独立管理的日志文件,格式不统一
日志管理策略
日志也并不是完全可靠的,高级的黑客在入侵系统后,会删除相应的日志记录,因此需要做好日志的管理工作:
- 日志的备份和归档
- 延长日志的保存期限
- 控制日志的访问权限
- 集中管理日志。比如,将服务器的日志文件发送到统一到日志文件服务器,这样便于日志信息的统一收集、整理和分析,还可以杜绝日志信息的意外丢失、恶意修改和删除
日志的轮转和切割
随着时间的推移,日志文件肯定会越来越大,而且这个趋势是呈线性增长。所以,需要对之前的日志文件做一些处理。日志轮转和切割指的是实现对当前日志归档,开始新的日志,删除早期的日志。Linux中,日志轮转和切割这个服务是由 logrotate 提供的。logrotate这个程序的目录:/etc/cron.daily/logrotate 。logrotate 是作为 corn 的一个每日任务,周期性执行的。它具备自动轮转、压缩、搬迁 和 邮件通知到日志系统的多项功能。每一个日志文件都可以按照每天、每周、每月周期性处理,或是增长到多大而触发处理。
日志消息的级别
| level等级 | 状况 |
|---|---|
| 0 EMERG(紧急) | 会导致主机系统不可用的情况 |
| 1 ALERT (警告) | 必须马上采取措施解决的情况 |
| 2 CRIT (严重) | 比较严重的情况 |
| 3 ERR (错误) | 运行出现错误 |
| 4 WARNING (提醒) | 可能会影响系统功能的事件 |
| 5 NOTICE (注意) | 不会影响系统但值得注意 |
| 6 INFO (注意) | 一般信息 |
| 7 DEBUG(调试) | 程序或系统调试信息等 |
rsyslog服务
rsyslog服务是由 rsyslogd 程序提供的。rsyslogd 程序负责收集和管理与系统有关的日志
- 程序目录:/sbin/rsyslogd
- rsyslogd配置文件所在目录:/etc/rsyslog.conf
- rsyslogd相关文件:/etc/sysconfig/rsyslog
- 和日志轮转(切割)相关文件:/etc/logrotate.d/syslog
系统中的程序,在收集日志的时候,都是调用 syslog() 函数,这个函数的作用是发送日志消息给系统的 logger,然后由logger 根据 rsyslogd 程序的配置文件 /etc/rsyslog.conf 中的规则,将日志消息按照不同的格式写入不同的文件中。
syslog() 函数内部有不同的设备,不同的程序有可能对应相同的设备,也有可能对应不同的设备。通过 man 3 syslog 可查看syslog中的不同设备和不同预警级别。程序所对应的设备大部分不可修改,都已经编译好。但是有的程序的配置文件中允许修改设备。比如sshd程序,在其配置文件 /etc/ssh/sshd_config 中可修改设备。LOCAL0 ~ LOCAL6 是自定义设备。不建议修改程序所对应的默认设备。程序所对应的设备这个不是我们所关心的,是开发者已经配置好的。
rsyslogd 中有不同的规则,指定了不同的设备的不同预警级别对应的不同文件。logger 就是根据 rsyslogd 中的规则进行日志写入。rsyslogd 中的规则我们自己可以定义修改增加。所以如果我们关闭 rsyslogd 程序的话,logger就不知道该将日志文件写入哪里,所以就会产生错误。
| 程序 Program | 设备 Facility |
|---|---|
| /usr/sbin/sshd | LOG_AUTHPRIV |
| /usr/bin/su | LOG_AUTHPRIV |
| /usr/bin/login | LOG_AUTHPRIV |
| /usr/sbin/vsftpd | LOG_FTP |
| /usr/bin/at | LOG_CRON |
| /usr/sbin/crond | LOG_CRON |
| /usr/sbin/portfix | LOG_MAIL |
| 设备 Facility 和 级别 | 对应的文件 |
|---|---|
| *.info; mail.none; authpriv.none; cron.none (任何设备的这些级别) | /var/log/messages |
| authpriv.* (authpriv设备的所有级别) | /var/log/secure |
| mail.* (mail设备的所有级别) | -/var/log/maillog |
| cron.* (cron设备的所有级别) | /var/log/cron |
| *.emery (所有设备的emery级别) | :omusrmsg:* (打印到终端) |
| local0.* ~ local6.* | 自己可定义文件 |
但是像我们很多自己的应用,不是由 rsyslogd进程收集和管理日志,因为他们不调用 syslog()函数。比如apache、nginx、mysql、httpd 都有自己的日志进程负责收集和管理日志。
日志文件默认都是保存在 /var/log/ 目录下。
| 名称 | 路径 |
|---|---|
| 内核、公共消息日志、系统主日志文件 | /var/log/messages |
| 用户登录日志 | /var/log/secure |
| 计划任务日志 | /var/log/cron |
| 跟yum安装有关 | /var/log/yum.log |
| 系统引导日志 | /var/log/dmesg |
| 邮件系统日志,跟postfix有关 | /var/log/maillog |
| 当前登录的用户,二进制文件,可用 last 查看 | /var/log/wtmp |
| 最近登录的用户 , 二进制文件 ,可用 lastb 查看 | /var/log/btmp |
| 所有用户的登录情况,二进制文件,可用 lastlog 查看 | /var/log/lastlog |
这个是 /var/log/secure 里的登录日志 ,第一行说明root用户登录xie登录成功。第二三行说明xie用户想登录bob用户然后认证失败了,也就是密码错误。第四行说明xie用户退出登录了。
grep 'Fail' /var/log/secure | awk '{print $11}' | sort |uniq -c | sort -k1 -n -r | head -5 查看登录失败的那一行,然后打印出第11列(从后数), 然后排序,然后去除重复,然后按第一列排序 ,然后查看前五个
Journal守护进程
在Rhel7中,syslog 消息除了由 rsyslog 服务处理外,还新加了一个 journal 监听,日志文件在 /run/log/journal 目录中。
systemd-journald 守护进程提供了一个改进的日志管理服务。在使用其它工具时,日志往往被分散在整套系统当中,由不同的守护进程及进程负责处理,这意味着我们很难跨越多种应用程序对其内容进行解读。而 systemd 尝试提供一套集中化管理方案,从而统一打理全部内核及用户级进程的日志信息,这也就是我们journal。这套系统能够收集并管理日志内容,它从内核中收集消息:启动过程的早期阶段、标准输出和守护进程的错误。当它们启动和运行时,以及 syslog ,它将这些消息写入到结构化的事件日志。syslog消息也由 systemd-journald 转发到 rsyslog 服务,然后按类型(或设备)和优先级对消息进行排序,并将他们写入到 /var/log/ 日志目录中的持久文件中。
但是,我们的 /run/log/journal 目录下的日志信息并不能直接查看,该文件是二进制文件,需要借助命令查看

journal日志的查看
- journalctl 显示所有的日志信息
- journalctl -n 10 显示最近10条的日志信息
- journalctl -u nginx.service 查看nginx服务的日志自信息
- journalctl _PID=1234 查看PID进程为1234的日志信息
- journalctl _UID=0 查看UDI为0的用户的日志信息
- journalctl /usr/bin/bash 查看指定路径可执行文件的日志信息
- journalctl --since today 查看今天以来的日志的信息
/var/log下相关的日志文件

- /var/log/message:几乎所有的开机系统发生的错误都会在此记录;
- /var/log/secure:记录登录系统存取数据的文件,例如:ssh、pop3、telnet,ftp等都会记录在此.。
- /var/log/wtmp:记录ssh登录成功的记录,二进制文件
- /var/log/btmp:记录ssh登录失败的记录,二进制文件
- /var/log/lastlog 记录每个用户最后的登录信息;
- /var/log/boot.log:记录一些开机或者关机启动的一些服务显示的启动或者关闭的信息;
- /var/log/maillog:记录邮件的存取和往来;
- /var/log/cron:用来记录crontab定时任务的记录;
- /var/log/httpd:http服务的记录
- /var/log/audit:包含被 Linux audit daemon储存的信息
- /var/log/dmesg:内核日志;
- /var/log/cpus: CPU的处理信息;
- /var/log/anaconda.log:在安装Linux时,所有的安装信息记录
- /var/log/syslog: 事件记录监控程序日志;
- /var/log/auth.log: 用户认证日志;
- /var/log/daemon.log: 系统进程日志;
- /var/log/mail.err :邮件错误信息;
- /var/log/mail.info: 邮件信息;
- /var/log/mail.warn: 邮件警告信息;
- /var/log/daemon.log: 系统监控程序产生的信息;
- /var/log/kern: 内核产生的信息;
- /var/log/lpr : 行打印机假脱机系统产生的信息;
- /var/log/sa:包含每日由sysstat软件包收集的sar文件。
- /var/log/yum.log:使用yum安装的软件包的记录
日志服务器的建立
文章:建立日志服务器
Linux日志分析和管理的更多相关文章
- 《Unix/Linux日志分析与流量监控》书稿完成
<Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...
- Linux 日志分析工具(logwatch)安装及使用
Linux 日志分析工具(logwatch)安装及使用 日志是非常重要的系统文件,管理员每天的重要工作就是分析和查看服务器的日志,判断服务器的健康状态.但是日志管理又是一项非常枯燥的工作,如果需要管理 ...
- 有关linux日志分析的详细介绍
linux的日志文件可以帮助我们了解系统所处的状态,比如查出哪些用户有登入,及其它安全相关的一些问题. linux下的日志分析. 以下内容,部分参考了:探讨 linux 日志分析 这篇文章. 1.了解 ...
- 【Linux】日志分析及管理
日志的作用 用于记录系统.程序运行中发生的各种事件 eg: [root@localhost ~]# yum install -y httpd [root@localhost ~]# tail ...
- Linux日志分析的实战专题
来自 日志也是用户应该注意的地方之一.不要低估日志文件对网络安全的重要作用,因为日志文件能够详细记录系统每天发生的各种各样的事件.用户可以通过日志文件 检查错误产生的原因,或者在受到攻击和黑客入侵 ...
- Linux日志分析ELK环境搭建
场景:ELK作为一个日志收集和检索系统,感觉功能还是相当的强大的. ELK是啥, 其实是是三个组件的缩写, 分别是elasticsearch, logstash, kibana. ELK平台可以用于实 ...
- Linux 日志分析工具之awstats
一.awstats 是什么 官方网站:AWStats is a free powerful and featureful tool that generates advanced web, strea ...
- Linux中的日志分析及管理
日志文件对于诊断和解决系统中的问题很有帮助,因为在Linux系统中运行的程序通常会把系统消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会“有据可查”.此外,当主机遭受攻击时,日志文件还可以帮 ...
- Linux系统日志分析与管理(14)
当你的 Linux 系统出现不明原因的问题时,你需要查阅一下系统日志才能够知道系统出了什么问题了,所以说了解系统日志是很重要的事情,系统日志可以记录系统在什么时间.哪个主机.哪个服务.出现了什么信息等 ...
随机推荐
- 通过golang小案例,了解golang程序常见机制
目录 代码理解及纠错 1.defer和panic执行先后顺序 2.for循环元素副本问题 3.slice追加元素问题 4.返回值命名问题 5.用new初始化内置类型问题 6.切片append另外一个切 ...
- 记一次Drone无法触发构建的问题
问题 好巧不巧,当你晚上准备上线的时候,在下午临近下班的时候CI&CD工具出问题了,提交代码不能触发构建,不能上线了,Drone平台那边也下班了,正好CICD依赖的公司git仓库也出问题了(就 ...
- python flask框架详解
Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pi ...
- Linux速通 大纲
1.Linux操作系统安装及初始化配置(熟悉) 2.Linux操作系统目录组成结构及文件级增删改查操作(重点) 3.Linux操作系统用户.权限管理(重点) 4.开源软件及Linux下软件包的管理(重 ...
- 面试准备——计算机网络(https)
一.为什么要提出HTTPS? HTTP的缺点: 明文通信.不加密,可能被窃听. 无身份验证,可能遭遇伪装. 无法证明报文的完整性,可能被篡改. 二.HTTPS = HTTP+加密(防窃听)+认证(防伪 ...
- 漫漫Java路1—基础知识2—注释和命名规则
## 注释 1. 单行注释 ```java //这是一个注释 ``` 2. 多行注释 ```java /* 这是一个注释 */ ``` 3. 文档注释 ```java /** * * * */ ``` ...
- python-自定义一个序列
python的序列可以包含多个元素,开发者只要实现符合序列要求的特殊方法,就可以实现自己的序列 序列最重要的特征就是可以包含多个元素,序列有关的特使方法: __len__(self):该方法的返回值决 ...
- 【wp】2021V&NCTF
前几天打完的V&NCTF公开赛,做题的时候没记过程,这是复现wp. 最后排名Top 18,三道RE+两道杂项(wp没啥可放的hhh)+一道web,感觉re题目还是挺好的,难度适中点赞,尤其pc ...
- 【博弈论】组合游戏及SG函数浅析
目录 预备知识 普通的Nim游戏 SG函数 预备知识 公平组合游戏(ICG) 若一个游戏满足: 由两名玩家交替行动: 游戏中任意时刻,合法操作集合只取决于这个局面本身: 若轮到某位选手时,若该选手无合 ...
- 攻防世界 reverse 新手练习区
1.re1 DUTCTF IDA shift+F12 查看字符串 DUTCTF{We1c0met0DUTCTF} 2.game ZSCTF zsctf{T9is_tOpic_1s_v5ry_int7r ...