认识与详细分析日志文件

1.1  什么是日志?
 
  日志是记录系统天天发生的各类事情,用户能够经过它来检查错误发生的缘由,或者寻找受到***时***者留下的痕迹。日志主要的功能是审计和监测。它还能够实时地监测系统状态,监测和追踪侵入者。

Linux系统中,全部的日志文件都在/var/log下vim

1.2    日志的做用安全

 

     1. 解决系统方面的错误 服务器

     2. 解决网络方面的问题 
     3. 记录一些重要的事件
     4. 解决安全方面的问题
1.3  Linux 常见的日志文件
 
1. /var/log/cron:   crontab(计划任务)服务的日志
 
2· /var/log/dmesg: 记录系统在开机的时候核心侦测过程所产生的各项信息。
 
3· /var/log/lastlog: 全部的账号最近一次登录系统时的相关信息
 
4· /var/log/maillog或/var/log/mail/* : 记录邮件的往来信息,其实主要是记录 sendmail (SMTP ) 和 dovecot (POP3) 所产生的讯息。 SMTP 是发信所使用的通信协议, POP3 则是收信使用的通信协议。 sendmail和dovecot 则分别是两套达成通信协议的软件。
 
5·  /var/log/messages:几乎全部的系统错误信息都会记录在此。( 很重要!!!) 
                  
6· /var/log/secure: 基本上,当涉及到须要输入帐号密码的软件,当登陆时都会被记录在文件中
 
7·  /var/log/wtmp:    记录正确登陆者的账号信息  
      /var/log/faillog  记录错误登陆者的帐号信息
 
8·  /var/log/httpd/*,    网络服务的日志文件,不一样的网路服务有本身的登陆的日志文件来记载它们本身产生的各类信息
 
1.4  日志文件所需相关服务 (daemon) 与程序
 
1.
syslogd: 主要记录系统与网络等服务的信息;
 
klogd: 主要记录内核产生的各项信息;
 
logrotate:  进行日志论滚,logrotate 是将旧的登陆档更更名称,而后创建一个空的登陆档,如此一来, 新的登陆文件将从新开始记录,旧文件会保留一段时间,几个月左右, 若是这段时间没有问题,可让系统自动的把它删除, 能够节省硬盘空间
 
 
 
2.日志的格式
# less  /var/log/messages
注意: 不要用vim命令查看,@1.当你不当心改动日志时,并保存退出了,那么日志文件将再也不记录日志了. @2.若是日志文件很大,vim会把整个日志文件读入内存,很容易形成内存溢出
 
日志的格式: 
  时间           主机名       相关的服务         发生事件的详细描述
Feb 6 04:44:44    tx1           sshd[2037]:    Server listening on 0.0.0.0 port 22.
 

3.syslog配置文件网络

vim   /etc/syslog.confless

@1.格式
服务或设备(facility) ,分隔符, 日志级别(priority),把日志记录到哪里      
 
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#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
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog
# Log cron stuff
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
 # Save boot messages al
local7.*                                                /var/log/boot.log
       
@2.syslog 认识的服务主要有如下这些
 
kern   内核信息
auth  (authpriv)用户受权,主要与认证有关的机制,如 login, ssh, su 等须要账号的地方;
cron   计划任务的信息
lpr   与打印有关的信息
mail   与邮件有关的信息
news   新闻组服务器有关的信息
syslog   日志syslog生成的信息
uucp,news  新闻组信息
local0  ~ local7   自定义的服务
 
@3.日志的级别
 
none   不须要日志
debug   调试信息 
info    通常的通知信息
notice    提醒信息
warning   警告
err     错误,好比由于配置错误 致使某些服务没法启动
crit    比error 还要严重的错误信息
alert   问题已经很严重了,比critical 还严重 ,须要当即采起动做
emerg   疼痛等级,指系统几乎要死机的状态!
 
@4.服务与日志的级别之间的分隔符
   . 是 “>=” 
.info:记录自己这个级别,而且记录高于这个级别的信息
 
  .= 是 “==”
.=info:只记录info 这个级别的信息
 
    .!  是“除了”
.!info:除了info 这个级别,其余信息都记录

 .none:是 “不记录”
 
*   全部
*.  全部的服务
.*  全部的级别
 
@5.记录日志的位置
 
文件的绝对路径:一般就是放在 /var/log 里头的文件
 
打印机或其余设备:例如 /dev/lp0  
 
输出到终端 /dev/console 
 
用户名称:显示给用户!
 
远程主机:例如 @www.tx.com  @ 后面写主机名或IP地址,固然对方主机也能支持才行!
 
*:表示『目前在线上的全部人
 
 
 
 1.5. 日志文件的安全

1.能够用远程日志,就是把日志记录到其余机器上,这样的即便你的主机被***了,日志文件被删掉了,可是另一台机器上还有重要的数据

2.能够将日志数据传送到打印机上面

3.能够把日志文件加上隐藏权限,这样文件就不能被删除,只能被追加。root能够去掉这个权限,而后进行删除的
  #chattr +a /var/log/messages
可是这样,logrotate将没法工做,下面会说到,在有隐藏权限的状况下让logrotate工做

4.不要用vim打开日志文件

1.6日志服务器的设置

Server:
ssh

#vim /etc/sysconfig/syslog        
ide

SYSLOGD_OPTIONS="-m 0 -r"         //开启接收远程日志功能

#service syslog restart

日志服务器监听的端口为514
# netstat -lunp | grep syslog
udp        0      0 0.0.0.0:514                 0.0.0.0:*                               2913/syslogd  
     
Client
# vim /etc/syslog.conf
*.*                                        @192.168.8.70
# service syslog restart

1.7    logrotate 日志轮替
   
 
 
  日志轮替主要是防止日志文件无限制的变大,syslog 利用的是 daemon 的方式来启动的的, 当有需求的时候就会被执行,可是 logrotate 倒是在规定的时间到了之后才来迚行登陆档的轮替, 因此这个 logrotate 程序就要挂在 cron 底下进行, /etc/cron.daily/logrotate 就是记录了天天要进行的日志文件轮替               

     如图所示:当第一次执行完轮替后,本来的 messages 会变成 messages.1 并且会建立一个空的 messages 给系统来储存登陆文件。而第二次执行轮替后,则 messages.1 会变成 messages.2 而 messages 会变成 messages.1 ,又形成一个空的 messages 来储存登陆文件,若是咱们仅保留三个文件,那么执行第四次时,则 messages.3 这个文件就会被删除,并由后面的较新的文件代替。
 
1.配置文件 
/etc/logrotate.conf 
/etc/logrotate.d/ 
     logrotate.conf 是主要的配置文件,logrotate.d 是一个目录, 该目录里面的全部文件都会被调入 /etc/logrotate.conf 当中来进行。若是在 /etc/logrotate.d/ 中没有指定一些详细设置,则以 /etc/logrotate.conf中的设置为默认值

2.相关软件: 
#rpm -qa | grep logrotate

 logrotate-3.7.4-12

3. vim /etc/logrotate.conf             
# rotate log files weekly 
weekly        //轮替周期,一个星期轮替一次 
 
# keep 4 weeks worth of backlogs 
rotate 4      //保留几个旧的日志文件 
    
 # create new (empty) log files after rotating old ones 
create        //建立一个新的空日志文件 
 
# uncomment this if you want your log files compressed 
#compress      //日志压缩 
 
# RPM packages drop log rotation information into this directory 
include /etc/logrotate.d  //在该目录下的配置文件也生效 
 
# no packages own wtmp -- we'll rotate them here 

/var/log/wtmp {     //对/var/log/wtmp进行的设置
    monthly       //轮替周期为一个月 
    minsize 1M        //文件大小要超过1M,才进行轮替
    create 0664 root utmp   //建立的空日志文件的权限及全部者、所属组 
    rotate 1     //保留 1 个日志备份 

/var/log/btmp {
    missingok  //若是日志文件丢失,进入到下一个不发出错误消息
    monthly     //轮替周期为一个月
    minsize 1M     //文件大小要超过1M,才进行轮替
    create 0600 root utmp   //建立的空日志文件的权限及全部者、所属组
    rotate 1          //保留 1 个日志备份
}


 1.8 日志轮滚的格式:                                     
 
1.格式
     文件名  { 
 
sharedscripts    开始
prerotate        启动logrotate以前执行的命令
  commands 
endscript        结束
 
sharedscripts     开始
postrotate       启动logrotate之 后执行的命令
  commands 
endscript         结束
 
 
}  


例:若是日志文件有隐藏权限怎么办?
#touch  /var/log/tx.log
#chattr  +a  tx.log
#vi /etc/logrotate.d/tx
/var/log/tx.log {
monthly 
size=5M 
rotate 4
create
compress 
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/admin.log      
endscript
sharedscripts
postrotate
/usr/bin/killall -HUP syslogd     //系统的syslogd从新读syslog.conf文件
/usr/bin/chattr +a /var/log/admin.log
endscript
 
2. 轮滚测试工具:  
#logrotate -vf logfile

-v:启动显示模式,会显示logrotate运行的过程

-f:不管是否符合配置文件的数据,强制每一个日志文件都进行轮替操做

[root@tx1 ~]# logrotate -v /etc/logrotate.conf
reading config file /etc/logrotate.conf  //读取主配置文件
including /etc/logrotate.d               //调用外部设置
reading config file acpid                //外部设置
...................
...................
...................

Handling 17 logs                       //共有17个日志文件被记录
...................
considering log /var/log/messages        //开始处理messages
  log does not need rotating          //时间未到,不须要改动

considering log /var/log/secure
  log does not need rotating

# logrotate -v /etc/logrotate.d/tx
reading config file /etc/logrotate.d/tx
reading config info for /var/log/tx.log

Handling 1 logs

rotating pattern: /var/log/tx.log  10485760 bytes (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/tx.log
  log does not need rotating
not running prerotate script, since no logs will be rotated
not running postrotate script, since no logs were rotated
 
# logrotate -vf /etc/logrotate.d/tx
reading config file /etc/logrotate.d/tx
reading config info for /var/log/tx.log

Handling 1 logs

rotating pattern: /var/log/tx.log  forced from command line (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/tx.log
  log needs rotating
rotating log /var/log/tx.log, log->rotateCount is 5
renaming /var/log/tx.log.5.gz to /var/log/tx.log.6.gz (rotatecount 5, logstart 1, i 5),
old log /var/log/tx.log.5.gz does not exist
renaming /var/log/tx.log.4.gz to /var/log/tx.log.5.gz (rotatecount 5, logstart 1, i 4),
old log /var/log/tx.log.4.gz does not exist
renaming /var/log/tx.log.3.gz to /var/log/tx.log.4.gz (rotatecount 5, logstart 1, i 3),
old log /var/log/tx.log.3.gz does not exist
renaming /var/log/tx.log.2.gz to /var/log/tx.log.3.gz (rotatecount 5, logstart 1, i 2),
renaming /var/log/tx.log.1.gz to /var/log/tx.log.2.gz (rotatecount 5, logstart 1, i 1),
renaming /var/log/tx.log.0.gz to /var/log/tx.log.1.gz (rotatecount 5, logstart 1, i 0),
old log /var/log/tx.log.0.gz does not exist
log /var/log/tx.log.6.gz doesn't exist -- won't try to dispose of it
running prerotate script
renaming /var/log/tx.log to /var/log/tx.log.1
creating new log mode = 0644 uid = 0 gid = 0
running postrotate script
compressing log with: /bin/gzip

[root@tx1 ~]# lsattr /var/log/tx.log*
-----a------- /var/log/tx.log
------------- /var/log/tx.log.1.gz
------------- /var/log/tx.log.2.gz
------------- /var/log/tx.log.3.gz
#这里已经生成了压缩文件工具

能够根据本身的须要,定制本身的日志轮替,compelete
post

相关文章
相关标签/搜索