rsyslog系统管理日志

rsyslog系统管理日志

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

日志管理程序rsyslog 将日志写入数据库,并可以利用模块和插件控制输出

rsyslog 管理本地和远程管理:

man syslog
日志级别:
"<0>" / system is unusable / ----emerg 系统不可用
"<1>" / action must be taken immediately / ----alert 特别留意的警告
"<2>" / critical conditions / -----crit 非常严重的状况
"<3>" / error conditions / ----err 错误信息
"<4>" / warning conditions / ----warning 警告信息
"<5>" / normal but significant condition / ----notice 稍微注意信息
"<6>" / informational / ----info 正常信息
"<7>" / debug-level messages / ----debug 调试信息。开发人员
----none 不记录日志
我们一般关注 4级别以上的

日志配置
日志定义相关符号:
配置文件中的: . 分隔服务和级别

  • 任何服务的任何级别
    = 等于某一级别,没有等于号表示大于或等于某一级别
    ! 排除操作,两个级别去交集
    ; 分隔不同的服务.级别组合
    , 分隔不同的服务
  • 指定目标文件,代表异步写入
    注意:mail.info
    mail.=info

                cron.info;cron.!=err
                0123456    0124567 = 012456
    同步
    异步

    .info;mail.none;authpriv.none;cron.none /var/log/messages
    authpriv.
    /var/log/secure
    mail. -/var/log/maillog
    cron.
    /var/log/cron
    .emerg
    uucp,news.crit /var/log/spooler
    local7.* /var/log/boot.log
    上面的严格意义上都是载体,一些相关的服务配置会配置载体是谁
    载体服务的日志

    可以man rsyslog.conf 查看载体名称

本地日志管理
需求1:将本地邮件服务日志记录到/var/log/test_mail.log 里
思路: 1软件安装
2查看配置文件,启动脚本
3修改文件
4启动服务
5测试验证
环境:[root加CentOS6油 ~]$ ------192.168.31.62
修改配置文件
[root加CentOS6油 ~]$cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
[root加CentOS6油 ~]$vim /etc/rsyslog.conf
mail.info /var/log/test_mail.log

    启动服务
    service rsyslog restart 
    注意:重启后默认添加/var/log/test_mail.log 

    测试验证
        方法1:        发送邮件
        [root加CentOS6油 log]$echo "hhahaecho "hhaha" |mail -s "test_mail_log" root
        [root加CentOS6油 log]$cat /var/spool/mail/root
        方法2:        发一个log测试
            logger 用于系统中写入日志,提供了一个shell命令接口syslog系统模块

            logger -t "loggertest"  -p mail.info  "test_mail_log" 
                -t 指定标记记录
                -p  指定输入消息的优先级,优先级可以是数字或者 服务.级别 格式
        [root加CentOS6油 log]$logger -t "quanzhiqiang" -p mail.info "test_mail_log"
        [root加CentOS6油 log]$tail -1 test_mail.log 
            Apr 13 08:26:36 CentOS6 quanzhiqiang: test_mail_log

需求2 把ssh服务日志记录到/var/log/ssh下
    思路: 本来的ssh记录到系统安全里面,ssh的默认记录载体为authpriv
            1修改ssh配置文件的默认记录载体  /etc/ssh/sshd_config
            2修改日志配置文件,指定设备载体的日志到指定的文件(/etc/rsyslog.conf)
            3测试验证

    1[root加CentOS6油 log]$cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
     [root加CentOS6油 log]$vim /etc/ssh/sshd_config
                    #SyslogFacility AUTHPRIV
                     SyslogFacility LOCAL6      用local6 载体来记录sshd的服务日志
     [root加CentOS6油 log]$service sshd restart

    2[root加CentOS6油 log]$vim /etc/rsyslog.conf
        # Save sshd 
        local6.*                                                /var/log/ssh
    root加CentOS6油 log]$service rsyslog restart

    3 ssh IP 

        注意: 如果不想记录到原来的/var/log/messages 
    *.info;mail.none;authpriv.none;cron.none;local6.none        /var/log/messages

远程管理日志;
目的:把多台服务器端的日志远程记录到其中一台日志服务器集中化管理,方便对其统一管理
环境;
log_server: [root加CentOS6油 ] 192.168.31.62
应用服务器:root@CentOS6-1 ~] 192.168.31.140
ssh服务——其他人远程访问该服务器——产生的日志——远程记录到log_server上
client :[root加CentOS7油~] 192.168.31.41

