15 Linux系统日志管理

  • 系统日志详细地记录了在什么时间,哪台服务器、哪个程序或服务出现了什么情况。不管是哪种操作系统,都详细地记录了重要程序和服务的日志,只是我们很少养成查看日志的习惯。

  • 日志是系统信息最详细、最准确的记录者,如果大家能够善用日志,那么当系统出现问题时,我们就能在第一时间发现问题,也能够从日志中找到解决问题的方法。

15.1 rsyslogd服务及启动方法

  • 从 CentOS 6.x 开始,日志服务已经由 rsyslogd 取代了原先的 syslogd。Red Hat 公司认为 syslogd 已经不能满足工作中的需求,rsyslogd 相比 syslogd 具有一些新的特点:

    • 基于TCP网络协议传输日志信息。
    • 更安全的网络传输方式。
    • 有日志信息的即时分析框架。
    • 后台数据库。
    • 在配置文件中可以写简单的逻辑判断。
    • 与syslog配置文件相兼容。
  • rsyslogd 日志服务更加先进,功能更多。但是,不论是该服务的使用,还是日志文件的格式,其实都是和 syslogd 服务相兼容的,所以学习起来基本和 syslogd 服务一致。查看rsyslogd 服务是否启动:

[root@CncLucZK ~]# ps aux |grep 'rsyslogd'
root        1383  0.0  3.4 723952 64728 ?        Ssl  Oct19   0:42 /usr/sbin/rsyslogd -n
root     2304589  0.0  0.0  12112  1044 pts/0    S+   17:31   0:00 grep --color=auto rsyslogd
  • 系统中的绝大多数日志文件是由 rsyslogd 服务来统一管理的,只要各个进程将信息给予这个服务,它就会自动地把日志按照特定的格式记录到不同的日志文件中。也就是说,采用 rsyslogd 服务管理的日志文件,它们的格式应该是统一的。在 Linux 系统中有一部分日志不是由 rsyslogd 服务来管理的,比如 apache 服务,它的日志是由 Apache 软件自己产生并记录的,并没有调用 rsyslogd 服务。但是为了便于读取,apache 日志文件的格式和系统默认日志的格式是一致的。

15.2 日志文件(常见)及其功能

  • 日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。这些信息有些非常敏感,所以在 Linux 中这些日志文件只有 root 用户可以读取。目录/var/是用来保存系统动态数据的,/var/log/ 目录就是系统日志文件的保存位置。常见的系统中的重要日志文件。
日志文件 说 明
/var/log/cron 记录与系统定时任务相关的曰志
/var/log/cups/ 记录打印信息的曰志
/var/log/dmesg 记录了系统在开机时内核自检的信息。也可以使用dmesg命令直接查看内核自检信息
/var/log/btmp 记录错误登陆的日志。这个文件是二进制文件,不能直接用Vi查看,而要使用lastb命令查看。命令如下: [root@localhost log]#lastb root tty1 Tue Jun 4 22:38 - 22:38 (00:00) #有人在6月4 日 22:38便用root用户在本地终端 1 登陆错误
/var/log/lasllog 记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看
/var/Iog/mailog 记录邮件信息的曰志
/var/log/messages 它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已经用户自定义安装软件的日志,也会在这里列出。
/var/log/secure 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp 永久记录所有用户的登陆、注销信息,同时记录系统的后动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看
/var/tun/ulmp 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看
  • 除系统默认的日志之外,采用 RPM 包方式安装的系统服务也会默认把日志记录在 /var/log/ 目录中(源码包安装的服务日志存放在源码包指定的目录中)。不过这些日志不是由 rsyslogd 服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身的日志。以下介绍的日志目录在你的 Linux 上不一定存在,只有安装了相应的服务,日志才会出现。服务日志:
日志文件 说明
/var/log/httpd/ RPM包安装的apache取务的默认日志目录
/var/log/mail/ RPM包安装的邮件服务的额外日志因录
/var/log/samba/ RPM包安装的Samba服务的日志目录
/var/log/sssd/ 守护进程安全服务目录

