linux基础之rsyslog

系统日志服务: 

CentOS5:  

syslog:   
   syslogd: system    klogd: kernel
 

CentOS6及7:

rsyslog:
    syslogd
    klogd

 rsyslog特性:

      多线程
      UDP,TCP,SSL,TLS,RELP
      Mysql,PGSQL,Oracle实现日志存储
      强大的过滤器,可实现过滤日志信息中任何部分
      自定义输出格式

一般中大型公司用的比较多的分布式日志存储分析系统:elk

分布式日志存储和搜索系统:elasticsearch
日志收集器:logstash
前端展示工具: kibana

日志收集方:

从功能或程序上对日志进行分类:

facility: 
  auth,aurhpriv,cron,daemon,kern,lpr,mail,mark,news,security,user,uucp,local0-local7,syslog

 日志级别:

priority:
    debug,info,notice,warn(warning),err(error),crit(critical),alert,emerg(panic)

 日志收集定义:

facility.priority  /var/log/messages

 指定级别:

*: 所有级别
none: 没有级别
priority: 此级别及更高级别的日志信息
=priority: 此级别

 rsyslog相关程序文件:

  主程序:rsyslogd
  配置文件:/etc/rsyslog.conf
  服务脚本:/etc/rc.d/init.d/rsyslog
举例:
    # vim /etc/ssh/sshd_config
            自定义日志分类:SyslogFacility local2
    # vim /etc/rsyslog.conf
            指明local2分类的日志所有级别下:local2.*       /var/log/sshd.log
   # service sshd restart
# service rsyslog restart
  重新登录ssh后可以在/var/log/sshd.log看到登录日志

rsyslog.conf配置文件:

RULES:
    facility.priority    target
    
    target:
        文件路径: 记录于指定日志文件中,通常应该在/var/log目录下,文件路径前的"-"表示异步写入
        用户: 将日志通知给指定用户
                *: 所有用户
       日志服务器:@host
                host: 必须监听在tcp或udp协议514端口上提供服务
        管道: |COMMAND
文件记录的日志的格式
    事件产生的日期时间    主机    进程pid:事件内容
有些日志记录二进制格式:/var/log/wtmp,/var/log/btmp
  /var/log/wtmp:当前系统上成功登陆的日志:
      查看日志: last
  /var/log/btmp:当前系统上失败的登录尝试
      查看日志: lastb
  
  lastlog命令: 显示当前系统上每一个用户最近一次的登录时间

rsyslog服务器:

日志信息存储目标指向TARGET为一台主机:

1. MODULES中启用模块:udp和tcp都可以,这里都启动好了
# vim /etc/rsyslog.conf
    
$ModLoad imudp
    $UDPServerRun 514
    $ModLoad imtcp
    $InputTCPServerRun 514
# netstat -tunl  //514在监听

2. 另一台电脑以本机作为日志服务器

# vim /etc/rsyslog.conf
比如就指定这个吧
*.info;mail.none;authpriv.none;cron.none @192.168.2.104  //指向日志服务器

将日志记录于mysql数据库中

1. rsyslog服务器安装驱动:rsyslog-mysql

# yum install rsyslog-mysql

2. mysql服务器授权就可以了

MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'syslog'@'192.168.2.%' IDENTIFIED BY 'syslogpass';
MariaDB [(none)]> FLUSH PRIVILEGES;

顺便查看一下mysql的配置文件有没有跳过名称解析,没有的话加上下面两行

# vim /etc/my.cnf
      skip_name_resolve = on
    innodb_file_per_table = on
# service mysqld restart

3. rsyslog服务器以重定向方式导入Syslog数据库及表,当然也可以自己去手动创建

# mysql -usyslog -h192.168.2.105 -p < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

4. 修改rsyslog服务器配置文件:

1.Modules这一个条目下面添加:
  $ModLoad ommysql    //加载连接mysql模块
2. RULES下面添加:
  *.info;mail.none;authpriv.none;cron.none  :ommysql:192.168.2.105,Syslog,syslog,syslogpass//将日志发往ommysql输出过滤器,服务器地址,数据库,连接数据库的用户名,密码

 5.测试

现在在rsyslog服务器/var/log/messages下已经看不到日志了,在数据库中可以查看

连接数据库后:
  USE Syslog;
  SELECT * FROM SyslogEvents\G

6. 使用日志分析前端工具:loganalyzer

 安装服务器环境

# yum install httpd php php-mysql

 下载loganalyzer:http://download.adiscon.com/loganalyzer/loganalyzer-4.1.5.tar.gz

安装analyzer

# tar xf loganalyzer-4.1.5.tar.gz
# mv

拷贝src和contrib下的脚本到loganalyzer下

# tar xf loganalyzer-4.1.5.tar.gz -C /var/www/html/
# mv loganalyzer-4.1.5/ log
# mv log/src loganalyzer
# cp log/contrib/* loganalyzer/
# cd loganalyzer/
执行下脚本,没问题的话修改配置文件权限
# chmod +x *.sh
# ./configure.sh
# ./secure.sh
# chmod 666 config.php  //没有的话会自动创建一个

 按步骤设置好loganalyzer第一次登陆设置

安装php-gd显示mysql数据图形

# yum install php-gd
# service httpd reload

 

猜你喜欢

转载自www.cnblogs.com/ckh2014/p/10827332.html