需求:把应用服务器:[root加CentOS7油~]的ssh日志 ,远程记录到log_server上
    思路:
    应用服务器上的操作
            1.应用服务器的ssh服务的日志单独记录
                1.1指定载体
                1.2重启服务
          2.指定载体上的日志远程发送到log_server

        操作  
        [root@CentOS6-1 ~]# vim /etc/ssh/sshd_config   
            #SyslogFacility AUTHPRIV
            SyslogFacility LOCAL0       修改载体为local0
        [root@CentOS6-1 ~]# service sshd restart  
         [root@CentOS6-1 ~]# vim /etc/rsyslog.conf
            #*.* @@remote-host:514
            # ### end of the forwarding rule ###
            local0.*        @192.168.31.62:514  转发到
            注意: 一个@代表udp协议传输
                    两个@代表tcp协议传输

    log_server上的操作
        1.修改配置文件,打开日志传输的端口
                1.1加载模块tcp(重要信息) udp()
                1.2打开接受端口。默认为514端口
        2.重启服务  日志默认保存到/var/log/messages

        [root加CentOS6油 log]$vim /etc/rsyslog.conf
        # Provides UDP syslog reception
        $ModLoad imudp              把井号去掉
        $UDPServerRun 514               把井号去掉

        # Provides TCP syslog reception
        $ModLoad imtcp              把井号去掉
        $InputTCPServerRun 514          把井号去掉
        [root加CentOS6油 log]$service rsyslog restart

[root加CentOS6油 log]$netstat -tunlp | grep 514 查看端口有无开通
tcp 0 0 0.0.0.0:514 0.0.0.0: LISTEN 25656/rsyslogd
tcp 0 0 :::514 :::
LISTEN 25656/rsyslogd
udp 0 0 0.0.0.0:514 0.0.0.0: 25656/rsyslogd
udp 0 0 :::514 :::
25656/rsyslogd

扫描二维码关注公众号,回复: 5879084 查看本文章

注意: ssh服务端的传输类型,和log——server端 的开启传输类型应该一致
若上述都完成。验证无法管理。查看selunx是否关闭和,防火墙是否514端口打开。或全部关闭

日志轮转:
:切割,备份,归档
作用:避免日志过大沾满/var/log的文件系统
方便日志查看
将丢弃的系统中最旧的日志,节省空间
日志轮转的程序是logrotate
logrotate本身不是系统守护进程,通过计划任务crond每天执行

配置文件格式

weekly 全局轮转周期为每一周
rotate 4 轮转保留多少个单位周期的问价,轮转到四次之后的文件删除
create 创建新的文件用于记录,其权限和旧的文件一样
dateext 用日期来做轮转之后的文件后缀名
include /etc/logrotate.d 加入自配置文件
/var/log/wtmp { 轮转日志文件
monthly 没月
create 0664 root utmp 创建新问价,权限为0664 所属root用户和utmp组
minsize 1M 文件大于1M 且周期到了才轮转,size 1M 只要文件大于1m就会轮转
rotate 1
}
/var/log/btmp {
missingok 如果日志不存在,不会报错
monthly
create 0600 root utmp
rotate 1
}

[root加CentOS6油 etc]$cat /etc/logrotate.d/syslog 

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts 不管有多少个文件轮转,只执行一次prerotate和postrotate代码
postrotate 轮转后执行postrotate和endscript之间的代码
和prerotae 轮转前执行
/bin/kill -HUP cat /var/run/syslogd.pid 2&gt; /dev/null 2> /dev/null || true
#注释:kill -HUP钟的HUP是一个信号来的,默认操作是终止进程
endscript
}

需求:ssh服务日志单独保存/var/log/ssh 轮转
要求:每天轮转,保留5天的日志文件
文件大小大于5M进行轮转
思路:
1.修改logrotate的主配置文件,增加ssh日志文件的轮转
2.在logrotate.d目录下创建一个配文件ssh

    1.[root加CentOS6油 log]$vim /etc/logrotate.conf
    /var/log/ssh {
        daily
        rotate 5
        size 5M
        create
        missingok
    }

    2.[root加CentOS6油 log]$cat /etc/logrotate.d/ssh.conf 
/var/log/ssh {
        daily
        nodateext       不用日志做后缀,默认是1 2 3 四做后缀
        rotate 5
        size 5M
        create
        missingok
    }
fing ./ -type f |xargs rm -f 
强制轮转:logrotate -f /etc/logrotate.conf 

linux系统寻找文件是按节点号进行寻找的,所以要刷新PID号

/var/log/cron

/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
/bin/kill -HUP cat /var/run/syslogd.pid 2&gt; /dev/null 2> /dev/null || true
endscript
}

/bin/kill -HUP cat /var/run/syslogd.pid 2&gt; /dev/null 2> /dev/null || true
用于刷新PID 所以。不刷新的时候,日志还是会找到以前的老文件进行写入
刷新之后,才会找新的文件写入

man 1

1 用户命令, 可由任何人启动的。

2 系统调用, 即由内核提供的函数。

3 例程, 即库函数。

4 设备, 即/dev目录下的特殊文件。

5 文件格式描述, 例如/etc/passwd。

6 游戏, 不用解释啦!

7 杂项, 例如宏命令包、惯例等。

8 系统管理员工具, 只能由root启动。

9 其他(Linux特定的), 用来存放内核例行程序的文档。

n 新文档, 可能要移到更适合的领域。

o 老文档, 可能会在一段期限内保留。

l 本地文档, 与本特定系统有关的。

猜你喜欢

转载自blog.51cto.com/14240011/2378390