15.3 日志文件格式分析

  • 只要是由日志服务 rsyslogd 记录的日志文件,它们的格式就都是一样的。所以我们只要了解了日志文件的格式,就可以看懂日志文件。
  • 日志文件的格式包含以下 4 列:
    • 事件产生的时间。
    • 产生事件的服务器的主机名。
    • 产生事件的服务名或程序名。
    • 事件的具体信息。
  • 查看一下 /var/log/secure 日志,这个日志中主要记录的是用户验证和授权方面的信息,
[root@CncLucZK httpd]# head -5 /var/log/secure
Oct  6 21:21:59 CncLucZK sshd[1391]: Received signal 15; terminating.
Oct  6 21:21:59 CncLucZK sshd[2174893]: pam_unix(sshd:session): session closed for user root
#时间 本地主机 sshd服务中pam_unix模块产生消息:关闭用户root的会话(UID为0)
Oct  6 21:21:59 CncLucZK systemd[2174899]: pam_unix(systemd-user:session): session closed for user root
Oct  6 21:23:04 CncLucZK polkitd[775]: Loading rules from directory /etc/polkit-1/rules.d
Oct  6 21:23:04 CncLucZK polkitd[775]: Loading rules from directory /usr/share/polkit-1/rules.d
  • 分析日志既是重要的系统维护工作,也是一项非常枯燥和烦琐的工作。如果我们的服务器出现了一些问题,比如系统不正常重启或关机、用户非正常登录、服务无法正常使用等,则都应该先查询日志。服务器不是很正常就应该查看日志,甚至在服务器没有什么问题时也要养成定时查看系统日志的习惯。

15.4 rsyslogd配置文件格式及其内容

  • rsyslogd 服务是依赖其配置文件 /etc/rsyslog.conf 来确定哪个服务的什么等级的日志信息会被记录在哪个位置的。也就是说,日志服务的配置文件中主要定义了服务的名称、日志等级和日志记录位置。

  • /etc/rsyslog.conf配置文件的格式:

authpriv.* /var/log/secure
#服务名称[连接符号]日志等级 日志记录位置
#认证相关服务.所有日志等级 记录在/var/log/secure日志中
  • 服务名称:确定 rsyslogd 服务可以识别哪些服务的日志,也可以理解为以下这些服务委托 rsyslogd 服务来代为管理日志。
