什么是日志文件
日志文件不用说,就是记录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记录的数据,每条信息均会记录下面的几个重要数据。
- 事件发生的日期与时间
- 发生此事件的主机名
- 启动此事件的服务名称和函数名称
- 该信息的实际数据内容
这里就拿第一条数据做说明:
在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文件