rsyslog日志管理

Rsyslog日志管理系统

一、常见的系统日志

日志格式:文本日志/二进制日志/数据库日志
默认的相关日志文件:
/var/log/boot.log       系统引导日志,记录开机启动信息
/var/log/dmesg          核心的启动日志
/var/log/messages       系统的日志文件
/var/log/maillog        邮件服务的日志
/var/log/xferlog        ftp服务的日志
/var/log/secure         网络连接及系统登录的安全信息
/var/log/cron           定时任务的日志
/var/log/wtmp           记录所有的登入和登出    last -f 查看
/var/log/btmp           记录失败的登入尝试

二、日志级别

# man syslog
日志信息分为以下级别,从上到下级别依次降低
    none       <-- none 不算是一个等级,它表示不记录服务的所有信息
0   emerg      <-- 系统不可用 
1   alert      <-- 特别留意的报警信息
2   crit       <-- 非常严重的状况 
3   err        <-- 错误信息
4   warning    <-- 警告信息
5   notice     <-- 稍微需要注意的信息
6   info       <-- 正常信息
7   debug      <-- 调试信息,开发人员使用

三、日志配置

1. 日志定义相关符号
配置文件中常见的表示符号
.          <-- 用来分隔服务和级别
*          <-- 任何服务,或者任何级别
=          <-- 有等号表示等于某一级别,没有等号表示大于或者等于某一级别
!          <-- 排除操作,前面有相同服务的表达式,这个操作才有意义
               代表从前面表达式所包含的内容中排除某些内容
;          <-- 用于分隔不同的  服务.级别 组合
,          <-- 用于分隔不同的服务
-          <-- 用于指定目标文件时,代表异步写入

举例说明:

mail.=info
mail.info   mail服务的大于等于info级别的日志
mail.info;cron.=info        /var/log/test.log
mail,cron.err   

cron.=warning
mail,cron.info

cron.info;cron.!=err    012456
0123456 0124567
cron.info;cron.!err     456
0123456    4567

2. 了解配置文件
[root@review1 ~]# vim /etc/rsyslog.conf

*.info;mail.none;authpriv.none;cron.none                /var/log/messages
所有服务产生的日志,除了mail/验证/任务计划相关日志都记录/var/log/message
authpriv.*                                              /var/log/secure
记录所有跟验证有关日志
mail.*                                                  -/var/log/maillog
记录所有跟邮件有关的日志信息
cron.*                                                  /var/log/cron
记录跟任务计划查关的日志
*.emerg                                                 *
把所有级别为emerg 的信息发送给所有登录到系统上的用户
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
记录所有跟启动相关的日志信息

特别说明:

说明:
# man rsyslog.conf
The  facility  is one of the following keywords: auth, authpriv,
       cron, daemon, kern, lpr, mail, mark,  news,  security  (same  as
       auth), syslog, user, uucp and local0 through local7.

log facility  设备 设施: 用来记录一种类型日志的日志设备

daemon
auth
authpriv
user
mail
lpr
news
uucp
ftp
local0-7

四、本地日志管理

1、 修改配置文件
 40 # Log anything (except mail) of level info or higher.
 41 # Don't log private authentication messages!
 42 *.info;mail.none;authpriv.none;cron.none                /var/log/messages
 43 
 44 # The authpriv file has restricted access.
 45 authpriv.*                                              /var/log/secure
 46 
 47 # Log all the mail messages in one place.
 48 mail.*                                                  -/var/log/maillog
 49 
 50 
 51 # Log cron stuff
 52 cron.*                                                  /var/log/cron

 //修改配置文件定义的路径即可修改日志存储方式
2、 示例
[root@review1 ~]# vim /etc/rsyslog.conf                //修改配置文件计划任务日志
cron.*                                        /var/log/crontab.log
[root@review1 log]# rm -rf cron*                    //删除原本日志
[root@review1 log]# ls |grep cron*                  //检测是否删除
[root@review1 log]# 

[root@review1 log]# service rsyslog restart         //重启服务
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

[root@review1 log]# crontab -e                     //编辑计划任务
no crontab for root - using an empty one
crontab: installing new crontab
[root@review1 log]# crontab -l
 */2 * * * * /usr/bin/ntpdate  -s 120.25.108.11 &>/dev/null

[root@review1 log]# ls |grep cron*                  //检查日志
crontab.log                                       //新日志生成成功

