LogAnalyzer + rsyslog + logrotate

一: rsyslog

*)安装

    cd /etc/yum.repos.d/
    wget http://rpms.adiscon.com/v8-stable/rsyslog.repo
    yum update -y
    yum install rsyslog rsyslog-mysql -y
    chkconfig rsyslog on
    /etc/init.d/rsyslog restart


*)测试
***)local0~local7 可以定义的范围

    cat >> /etc/rsyslog.d/mytest.conf <<EOF
    #just for test
    local6.*       /var/log/mytest.log
    EOF
    service rsyslog restart


**)使用内置 logger命令测试

    logger -i -t "my_test" -p local6.notice "test_info" 


###)常用配置

    服务端
    # ######### Receiving Messages from Remote Hosts##########
    # TCP Syslog Server:
    # provides TCP syslog reception and GSS-API (ifcompiled to support it)
    $ModLoad imtcp.so # load module
    $InputTCPServerRun 514 # start up TCP listener atport 514
    #tcp接收连接数为500个 
    $InputTCPMaxSessions 500 
     
    # UDP Syslog Server:
    $ModLoad imudp.so # provides UDP syslog reception
    $UDPServerRun 514 # start a UDP syslog server atstandard port 514
     
    ##为信息加上日志时间 
    $template logformat,"%TIMESTAMP:::date-mysql%%FROMHOST-IP%%msg%\n"  
    ##定义的日志文件的名称,按照年月日 
    #$templateDynFile,"/Application/sdns/log/%$year%%$month%%$day%.log"  
    ##把包含sdns_log标志的信息写到DynFile定义的日志文件里  
    #:rawmsg, contains, "sdns_log"?DynFile;logformat
    ##这个表示丢弃包含sdns_log标志的信息  
    #:rawmsg, contains, "sdns_log" ~
    #指定日志文件的拥有者  
    $FileOwner apache  
    开启接收远程信息:
    #vim /etc/sysconfig/rsyslog
    修改成:SYSLOGD_OPTIONS="-m0 -r"
    配置客户端
    vi/etc/rsyslog.conf #在文件开始加上
    #把包含sdns_log的信息通过tcp发到192.168.1.2 @@表示tcp @表示udp  
    :rawmsg, contains, "sdns_log" @@192.168.1.2  
    #这个表示丢弃包含sdns_log标志的信息,防止这个信息写到本机的/var/log/message  
    :rawmsg, contains, "sdns_log" ~ 

    #默认转发全部
    *.* @@172.28.10.10:514


##)服务端配置mysql支持

    #手动创建数据库
    cd /usr/share/doc/rsyslog-mysql-8.22.0/
    mysql -uroot -p123456 < createDB.sql


    #数据库授权
    mysql -uroot –p
    grant all privileges  on Syslog.* to 'rsyslog'@'localhost' identified by 'rsyslog' with grant option;
    flush privileges;


    #配置服务端支持rsyslog-mysql 模块 ,所有日志写入数据库
    # vim /etc/rsyslog.conf
    $ModLoad ommysql   
    *.* :ommysql:localhost,Syslog,rsyslog,rsyslog
    在 #### MODULES #### 下添加上面两行。
    说明:localhost 表示本地主机,Syslog 为数据库名,rsyslog 为数据库的用户,rsyslog为该用户密码。


*)记录客户端所有命令日志

    #编辑/etc/bashrc,将客户端执行的所有命令写入系统日志/var/log/messages中。在/etc/bashrc文件尾部增加一行
    export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y;  });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg";  }'
    source /etc/bashrc
	
	