服务名称 说 明
auth(LOG AUTH) 安全和认证相关消息 (不推荐使用authpriv替代)
authpriv(LOG_AUTHPRIV) 安全和认证相关消息(私有的)
cron (LOG_CRON) 系统定时任务cront和at产生的日志
daemon (LOG_DAEMON) 与各个守护进程相关的曰志
ftp (LOG_FTP) ftp守护进程产生的曰志
kern(LOG_KERN) 内核产生的曰志(不是用户进程产生的)
Iocal0-local7 (LOG_LOCAL0-7) 为本地使用预留的服务
lpr (LOG_LPR) 打印产生的日志
mail (LOG_MAIL) 邮件收发信息
news (LOG_NEWS) 与新闻服务器相关的日志
syslog (LOG_SYSLOG) 存syslogd服务产生的曰志信息(虽然服务名称己经改为reyslogd,但是很多配罝依然沿用了 syslogd服务的,所以这里并没有修改服务名称)
user (LOG_USER) 用户等级类别的日志信息
uucp (LOG_UUCP> uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来 也常用在新闻组服务中
  • 这些日志服务名称是rsyslogd服务自己定义的,并不是实际的Linux的服务。当有服务需要由rsyslogd服务来帮助管理日志时,只需要调用这些服务名称就可以实现日志的委托管理。这些日志服务名称大家可以使用命令“man 3 syslog”来查看。虽然我们的日志管理服务已经更新到rsyslogd,但是很多配置依然沿用了syslogd服务,在帮助文档中仍然查看syslog服务的帮助信息。

  • 连接符号:日志服务连接日志等级的格式如下:

日志服务[连接符号]日志等级 日志记录位置
  • 在这里,连接符号可以被识别为以下三种。

    1. “.”代表只要比后面的等级高的(包含该等级)日志都记录。比如,“cron.info”代表cron服务产生的日志,只要日志等级大于等于info级别,就记录。
    2. “.=”代表只记录所需等级的日志,其他等级的日志都不记录。比如,“*.=emerg”代表系统日志服务产生的日志,只要等级是emerg等级,就记录。这种用法极少见,了解就好。
    3. “.!”代表不等于,也就是除该等级的日志外,其他等级的日志都记录。
  • 日志等级:每个日志的重要性都是有差别的,比如,有些日志只是系统的一个日常提醒,看不看根本不会对系统的运行产生影响;但是有些日志就是系统和服务的警告甚至报错信息,这些日志如果不处理,就会威胁系统的稳定或安全。如果把这些日志全部写入一个文件,那么很有可能因为管理员的大意而忽略重要信息。

  • 邮件的等级信息也可以使用“man 3 syslog”命令来查看。日志等级从低到高排列。

等级名称 说 明
debug (LOG_DEBUG) 一般的调试信息说明
info (LOG_INFO) 基本的通知信息
nolice (LOG_NOTICE) 普通信息,但是有一定的重要性
warning(LOG_WARNING) 警吿信息,但是还不会影响到服务或系统的运行
err(LOG_ERR) 错误信息, 一般达到err等级的信息已经可以影响到服务成系统的运行了
crit (LOG_CRIT) 临界状况信思,比err等级还要严®
alert (LOG_ALERT) 状态信息,比crit等级还要严重,必须立即采取行动
emerg (LOG_EMERG) 系统等级信息,系统已经无法使用了
* 代表所有日志等级。比如,“authpriv.*”代表amhpriv认证信息服务产生的日志,所有的日志等级都记录
  • 日志等级还可以被识别为“none”。如果日志等级是none,就说明忽略这个日志服务,该服务的所有日志都不再记录。

  • 日志记录位置就是当前日志输出到哪个日志文件中保存,当然也可以把日志输出到打印机打印,或者输出到远程日志服务器上(当然,远程日志服务器要允许接收才行)。日志的记录位置也是固定的:

    • 日志文件的绝对路径。这是最常见的日志保存方法,如“/var/log/secure”就是用来保存系统验证和授权信息日志的。
    • 系统设备文件。如“/dev/lp0”代表第一台打印机,如果日志保存位置是打印机设备,当有日志时就会在打印机上打印。
    • 转发给远程主机。因为可以选择使用 TCP 和 UDP 协议传输日志信息,所以有两种发送格式:如果使用“@192.168.0.210:514”,就会把日志内容使用 UDP 协议发送到192.168.0.210 的 UDP 514 端口上;如果使用“@@192.168.0.210:514”,就会把日志内容使用 TCP 协议发送到 192.168.0.210 的 TCP 514 端口上,其中 514 是日志服务默认端口。当然,只要 192.168.0.210 同意接收此日志,就可以把日志内容保存在日志服务器上。
    • 用户名。如果是“root”,就会把日志发送给 root 用户,当然 root 要在线,否则就收不到日志信息了。发送日志给用户时,可以使用“*”代表发送给所有在线用户,如“mail.**”就会把 mail 服务产生的所有级别的日志发送给所有在线用户。如果需要把日志发送给多个在线用户,则用户名之间用“,”分隔。
    • 忽略或丢弃日志。如果接收日志的对象是“~”,则代表这个日志不会被记录,而被直接丢弃。如“local3.* ~”代表忽略 local3 服务类型所有的日志都不记录。
  • 知道了/etc/rsyslog.conf 配置文件中日志的格式,接下来就看看这个配置文件的具体内容。

[root@CncLucZK httpd]# cat /etc/rsyslog.conf                    #查看配置文件的内容
# rsyslog configuration file# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#加载模块
#### MODULES ####
#加载imixsock模块,为本地系统登录提供支持
module(load="imuxsock"     # provides support for local system logging (e.g. via logger command)SysSock.Use="off") # Turn off message reception via local log socket; # local messages are retrieved through imjournal now.
#加载imjournal模块,提供对系统日志的访问
module(load="imjournal"      # provides access to the systemd journalStateFile="imjournal.state") # File to store the position in the journal
#加载imklog模块,为内核登录提供支持
#module(load="imklog") # reads kernel messages (the same are read from journald)
#加载immark模块,提供标记信息的能力
#module(load"immark") # provides --MARK-- message capability#加载UPD模块,允许使用UDP的514端口接收采用UDP协议转发的日志
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
#module(load="imudp") # needs to be done just once
#input(type="imudp" port="514")#加载TCP摸块,允许使用TCP的514编口接收采用TCP协议转发的日志
# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
#module(load="imtcp") # needs to be done just once
#input(type="imtcp" port="514")#定义全局设置
#### GLOBAL DIRECTIVES #####$ActionFileEnableSync on
#文件同步功能。默认没有开启,是注释的# Where to place auxiliary files
global(workDirectory="/var/lib/rsyslog")# Use default timestamp format
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")#包含/etc/rsyslog.d/*目录中所有的".conf"子配置文件。也就是说,这个目录中的所有子配置文件也同时生效
# Include all config files in /etc/rsyslog.d/
include(file="/etc/rsyslog.d/*.conf" mode="optional")#日志文件保存规则
#### RULES ##### Log all kernel messages to the console.
# Logging much else clutters up the screen.#kern服务.所有日志级别 保存在/dev/console
#kern.*                                                 /dev/console# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!#所有服务.info以上级到的日志保存在/var/log/messages日志文件中
#mail, authpriv;cron的日志不记录在/var/log/messages曰志文件中,因为它们部有自己的日志文件
#所以/var/log/messages日志是最重要的系统日志文件,需要经常查看
*.info;mail.none;authpriv.none;cron.none                /var/log/messages#用户认证服务所有级别的日志保存在/vai/1og/secure日志文件中
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure#mail服务的所有级别的日志保存在/var/log/maillog 日志文件中
#"-"的含义是日志先在内存中保存.当曰志足够多之后.再向文件中保存
# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog#计划任务的所有日志保存在/var/log/cron日志文件中
# Log cron stuff
cron.*                                                  /var/log/cron#每个人都会收到紧急消息
# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*#uucp和news日志服务的crit以上级别的日志保存在/var/log/sppoler日志文件中
# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler#loacl7 日志服务的所有日志写入/var/log/boot.log 日志文件中 #会把开机时的检测信息在显示到屏幕的同时写入/var/log/boot.log 日志文件中
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log#定义转发规到
# ### sample forwarding rule ###
#action(type="omfwd"
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#queue.filename="fwdRule1"       # unique name prefix for spool files
#queue.maxdiskspace="1g"         # 1gb space limit (use as much as possible)
#queue.saveonshutdown="on"       # save messages to disk on shutdown
#queue.type="LinkedList"         # run asynchronously
#action.resumeRetryCount="-1"    # infinite retries if host is down
# Remote Logging (we use TCP for reliable delivery)
# remote_host is: name/ip, e.g. 192.168.0.1, port optional e.g. 10514
#Target="remote_host" Port="XXX" Protocol="tcp")
  • 系统已经非常完善地定义了这个配置文件的内容,系统中重要的日志也已经记录得非常完备。如果是外来的服务,如 apache、Samba 等服务,那么这些服务的配置文件中也详细定义了日志的记录格式和记录方法。所以,日志的配置文件基本上不需要我们修改,我们要做的仅仅是查看和分析系统记录好的日志而已。

参考文献:
rsyslogd配置文件格式及其内容详解

下一篇:Linux学习-67-日志服务器设置和日志分析工具(logwatch)安装及使用

Linux学习-66-系统日志管理相关推荐

  1. Linux学习-47-Linux系统进程管理和启动方式

    12 Linux系统管理(进程管理.工作管理和系统定时任务) 系统管理只是一个统称,软件管理.文件系统管理.启动管理和服务管理都可以归入系统管理当中. 主要了解进程管理.工作管理和系统定时任务.同时解 ...

  2. Linux学习之用户管理

    Linux的用户和用户组管理     Linux是个多用户多任务的分时操作系统,所有一个要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面能帮助系统管 ...

  3. linux 学习 14 日志管理

    第十四讲 日志管理 14.1 日志管理-简介 1.日志服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论 ...

  4. Linux学习之用户管理和组管理

    一.Linux系统上用户和用户组类别 用户类别 1.管理员 uid=0 2.普通用户 id:1~65535 2.1.系统用户 id:1~499,一般不允许登陆系统 2.2.一般用户 id:500~60 ...

  5. Linux学习笔记 -- 日志管理

    目录 日志管理 rsyslogd 自定义日志服务 日志轮替 logrotate 将个人日志加入日志轮替 日志轮替机制 -- 定时任务crond 查看内存日志 -- journalctl 传送门 日志管 ...

  6. 【Linux学习笔记】管理Linux操作系统:软件安装

    目录 一.RPM安装方法 1.查看rpm的版本与用法​ 2.rpm命令用法 3.安装vsftpd软件 二.yum安装 1.建立yum源本地仓库(注意:红帽Linux8是不行的) 2.查看所有库​ 3. ...

  7. Linux学习笔记 --组管理和权限管理

    目录 组管理 权限管理 权限管理应用实例 传送门 组管理 Linux 中 每个用户必须属于一个组,不能独立于组外 Linux 中 每个文件有所有者.所在组.其它组的概念 所有者(可变): 一般为文件的 ...

  8. Linux学习笔记——磁盘管理

    废话不多说,直奔主题,磁盘常见的操作有创建.删除.查看磁盘分区,对磁盘进行软raid,创建磁盘阵列以及可以对磁盘重新组织,组建逻辑卷组以利于空间扩展.最后将创建的分区或者逻辑卷格式化后挂载使用.下边对 ...

  9. Linux学习:磁盘管理——磁盘分区

    磁盘分区: 1.新建磁盘 点击编辑虚拟机(注意:需要在关机状态下)--添加硬盘--可以一直点击下一步(注意:磁盘大小可以选择小于20G) 2.管理磁盘 2.1添加磁盘:见上述方法. 2.2管理磁盘三部 ...

  10. 【Linux学习笔记】Linux服务器:配置与管理samba服务器

    Linux系列文章目录 一.[linux学习笔记]红帽Linux 7.8系统在虚拟机上的安装 二.[Linux学习笔记]Linux系统的基本操作 三.[Linux学习笔记]管理Linux操作系统:用户 ...

最新文章

  1. C#是否该支持“try/catch/else”语法
  2. ios html清除缓存图片,iOS,如何清理缓存的图片
  3. 免费的微软OneCare防病毒软件
  4. 轻松获取LAMP环境的配置参数
  5. c c和java最大的区别是什么,“一般”和“一般”之间的区别是什么,类型在C ++和Java?...
  6. Celery异步调度框架(二)与Django结合使用
  7. 【雷达通信】基于matlab SVM识别雷达数据【含Matlab源码 305期】
  8. 天猫魔盒android开发者模式,【当贝市场】天猫魔盒M16S开启远程调试模式教程
  9. Lammps:Python上Ovito模块配置的问题与解决
  10. 萤石云视频监控电脑版 v2.6.11.0官方版
  11. :style动态设置背景图片
  12. noseunittestpytest
  13. checkpoint NGFW VM安装
  14. 什么是VOIP和SIP?
  15. 达梦8之管理工具超实用小技巧
  16. Wamp PHP5.5.12安装Redis扩展--Star.Hou
  17. wemall单页化与wemall微分销
  18. 人机混合智能的五个关键点
  19. OPPO A59m解账户锁刷机包 线刷救砖教程
  20. 通过矩阵乘法性能优化学习CUDA

热门文章

  1. 【HTML+CSS】网站TDK三大标签SEO优化
  2. 12.8 Daily Scrum
  3. ssm框架中利用pagehelper分页,完成模糊查询与select条件查询
  4. 中小型制造业该如何挑选ERP,4个方向助你找到合适的ERP系统
  5. 张一鸣:我这7年来的人生感悟
  6. remote desktop mac(微软远程连接工具)
  7. 计算机bootmgr丢失,bootmgr丢失无法开机
  8. [转] 玩智能手机必须知道的秘密
  9. segy地震数据的读取python_Python-segy格式地震资料segyio读写包说明(二),pythonsegy,数据,学习,笔记...
  10. 数据及数据管理基本概念