[root@review1 log]# cat crontab.log 
Jun 26 19:26:24 review1 crontab[1457]: (root) BEGIN EDIT (root)
Jun 26 19:31:00 review1 crontab[1457]: (root) REPLACE (root)
Jun 26 19:31:00 review1 crontab[1457]: (root) END EDIT (root)
Jun 26 19:31:06 review1 crontab[1459]: (root) LIST (root)

注:

​ 也可以通过修改服务的日志载体来修改日志存储日志。

 例:
 60 # Save boot messages also to boot.log
 61 local7.*                                                /var/log/boot.log

五、远程日志管理

log-server(192.168.221.129):收集日志

log-client(192.168.221.139):将日志发送到log-server端

server端:打开TCP和UDP服务,默认端口514
 12 # Provides UDP syslog reception
 13 $ModLoad imudp
 14 $UDPServerRun 514
 15 
 16 # Provides TCP syslog reception
 17 $ModLoad imtcp
 18 $InputTCPServerRun 514

[root@log-server ~]# service rsyslog restart  //重启服务,检查端口是否打开
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
[root@log-server ~]# netstat -ntpl  |grep 514
tcp        0      0 0.0.0.0:514                 0.0.0.0:*                   LISTEN      1563/rsyslogd       
tcp        0      0 :::514                      :::*                        LISTEN      1563/rsyslogd       
[root@log-server ~]# 

client端:将sshd日志文件发送到远端去
//设置sshd日志文件载体
[root@log-client ~]# vim /etc/ssh/sshd_config
 SyslogFacility LOCAL0
[root@log-client ~]# vim /etc/rsyslog.conf
local0.*                                                @192.168.221.129:514    
//@表示UDP传输,@@表示TCP传输    
[root@log-client ~]# service sshd restart              //重启服务
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
[root@log-client ~]# service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

//测试
[root@log-client ~]# ssh 192.168.221.129
Last login: Tue Jun 26 21:35:05 2018 from 192.168.221.139
[root@log-server ~]# 
[root@log-server ~]# 
[root@log-server ~]# exit
logout
Connection to 192.168.221.129 closed.           //登录成功

[root@log-server ~]# tail -f /var/log/messages
Jun 26 21:38:26 log-client sshd[1972]: Received signal 15; terminating.
Jun 26 21:38:26 log-client sshd[2003]: Server listening on 0.0.0.0 port 22.
Jun 26 21:38:26 log-client sshd[2003]: Server listening on :: port 22.
//server端成功看到ssh登录日志,日志传输成功

注: ssh登录日志传输成功,但是client也有记录,但是也可以在配置文件中关闭。

  • 如何将远程传来的日志存到指定文件里
[root@log-server log]# vim /etc/rsyslog.conf

在该文件的最后面加入以下内容:
//定义一个模板DynFile,将日志保存在/var/log里,文件名为system-客户端的主机名.log
$template DynFile,"/var/log/system-%HOSTNAME%.log" 
//动态加载调用上面的模板
local0.*    ?DynFile

结果:
日志客户端发过来的日志就会单独保存在/var/log/system-log-client.log,这样就实现了日志的单独保存

六、日志轮转

1、日志轮转意义
  • 日志轮转作用:日志轮转,切割,备份,归档。
  • 日志轮转优点:

    ①避免日志过大占满/var/log的文件系统
    
    ②方便日志查看
    
    ③将丢弃系统中最旧的日志文件,以节省空间
    
  • 日志轮转程序

    ①日志轮转的程序是logrotate
    
    ② logrotate本身不是系统守护进程,它是通过计划任务crond每天执行
    
2、日志轮转实现方法
  • 配置文件
[root@log-server ~]# vim /etc/logrotate.conf 
# see "man logrotate" for details
# rotate log files weekly
weekly
#以7天为一个周期(每周轮转)
rotate 4
#每4周备份日志文件(保留4份日志文件)
create
#当老的转储文件被归档后,创建一个新的空的转储文件重新记录,权限和原来的转储文件权限一样.
dateext
#用日期来做轮转之后的文件的后缀名
#compress
#指定不压缩转储文件,如需压缩去掉注释就可以了.通过gzip压缩
include /etc/logrotate.d #加载外部目录
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly     表示此文件是每月轮转,而不会用到上面的每周轮转
    create 0664 root utmp   轮转之后创建新文件,权限是0664,属于root用户和utmp组
    minsize 1M      文件大于1M,而且周期到了,才会轮转
    rotate 1        保留1分日志文件,每1个月备份一次日志文件
}

/var/log/btmp {
    missingok               如果日志文件不存在,不报错
    monthly
    create 0600 root utmp
    rotate 1
}
  • 子配置文件