二,安装LogAnalyzer


    *)请确认之前的lamp 环境已经完成
    wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.5.tar.gz
    tar xvzf loganalyzer-4.1.5.tar.gz
    cd loganalyzer-4.1.5
    mkdir -p /var/www/html/loganalyzer
    rsync -a src/* /var/www/html/loganalyzer/
    #接着配置好apache 或者 nginx 等环境 按照 网页提示配置即可



###)服务端配置样列

    module(load="imuxsock") # provides support for local system logging (e.g. via logger command)
    module(load="imklog")   # provides kernel logging support (previously done by rklogd)
    module(load="imudp") # needs to be done just once
    input(type="imudp" port="514")
    module(load="imtcp") # needs to be done just once
    input(type="imtcp" port="514")
    $ModLoad ommysql   
    *.* :ommysql:localhost,Syslog,rsyslog,rsyslog
    $InputTCPMaxSessions 500 
    $template logformat,"%TIMESTAMP:::date-mysql%%FROMHOST-IP%%msg%\n"  
    $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
    $IncludeConfig /etc/rsyslog.d/*.conf
    *.info;mail.none;authpriv.none;cron.none                /var/log/messages
    authpriv.*                                              /var/log/secure
    mail.*                                                  /var/log/maillog
    cron.*                                                  /var/log/cron
    *.emerg                                                 :omusrmsg:*
    uucp,news.crit                                          /var/log/spooler
    local7.*                                                /var/log/boot.log


#日志级别

    rsyslog共有7种日志级别,数字代号从 0~7。具体的意义如下所示:
    0 debug       –有调式信息的,日志信息最多
    1 info        –一般信息的日志,最常用
    2 notice      –最具有重要性的普通条件的信息
    3 warning     –警告级别
    4 err         –错误级别,阻止某个功能或者模块不能正常工作的信息
    5 crit        –严重级别,阻止整个系统或者整个软件不能正常工作的信息
    6 alert       –需要立刻修改的信息
    7 emerg       –内核崩溃等严重信息


#过滤样列

    #简单过滤规则
    #编辑syslog.conf,
    # vim /etc/syslog.conf
    local3.none   #使得设备local3的日志不记录在messages文件里,
    #以下为 记录所有info信息,不记录验证信息,不记录定时任务信息,loca1和local3的也不记录, 其他信息全部记录到 /var/log/messages 
    *.info;mail.none;authpriv.none;cron.none;local1.none;local3.none   /var/log/messages
    将设备local3的所有级别的信息都记录在userlog文件里,
    #user log  单纯的将local3.所有等级信息记录到 /var/log/userlog下
    local3.*   /var/log/userlog

    *.info;mail.none;authpriv.none;cron.none /var/log/messages
    #除了mail、authpriv、cron之外的任何服务产生日志等级为info的信息都记录在message之内
    authpriv.* /var/log/secure
    #authpriv服务发生的任何等级的日志都记录在secure中 
    mail.* -/var/log/maillog
    #同理,是Mail服务发生的日志都记录在maillog中
    $ModLoad ommysql #引用mysql模块 
    mail.* :ommysql:localhost,Syslog,rsyslog,password    
    #将mail的任何信息记入:本地mysql中的Syslog库中,用户为rsyslog,密码为:password 
    (1) . :代表大于等于指定的等级的日志会记录到指定的日志里面
    (2) .= :代表日志等级等于指定的等级会记录
    (3) .! :除了指定等级之外的日志会被记录



#测试

    logger -i -t "my_test" -p local3.notice "test_info" 
    logger -i -t "my_test" -p local3.warning "test_info" 
    logger -i -t "my_test" -p local3.error "test_info" 
    logger -i -t "my_test" -p local3.alert "test_info" 
	
		

三,日志轮转logrotate



    #强制全部轮转 
    logrotate /etc/logrotate.conf


#配置样列

    vim /etc/logrotate.d/messages 
    /var/log/messages {   #日志路径一定要和rsyslog定义的日志文件路径一致
    	weekly
    	compress
    	compresscmd /usr/bin/bzip2
    	compressoptions -9
    	notifempty
    	rotate 10               #滚动10次
    	size 10M
    	create 0777 syslog adm   #设置权限,方便windows连接samba服务器
    	compress                 #采用压缩
    	size 50M                 #文件大小50M以上的分割日志
    	dateext
    	dateformat .%s           #定义文件切割后的文件名,必须配合dateext使用
    	missingok
    	olddir /var/log/messages_archive
    	maxage 365
    	postrotate
    	/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) &>/dev/null
    	endscript
    }
     
    #强制测试配置
    logrotate /etc/logrotate.d/messages -d


    #客户端加入如下
    # Netfilter nflog
    local3.info @192.168.1.111
    # Log anything (except mail) of level info or higher.
    *.info;local3.none;mail.none;authpriv.none;cron.none @192.168.1.111

	

发表评论