Linux日志学习

什么是日志文件

日志文件不用说,就是记录linux系统在什么时候由哪个进程做了什么样的行为,发生了什么事件等。详细的日志文件信息可以帮助我们解决大部分的Linux问题。

常见的Linux日志文件名

  • /var/log/cron : 与之前写过的crontab任务调度相关的日志文件。
  • /var/log/dmesg : 记录系统在开机时候内核检测过程中所产生的各项信息。由于centos默认将开机时内核的硬件检测过程取消,因此额外将数据记录一份在这个文件中。
  • /var/log/lastlog : 记录系统上面所有账号最近一次登录系统时的相关信息。lastlog命令就是基于此。
  • /var/log/maillog|* : 记录邮件的往来信息,主要是记录sendmail(SMTP协议提供者)与dovecot(POP3协议提供者)所产生的信息。
  • /var/log/message : 相当重要的日志文件,几乎系统发生的错误信息都会记录在这个文件中。系统发生莫名的错误时,这个文件是一定要查阅的日志文件之一。
  • /var/log/secure : 基本上,只要涉及账号密码的软件,登录信息都会存在这个文件中。
  • /var/log/wtmp,/var/log/faillog : 分别记录正确登录系统的账户信息(wtmp)和错误登录的账户信息(faillog)
  • /var/log/httpd/*
    /var/log/news/*
    /var/log/samba/*:网络服务相关的日志文件。

【ps:不同的linux distributions中,通常日志的文件名不会相同,所以,具体仍需查阅主机上的日志文件设置数据。】

日志文件的产生方式:

  • 软件开发商自行定义写入的日志文件与相关格式。
  • Linux distribution提供的日志文件管理服务来统一管理。centos7使用rsyslogd来统一管理。

日志文件所需服务与程序

rsyslogd : 主要登录系统与网络等服务的信息。
klogd : 主要登录内核产生的各项信息。
logrotate : 主要进行日志文件的轮替功能。

rsyslogd

日志文件内容的一般格式

一般来说,系统产生的信息经过syslog记录的数据,每条信息均会记录下面的几个重要数据。

  • 事件发生的日期与时间
  • 发生此事件的主机名
  • 启动此事件的服务名称和函数名称
  • 该信息的实际数据内容
Linux日志学习_第1张图片
image.png

这里就拿第一条数据做说明:
在7月22日 03:46:03(Jul 22 03:46:03) 由 izuf6i29flb2df231kt91hz这台主机的sshd[pid为3070]传来的消息,信息为 来自175.124.123.28端口46519的用户wuzhenqun无效

syslog的配置文件:/etc/rsyslog.conf(centos7采用rsyslog)

syslog针对各种服务与信息记录在某些文件的配置文件就是/etc/rsyslog.conf.这个文件规定了什么服务的什么等级信息以及需要被记录在那里(设备或文件)
语法规则:

服务名称[.=!]信息等级   信息记录的文件名或设备或主机
mail.info                      /var/log/maillog_info
#  说明 mail服务产生的大于等于info等级的信息,都记录到/var/log/maillog_info文件中
  • 服务名称
    syslog设置有一些服务,可以通过这些服务来存储系统的信息,syslog设置的服务主要有下面这些:
服务类型 说明
auth(authpriv) 主要与认证有关的机制,例如login,ssh,su等需要账号/密码
cron 就是例行性工作调度cron/at等生成信息日志的地方
daemon 与各个daemon有关的信息
kern 就是内核(kernel)产生信息的地方
lpr 即时打印相关的信息
mail 只要与邮件收发有关的信息记录都属于这个
news 与新闻组服务器有关的东西
syslog 就是syslogd这个程序本身生成的信息
user,uucp,local0-local7 与Unix like机器本身有关的一些信息

以上提到的都是syslog自行制定的服务名称。软件开发商可以通过调用上述的服务名称来记录他们的软件。
比如sendmail是与邮件相关的软件,都是调用syslogd内的mail服务。

  • 信息等级
等级 等级名称 说明
1 info 仅是一些基本的信息说明而已
2 notice 除了info外还需要注意的一些信息内容
3 warning(warn) 警示的信息,可能有问题,但是还不至于影响某个daemon运行的信息
4 err(error) 一些重大的错误信息,例如配置文件的某些设置造成该服务无法启动的信息说明
5 crit 比error还要严重的错误信息,这个crit是临界点(critical)的缩写,这个错误已经很严重了
6 alert 警告,已经很有问题的等级,比crit还严重
7 emergency(panic) "疼痛"等级,意指系统已经几乎要死机的状态
  • 链接符号
"."     : 代表比后面还要高的等级(含该等级),都被记录下来的意思
".="    :代表需要的等级就是后面接的等级而已
".!"    : 代表不等于,即是除了该等级之外的其他等级都记录
  • rsyslog.conf配置(centos7采用rsyslog,这里使用的是rsyslog的数据)
# Don't log private authentication messages!
记录所有日志类型的info级别以及大于info级别的信息到/var/log/messages,但是mail邮件信息,authpriv验证方面的信息和cron时间任务相关的信息除外
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# The authpriv file has restricted access.
authpriv验证相关的所有信息存放在/var/log/secure
authpriv.*                                              /var/log/secure
# Log all the mail messages in one place.
邮件的所有信息存放在/var/log/maillog; 这里有一个-符号, 表示是使用异步的方式记录, 因为日志一般会比较大
mail.*                                                  -/var/log/maillog
# Log cron stuff
计划任务有关的信息存放在/var/log/cron
cron.*                                                  /var/log/cron
# Everybody gets emergency messages
 记录所有的大于等于emerg级别信息, 以wall方式发送给每个登录到系统的人
*.emerg                                                 :omusrmsg:*
# Save news errors of level crit and higher in a special file.
记录uucp,news.crit等存放在/var/log/spooler
uucp,news.crit                                          /var/log/spooler
# Save boot messages also to boot.log
启动的相关信息
local7.*                                                /var/log/boot.log

日志文件的安全设置

通过这个chattr属性可以保护日志文件只能被增加,而不能被删除。

chattr +a /var/log/message

日志文件的轮替

配置文件:
/etc/logrotate.conf 主要参数文件
/etc/logrotate.d 目录文件

下图是centos7默认的logrotate.conf文件

Linux日志学习_第2张图片
logrotate.conf
Linux日志学习_第3张图片
image.png

你可能感兴趣的:(Linux日志学习)