|NO.Z.00019|——————————|ManageMent|——|Linux&日志管理.V02|
一、日志简介
### --- 日志相关服务
### --- 在 CentOS 6.x 中日志服务已经由 rsyslogd 取代了原先的 syslogd 服务。
~~~ Redhat 认为 syslogd 已经不能满足在工作中的需求,
~~~ rsyslogd 相比 syslogd 具有一些新的特点:
### --- 基于 TCP 网络协议传输日志信息;
~~~ 更安全的网络传输方式;
~~~ 有日志消息的及时分析框架;
~~~ 后台数据库;
~~~ 配置文件中可以写简单的逻辑判断;
~~~ 与 syslog 配置文件相兼容。
~~~ 注:备份时间:系统日志备份半年左右。
二、系统中常见的日志文件
日志文件 | 说 明 |
/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/lastlog |
记录系统中所有用户最后一次的登录时间的日志。 这个文件也是二进制文件,不能直接 vi,而要使用 lastlog 命令查看。 |
/var/log/mailog | 记录邮件信息。 |
/var/log/message |
记录系统重要信息的日志。这个日志文件中会记录 Linux 系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件。 |
/var/log/secure |
记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录。比如说系统的登录,ssh 的登录,su 切换用户,sudo 授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。 |
/var/log/wtmp |
永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接 vi,而需要使用 last 命令来查看。 |
/var/run/utmp |
记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用 w,who,users 等命令来查询。 |
### --- 系统中常见的日志文件
~~~ 除了系统默认的日志之外,
~~~ 采用 RPM 方式安装的系统服务也会默认把日志记录在/var/log/目录中
~~~ #(源码包安装的服务日志是在源码包指定目录中)。
~~~ #不过这些日志不是由 rsyslogd 服务来记录和管理的,
~~~ #而是各个服务使用自己的日志管理文档来记录自身日志。
~~~ #重要系统日志,一般系统查看日志,查看该日志
[root@server11 ~]# cat /var/log/messages
日志文件 | 说明 |
/var/log/httpd | RPM包安装的apache服务的默认日志目录 |
/var/log/mail | RPM包安装的邮件服务的额外日志目录 |
/var/log/samba/ | RPM包安装的samba服务的日志目录 |
/var/log/ssd/ | 守护进程安全服务目录 |
一、日志服务 rsyslogd
### --- 日志文件格式
~~~ 只要是由日志服务 rsyslogd 记录的日志文件,他们的格式是一样的。基本日志格式包含以下四列:
~~~ 事件产生的时间;发生事件的服务器的主机名;
~~~ 产生事件的服务名或程序名;
~~~ 事件的具体信息。
### --- rsyslogd 服务的配置文件
### --- /etc/rsyslog.conf 配置文件格式
~~~ 服务名称[连接符号]日志等级
~~~ 认证相关服务.所有日志等级
~~~ 日志记录位置
~~~ 记录在/var/log/secure 日志中
[root@server11 ~]# vim /etc/rsyslog.conf
authpriv.* /var/log/secure
二、服务名称
### --- 服务名称
~~~ 那么我们首先需要确定 rsyslogd 服务可以识别哪些服务的日志,
~~~ 也可以理解为以下这些服务委托了 rsyslogd 服务来代为管理日志。
~~~ 这些服务如表 16-3 所示:
说 明 | |
auth(LOG_AUTH) | 安全和认证相关消息(不推荐使用 authpriv 替代) |
authpriv(LOG_AUTHPRIV) | 安全和认证相关消息(私有的) |
cron(LOG_CRON) | 系统定时任务 cront 和 at 产生的日志 |
daemon(LOG_DAEMON) | 和各个守护进程相关的日志 |
ftp(LOG_FTP) | ftp守护进程产生的日志 |
kern(LOG_KERN) | 内核产生的日志(不是用户进程产生的) |
local0-local7(LOG_LOCAL0-7) | 为本地使用预留的服务 |
lpr(LOG_LPR) | 打印产生的日志 |
mail(LOG_MAIL) | 邮件收发信息 |
news(LOG_NEWS) | 与新闻服务器相关的日志 |
syslog(LOG_SYSLOG) | 有syslogd服务产生的日志信息(虽然服务名称已经改为rsyslogd,但是很多配置都还是沿用了syslogd,这里并没有修改服务名 |
user(LOG_USER) | 用户等级类别的日志信息 |
uucp(LOG_UUCP) | uucp子系统的日志信息,uucp是早期linux系统进行数据传递的协议,后来也常用在新闻组服务中。 |
### --- 连接符号
### --- 日志服务连接日志等级的格式是:
~~~ 日志服务[连接符号]日志等级
~~~ 在这里连接符号可以识别为:
~~~ 日志记录位置
~~~ “.”代表只要比后面的等级高的(包含该等级)日志都记录下来。比如:“cron.info”代表 cron 服务产生的日志,只要日志等级大于等于 info 级别,就记录
~~~ “.=”代表只记录所需等级的日志,其他等级的都不记录。比如:“*.=emerg”代表任何日志服务产生的日志,只要等级是 emerg 等级就记录。这种用法及少见,了解就好
~~~ “.!”代表不等于,也就是除了该等级的日志外,其他等级的日志都记录。
四、日志等级:表 16-4 日志等级
说明 | |
debug(LOG_DEBUG) | 一般的调试信息说明 |
info(LOG_INFO) | 基本的通知信息 |
notice(LOG_NOTICE) | 普通信息,但是有一定的重要性 |
warning(LOG_WARNING) | 警告信息,但是还不回影响到服务或系统的运行了 |
err(LOG_ERR) | 错误信息,一般达到err等级的信息以及可以影响到服务或系统的运行了 |
crit(LOG_CRIT) | 临界状况信息,比err等级还要验证 |
alert(LOG_ALERT) | 警告状态信息,比crit还要验证,必须立即采取行动 |
emerg(LOG_EMERG) | 疼痛等级信息,系统已经无法使用了 |
* | 代表所有日志,比如:“authpriv.*”代表,authpriv认证信息服务产生的日志,所有的日志等级都记录 |
### --- 日志等级这里还可以识别“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 配置文件的内容
### --- /etc/rsyslog.conf 配置文件的内容
[root@localhost ~]# vi /etc/rsyslog.conf
~~~ 查看配置文件的内容
#rsyslog v5 configuration file
#For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
#If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
~~~ 加载模块
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
~~~ 加载 imuxsock 模块,为本地系统登录提供支持
$ModLoad imklog
~~~ provides kernel logging support (previously done by rklogd)
~~~ 加载 imklog 模块,为内核登录提供支持
~~~ $ModLoad immark # provides --MARK-- message capability
~~~ 加载immark 模块,提供标记信息的能力
~~~ Provides UDP syslog reception
~~~ $ModLoad imudp
~~~ $UDPServerRun 514
~~~ 加载 UPD 模块,允许使用 UDP 的 514 端口接收采用 UDP 协议转发的日志
~~~ Provides TCP syslog reception
~~~ $ModLoad imtcp
~~~ $InputTCPServerRun 514
~~~ 加载 TCP 模块,允许使用 TCP 的 514 端口接收采用 TCP 协议转发的日志
#### GLOBAL DIRECTIVES ####
~~~ 定义全局设置
~~~ Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
~~~ 定义日志的时间使用默认的时间戳格式
~~~ File syncing capability is disabled by default. This feature is usually not required,
~~~ not useful and an extreme performance hit
~~~ $ActionFileEnableSync on
~~~ 文件同步功能。默认没有开启,是注释的。
~~~ Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d#/*.conf
~~~ 包含/etc/rsyslog.d/目录中所有的“.conf”子配置文件。也就是说这个目录中的所有
~~~ 子配置文件也同时生效。
#### 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;mail.none;authpriv.none;cron.none /var/log/messages
~~~ 所有服务.info 以上级别的日志保存在/var/log/messages 日志中。
~~~ mail,authpriv,cron 的日志不记录在/var/log/messages 日志文件中,因为它们都有自己的日志文件。
~~~ 所以/var/log/messages 日志是最重要的系统日志文件,需要经常查看!
~~~ The authpriv file has restricted access.
authpriv.* /var/log/secure
~~~ 用户认证服务所有级别的日志保存在/var/log/secure 日志中
# Log all the mail messages in one place.
mail.* -/var/log/maillog
~~~ mail 服务的所有级别的日志保存在/var/log/maillog 日志中。
~~~ “-”号的含义是日志先在内存之中保存,当日志够多之后,再向文件中保存。
~~~ Log cron stuff
cron.* /var/log/cron
~~~ 计划任务的所有日志保存在/var/log/cron 日志中
~~~ Everybody gets emergency messages
*.emerg *
~~~ 所有日志服务的疼痛等级日志对所有在线用户广播。
~~~ Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
~~~ ucp 和 news 日志服务的 crit 以上的日志保存在/var/log/sppoler 日志文件中。
~~~ Save boot messages also to boot.log
local7.* /var/log/boot.log
~~~ loacl7 日志服务的所有日志写入/var/log/boot.log 日志中。
~~~ 会把开机时的检测信息在显示到屏幕的同时,写入/var/log/boot.log 日志中
# ### begin forwarding rule ###
~~~ 定义转发规则
The statement between the begin ... end define a SINGLE forwarding
rule. They belong together, do NOT split them. If you create multiple
forwarding rules, duplicate the whole block!
Remote Logging (we use TCP for reliable delivery)
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.
$WorkDirectory /var/lib/rsyslog # where to place spool files
$ActionQueueFileName fwdRule1 # unique name prefix for spool files
$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
$ActionQueueType LinkedList # run asynchronously
$ActionResumeRetryCount -1
infinite retries if host is down
remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
*.* @@remote-host:514
### end of the forwarding rule ##
六、定义自己的日志
### --- 定义自己的日志
[root@server11 ~]# vim /etc/rsyslog.conf
~~~ 写入一下一句话
*.crit /var/log/alert.log
~~~ 把所有服务的“临界点”以上的错误都保存在/var/log/alert.log 日志中
~~~ 重启 rsyslog 服务
[root@server11 ~]# systemctl restart rsyslog.service
~~~ 关闭系统日志记录器: [确定]
~~~ 启动系统日志记录器: [确定]
[root@server11 ~]# ll /var/log/alert.log
-rw------- 1 root root 0 Feb 4 13:40 /var/log/alert.log
~~~ alert.log 日志就生成了
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv006-system
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」