目录

日志的作用、分类、管理、轮转和级别

rsyslog服务

Journal守护进程

/var/log下相关的日志文件

日志服务器的建立


日志的作用、分类、管理、轮转和级别

日志的作用:

  • 用于记录系统、程序运行中发生的各种事件
  • 通过阅读日志,有助于诊断,解决系统故障

日志文件的分类:

  • 内核及系统日志:由系统服务 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
rsyslogd的配置文件 /etc/rsyslog.conf 中的一些规则
设备 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日志分析和管理的更多相关文章

  1. 《Unix/Linux日志分析与流量监控》书稿完成

    <Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...

  2. Linux 日志分析工具(logwatch)安装及使用

    Linux 日志分析工具(logwatch)安装及使用 日志是非常重要的系统文件,管理员每天的重要工作就是分析和查看服务器的日志,判断服务器的健康状态.但是日志管理又是一项非常枯燥的工作,如果需要管理 ...

  3. 有关linux日志分析的详细介绍

    linux的日志文件可以帮助我们了解系统所处的状态,比如查出哪些用户有登入,及其它安全相关的一些问题. linux下的日志分析. 以下内容,部分参考了:探讨 linux 日志分析 这篇文章. 1.了解 ...

  4. 【Linux】日志分析及管理

    日志的作用   用于记录系统.程序运行中发生的各种事件   eg: [root@localhost ~]# yum install -y httpd [root@localhost ~]# tail ...

  5. Linux日志分析的实战专题

      来自 日志也是用户应该注意的地方之一.不要低估日志文件对网络安全的重要作用,因为日志文件能够详细记录系统每天发生的各种各样的事件.用户可以通过日志文件 检查错误产生的原因,或者在受到攻击和黑客入侵 ...

  6. Linux日志分析ELK环境搭建

    场景:ELK作为一个日志收集和检索系统,感觉功能还是相当的强大的. ELK是啥, 其实是是三个组件的缩写, 分别是elasticsearch, logstash, kibana. ELK平台可以用于实 ...

  7. Linux 日志分析工具之awstats

    一.awstats 是什么 官方网站:AWStats is a free powerful and featureful tool that generates advanced web, strea ...

  8. Linux中的日志分析及管理

    日志文件对于诊断和解决系统中的问题很有帮助,因为在Linux系统中运行的程序通常会把系统消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会“有据可查”.此外,当主机遭受攻击时,日志文件还可以帮 ...

  9. Linux系统日志分析与管理(14)

    当你的 Linux 系统出现不明原因的问题时,你需要查阅一下系统日志才能够知道系统出了什么问题了,所以说了解系统日志是很重要的事情,系统日志可以记录系统在什么时间.哪个主机.哪个服务.出现了什么信息等 ...

随机推荐

  1. HTML5基础入门一天学完

    HTML 什么是HTML HTML:Hyper Text Markup Language(超文本编辑语言) HTML的发展史 HTML5优势 世界知名浏览器厂商对HTML5的支持 市场的需求 跨平台 ...

  2. 几大BSD 区别

    OpenBSD 侧重于安全,软件包较少,较陈旧,比如 KDE 才 3.5,为了安全舍弃了 sudo 和 linux 兼容层: FreeBSD 是开发者最多用户最多软件包最多的,有 ZFS 和 Linu ...

  3. Java 树结构实际应用 一(堆排序2秒排完800w数据)

    堆排序 1 堆排序基本介绍 1) 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复 杂度均为 O(nlogn),它也是不稳定排序. 2) 堆是具有以下性 ...

  4. P2766 最长不下降子序列问题 题解(网络流)

    题目链接 最长不下降子序列问题 解题思路 分成三小问解决. 第一小问,求\(LIS\),因为\(n<=500\),直接\(O(N^2)\)暴力求解即可. 第二三小问,建立模型用网络流求解. 对于 ...

  5. POJ_1458 Common Subsequence 【LCS】

    一.题目 Common Subsequence 二.分析 比较基础的求最长升序子序列. $DP[i][j]$表示的是字符串$S1[1...i]$与$S2[1...j]$的最长公共子序列长度. 状态转移 ...

  6. 【python+selenium的web自动化】- 针对上传操作的实现方案

    如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html 关于上传操作 ​ 上传有两 ...

  7. 基于autofac的属性注入

    基于autofac的属性注入 什么是属性注入 在了解属性注入之前,要先了解一下DI(Dependency Injection),即依赖注入.在ASP.NET Core里自带了一个IOC容器,而且程序支 ...

  8. Envoy 部署类型

    目录 Envoy 网络拓扑及请求流程 1. 术语 2. 网络拓扑 3. 配置 4. 更高层的架构 5. 请求流程 1. Listener TCP 接收 2. 侦听器过滤器链和网络过滤器链匹配 3.TL ...

  9. switch case语句,switch case用法详解

    switch 是"开关"的意思,它也是一种"选择"语句,但它的用法非常简单.switch 是多分支选择语句.说得通俗点,多分支就是多个 if. 从功能上说,sw ...

  10. springboot集成swagger实战(基础版)

    1. 前言说明 本文主要介绍springboot整合swagger的全过程,从开始的swagger到Knife4j的进阶之路:Knife4j是swagger-bootstarp-ui的升级版,包括一些 ...