Linux之日志

       不管是任何操作系统,编程语言,中间服务件还是网络设备在出现各种问题的时候大多数都会依赖日志来判断问题的根源,而且重要的服务器上还会建立日志备份服务器,例如信息安全等级保护来说,所有的安全设备以及服务器的日志必须保存半年以上,由此可见日志有多重要了吧!

1.日志服务启动

ps aux | grep rsyslogd   #查看服务启动
chkconfig --list | grep rsyslog  #查看服务是否自启动

 

2.常见的日志

/var/log/messages为服务器最核心的系统日志,该日志并不专门记录特定服务相关的日志,一般,后台守护进程(如crond)会把执行日志打印到此文件,查看
此文件可以使用文本编辑器或文本查看命令,如cat、head或tail等。
/var/log/dmesg 记录系统开机内核自检信息
/var/log/wtmp、/var/log/btmp、/var/log/lastlog这3个日志文件记录了关于系统登录和退出信息。其中wtmp 查查用户的登录、注销、同时记录系统的启动、重启、关
机等信息。btmp不能用 cat/vim查看,需要使用 lastb查看。utmp记录当前登录用户的信息。用户登录和退出的记录保存在wtmp文件中,各个用户最后一次登录的日志可以
使用lastlog查看。lastlog也是用lastlog查看
/var/log/maillog   记录邮件相关日志,比如发给了哪个,是否发出去了。
/var/log/cron   记录系统定时任务的相关日志。
/var/log/secure  记录了系统的登录行为,通过此日志可以分析异常的登录请求,可以使用文本查看相关的命令。
/var/log/cups    记录打印信息的日志
/var/log/boot.log  记录的Linux 系统在引导阶段发生的事件,也就是说系统开机自检过程中产生的日志
/var/log/syslog    它只记录警告信息,常常是系统出问题的信息
/var/run/utmp  该日志文件记录有关当前登录的每个用户的信息
/var/log/xferlog  该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件
/root/install.log:存储了安装系统中的软件包以及其版本信息
/root/install.log.syslog:存储了安装过程中留下的事件记录
/root/anaconda-ks.cfg:以kickstart配置文件的格式记录安装过程中设置的选项信息(kickstart配置文件是配置多台服务器需要参考的文件)

 

3.日志文件格式

基本日志格式包含:
事件产生的时间,发生事件的服务器的主机名,产生时间的服务名或程序名,事件的具体信息
/etc/rsyslog.conf配置文件格式  #系统默认日志等级,可以根据实际情况自定义等级和位置

配置文件例如:
authpriv.*                       /var/log/secure   
#服务名称[连接符号] 日志等级         日志记录位置

#下方附上常用的服务名称/连接符号/日志等级等

常见服务名称

说明

auth

安全和认证相关消息(不推荐使用authpriv替代)

authpriv

安全和认证相关消息(私有的)

cron

系统定时任务cront和at产生的日志

daemon

和守护进程产生的日志

ftp

ftp守护进程产生的日志

kern

内核产生的日志(不是用户进程产生的)

local0-local7

为本地使用预留的服务

lpr

打印产生的日志

mail

邮件收发信息

news

与新闻服务器相关的日志

syslog

有syslog服务产生的日志

user

用户等级类别的日志信息

uucp

uucp子系统的日志信息

 

 

连接符号

说明

举例

*

代表所有的日志等级

authpriv.*

.

代表只要比后面的等级高的日志都记录

cron.info日志级别大于info都记录

.=

代表制记录所需等级的日志,其他等级的都不记录

*.=emerg

.!

除了该等级的都记录

 

 

日志等级

等级级别

说明

debug

1

一般的调试信息说明

info

2

基本的通知信息

notice

3

普通信息,但是有一定的重要性

warning

4

警告信息,但是不影响到服务的运行

err

5

错误信息,影响服务运行

crit

6

临界状况信息,比err严重

alert

7

警告状态,比crit严重,必须立即采取行动

emerg

8

疼痛等级,系统已经无法使用

 

日志记录方式

举例

绝对路径方式

/var/log/secure

系统设备文件

/dev/lp0

转发远程主机

@102.0.0.1:111

发给某个用户

root

忽略日志

~

 

4.日志的分割和轮换(切割和覆盖)

