Linux日志管理
一、何为日志
1. 在程序执行时,可以通过标准输出以及错误输出,让我们知道程序的执行情况,而系统不可能将所有程序的输出信息一起显示,要知道后台执行的程序非常之多,如果一起显示,那我们不用操作了,整天只看输出结果就够忙了!
2. 这时就需要日志系统了,有了日志之后,系统可以讲所有程序的输出结果,分类到日志中,通过查看日志,我们就可以知道系统的运行情况。
3.ping 192.168.18.254 >> /tmp/danny这么简单的一条命令,其实就是一个日志,将ping的结果输出到danny中,我们可以通过cat /tmp/danny来了解ping命令的运行情况。
二、系统日志服务组件
1、klogd
全名为内核日志服务Kernel Log Daemon,专门用来采集Linux内核产生的信息。
2、syslogd
全名为系统日志服务System Log Daemon,用来采集用户的应用程序或者服务产生的信息。
3、logger
这是一个日志服务的客户端工具,可以使用这个工具,直接在shell中传递信息给系统日志服务,通常用为测试系统日志服务。
三、日志服务安装
rpm -qa | grep rsyslog
#查询是否已经安装
yum -y install rsyslog
#安装系统日志服务
service rsyslog stop
#关闭日志服务
service rsyslog start
#开启日志服务
chkconfig rsyslog on
#设为开机启动
chkconfig rsyslog off
#设置为开机不启动
五、日志服务配置
配置文件的路径/etc/rsyslog.conf
格式:
FACILITY.PRIORITY ACTION
信息来源.优先级别 处理方式
信息来源列表
例: *.* @192.168.1.1
项目 |
说明 |
authpriv |
与安全验证有关的信息。 |
cron |
包含at或cron定时执行系统产生的信息。 |
daemon |
一般服务器的信息。 |
kern |
来自内核信息。 |
lpr |
打印系统传来信息。 |
|
电子邮件系统信息。 |
news |
来自NetNews系统的信息。 |
syslog |
syslog服务器本身信息 |
user |
一般用户等级信息。 |
uucp |
UUCP子系统信息。 |
localN |
保留。 |
安全级别列表
程度 |
项目 |
说明 |
轻微 |
debug |
只是排错信息,仅对程序开发人员有用,对系统管理者的你是没有太大意义的。 |
|
info |
通常这是正常信息,你也可以忽略info的信息。 |
|
notice |
这是稍微要注意的信息。 |
|
warn |
可能有问题的警告信息。 |
|
err |
这是错误信息。 |
|
crit |
这是危急错误。 |
|
alert |
这是需特别留意的警报信息。 |
严重 |
emerg |
这是紧急状况,如果再不处理该服务或系统可能会宕机 |
PRIORITY的计算方式:(priority)
- PRIORITY:代表等于,或高于PRIORITY。例如,err相当等于err + crit +alert + emerg。
- =PRIORITY:恰等于PRIORITY。例如,=err就是err本身。
- !PRIORITY:代表除了PRIORITY之外的。例如,!err就为debug + info +notice + warn + crit + alert + emerg。
除此之外,FACILITY与PRIORITY可以使用星号代表所有的,因此*.* 就表示所有的FACILITY的所有PRIORITY信息。(facility)
而ACTION字段则是用来定义如何处理接收到的信息。可以指定:
- /PATH/FILENAME:将信息储存至/PATH/FILENAME文件中。注意,如要系统日志服务把信息储存到文件,这个文件必须要写绝对路径。
- USERNAME:将信息送给已登录用户。
- @HOSTNAME:代表将信息转到HOSTNAME的系统日志服务器。
- *:将信息传送给所有已登录的用户。
六、日志格式
- DATE:信息发生日期。
- TIME:信息发生时间。
- HOSTNAME:信息发生主机。
- APP:产生信息软件。
- NAME:软件名称,或是软件组件名称。可以省略。
- PID:进程标识。可以省略。
- MESSAGES:信息内容。
七、集中式的日志服务
1、为什么需要集中式日志服务
如果你负责管理很多台LINUX服务器,你就需要登录每台服务器查看上面的日志,特别麻烦,如果通过集中式的日志服务,就可以将日志收集起来,统一管理。
2、集中式日志服务的架构
日志服务器端配置:
- vim /etc/rsyslog.conf
- 开启UDP和TCP
- 重启服务
- service rsyslog restart
日志客户端端配置:
Vim /etc/rsyslog.conf
在RULES添加rules
*.* @192.168.1.1
(信息来源.运行级别 代表将信息转到HOSTNAME的系统日志服务器)
测试(客户端)
Logger ls
此时服务器端可看见log日志变化更新(tailf /var/log/messages)
3、设置步骤
- 修改客户端的配置文件,路径是/etc/syslog.conf,加如下参数*.* @logserver。
- 修改服务端的配置文件,路径是/etc/sysconfig/syslog,在SYSLOGD_OPTIONS参数,加入-r的参数。
- 重启客户端和服务端的日志服务。
八、日志切割
logrotate |
日志切割 |
/etc/logrotate.conf |
配置文件 |
/etc/logrotate.d/ |
切割配置 |
logrotate
选项:
-v |
详细信息 |
-f |
强制 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了