[root@log-server ~]# vim  syslog 
 //这个子配置文件,没有指定的参数都会以默认方式轮转

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    sharedscripts       不管有多少个文件待轮转,prerotate 和 postrotate 代码只执行一次
    postrotate           轮转完后执行postrotate 和 endscript 之间的shell代码
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true  这一句话表示轮转后对rsyslog的pid进行刷新(但pid其实不变)
    endscript
}

注: 先写日志再刷新PID,日志写到了旧日志里,先刷新PID再写日志,日志写在新日志文件里。

  • 案例:SSH服务日志单独存储

    • 方法一:修改主配置文件
    [root@log-server ~]# vim /etc/logrotate.conf
    37 /var/log/ssh {
    38   daily
    39   rotate        5
    40   size          5M
    41   create
    42 }
    
    //指定ssh日志存储位置
    [root@log-server log]# vim /etc/ssh/sshd_config
    37 SyslogFacility LOCAL6
    [root@log-server log]# vim /etc/rsyslog.conf 
    62 local6.*                                                /var/log/ssh
    
    //测试
    [root@log-server log]# find ./ -type f -delete            //删除旧日志文件
    [root@log-server log]# ls
    audit  ntpstats  samba
    [root@log-server log]# service sshd restart               //重启服务
    Stopping sshd:                                             [FAILED]
    Starting sshd:                                             [  OK  ]
    [root@log-server log]# service rsyslog restart
    Shutting down system logger:                               [  OK  ]
    Starting system logger:                                    [  OK  ]
    [root@log-server log]# ls                             //新日志已被创建
    audit     cron     messages  samba   spooler
    boot.log  maillog  ntpstats  secure  ssh
    [root@log-server log]# logrotate -f /etc/logrotate.conf   //强制轮转
    error: stat of /var/log/wtmp failed: No such file or directory
    [root@log-server log]# ls                              //轮转成功
    audit             messages           spooler
    boot.log          messages-20180627  spooler-20180627
    cron              ntpstats           ssh
    cron-20180627     samba              ssh-20180627
    maillog           secure
    maillog-20180627  secure-20180627
    • 方法二:修改子配置文件
    [root@log-server logrotate.d]# pwd
    /etc/logrotate.d                      //在此文件夹下创建
    [root@log-server logrotate.d]# vim ssh      //创建需要轮转的日志文件的配置文件
    1  /var/log/ssh {                       
    //注意这个"/var/log/ssh"必须与"/etc/rsyslog.conf"中的设置完全一样,不然logrotate找不到这个设置内容
    2    daily
    3    rotate        5
    4    size          5M
    5    create
    6   }
    
    //测试
    [root@log-server log]# find ./ -type f -delete
    [root@log-server log]# ls
    audit  ntpstats  samba
    [root@log-server log]# service rsyslog restart
    Shutting down system logger:                               [  OK  ]
    Starting system logger:                                    [  OK  ]
    [root@log-server log]# logrotate -f /etc/logrotate.conf 
    error: stat of /var/log/wtmp failed: No such file or directory
    [root@log-server log]# ls
    audit             messages           spooler
    boot.log          messages-20180627  spooler-20180627
    cron              ntpstats           ssh
    cron-20180627     samba              ssh-20180627
    maillog           secure
    maillog-20180627  secure-20180627
    //轮转成功
    
  • 配置文件中常见参数

常用的指令解释,这些指令都可以在man logrotate 中找得到。
daily                指定转储周期为每天
monthly             指定转储周期为每月
weekly                  <-- 每周轮转一次(monthly)
rotate 4                <-- 同一个文件最多轮转4次,4次之后就删除该文件
create 0664 root utmp   <-- 轮转之后创建新文件,权限是0664,属于root用户和utmp组
dateext                 <-- 用日期来做轮转之后的文件的后缀名
compress                <-- 用gzip对轮转后的日志进行压缩
minsize 30K             <-- 文件大于30K,而且周期到了,才会轮转
size 30k                <-- 文件必须大于30K才会轮转,而且文件只要大于30K就会轮转
                            不管周期是否已到
missingok               <-- 如果日志文件不存在,不报错
notifempty              <-- 如果日志文件是空的,不轮转
delaycompress           <-- 下一次轮转的时候才压缩
sharedscripts           <-- 不管有多少个文件待轮转,prerotate 和 postrotate 代码只执行一次
prerotate               <-- 如果符合轮转的条件
                            则在轮转之前执行prerotate和endscript 之间的shell代码
postrotate              <-- 轮转完后执行postrotate 和 endscript 之间的shell代码
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值