如果不对生成的日志做优化处理,存储的日志保存在一个位置会越来越大,打开看的时候不容易查找相应的日志信息,所以要对日志进行一系列处理。例如大型企业的IPS或者防火墙来说,每天少说有几万甚至几十万行日志,出了问题用上二郎神的眼睛也未必能立马找到问题所在,所以。。。


分割:将日志按时间分割,便于查找日志
轮换:将日志按指定的时间覆盖,新日志覆盖旧日志,以节省空间   #源码包安装的需要修改配置文件才能轮替

 5.日志管理工具(logrotate、swatch、logcheck)

logrotate:linux系统自带的日志管理工具,用于分割,压缩,删除日志
/etc/logrotate.conf   #主配置,下图1
/etc/logrotate.d/     #子配置,按照应用来分,每行对应一个文件,点进去就能看到,下图2

 

 

 一般情况下日志要记录的话有两种情况,第一是自动触发,意思就是写好配置,等待规定的时间或其他要求到了之后才记录日志,第二种是手动触发,意思就是不管有没有达到记录日志的时间或者其他规定都会记录日志。

自动触发:
vim  /etc/logrotate.conf 

在下方添加:
asr/local/apache2/logs/message_log{
     daily  
    create
    rotate20
}

如下图:

手动触发:用logrotate命令来触发
root@kali:~# logrotate  --help
Usage: logrotate [OPTION...] <configfile>
  -d, --debug               Don't do anything, just test and print debug messages
  -f, --force               Force file rotation  #强制执行轮替,忽略配置文件设置的条件
  -m, --mail=command        Command to send mail (instead of `/usr/bin/mail')
  -s, --state=statefile     Path of state file
  -v, --verbose             Display messages during rotation  #显示日志轮替过程
  -l, --log=logfile         Log file or 'syslog' to log to syslog
      --version             Display version information

例如:logrotate -f /etc/logrotate.conf  

最下方附上logrotate.conf配置文件的主要参数。

logrotate配置文件常用参数

说明

compress

启用压缩,指的是轮替后的旧日志,这里默认用的是gzip压缩的

compressoptions

以gzip -9的模式压缩

uncompresscmd

解压日志,默认是gunzip

daily

每天轮替选项

dateext

轮替的日志文件会附加上一个短横线和YYYYMMDD格式的时间戳

delaycompress

将以前的日志文件压缩推迟到下一次轮替

ifempty

即使日志文件是空的也轮替

mail

将轮替后的文件发送到指定E-mail地址

copytruncate

用于还在打开中的日志文件,把当前日志备份并截断,开始轮替

mailfirst/maillast

向邮件发送轮替文件/轮替后历史文件(默认)

monthly

一个月轮替一次

nocompress

如果在logrotate.conf中启用了压缩,这里是做不用压缩的参数

nomail

不发送邮件到任何地址

ifempty

如果日志时空的就不轮替

olddir directory

轮替后日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

postrotate/endscript

在做完轮替后的命令,两个关键字必须单独成行,使用的操作在2者之间相当于分组“{}”,注意的使用外部指令时要用绝对路径

prerotate/endscript

在做轮替前的命令,同上

rotate count

轮替最多保留之前的数据几次,超出的将被删除或邮件接收,设为0则不保存

size size

当日志增长到指定大小的时候开始轮替,它不会考虑

start count

轮替文件名基于这个数字。

例如,指定0时,原日志文件轮替的备份文件以.0为扩展名,如果指定9,就直接从.9开始跳过0-8

然后再继续向后轮替rotate指定的次数。

weekly

如果当前的星期几比上次轮替的星期几少,或者过了一个多星期,就会发生轮替通常是在每周的第一天轮替,如果logrotate不是每天运行的,会在第一次有机会时进行轮替。

yearly

如果当前年份不同于上次轮替的年份,则进行日志轮替

create mode owner group

在轮替动作之后,postrotate脚本执行之前,立即使用刚轮替的日志文件名创建日志文件。

    MODE 指定日志文件的权限(0660之类)

    OWNER 指定日志文件的属主

    GROUP 指定日志文件的属组

extension ext

日志文件可在轮替后使用指定的EXT扩展名。如果使用压缩,通常EXT后还会加上压缩文件的扩展名,通常是.gz。例如想把mylog.foo轮转为mylog.1.foo.gz而不是mylog.foo.1.gz

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值