热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RHEL6.x搭建rsyslog日志服务器和loganalyzer日志分析工具

RHEL6.x搭建rsyslog日志服务器和loganalyzer日志分析工具rs

  RHEL 6.x  搭建rsyslog日志服务器和loganalyzer日志分析工具

===============================================

rsyslog的介绍

logrotate日志滚动的介绍

rsyslog的存储途径

基于web的loganalyzer日志分析工具的搭建

======================================================

一、rsyslog的介绍

  Linux的日志记录了用户在系统上一切操作,看日志去分析系统的状态是运维人员必须掌握的基本功。

rsyslog日志服务器的优势:

1、日志统一,集中式管理  

2、日志实时传送到一个更加安全的远端服务器上,真正记录用户行为,使日志的2次更改可能性大大降低,从而能够对日志进行真实回放,便于问题追踪。

rsyslog的新功能:

    rsyslog是一个加强版的syslog,具有各种各样的新功能,典型的有:

   1、直接将日志写入到数据库。

   2、日志队列(内存队列和磁盘队列)。

   3、灵活的模板机制,可以得到多种输出格式。

   4、插件式结构,多种多样的输入、输出模块。

   5、可以把日志存放在Mysql ,PostgreSQL,Oracle等数据库中

rsyslog的软件包

[root@jie1 ~]# rpm -qa | grep rsyslog
rsyslog-5.8.10-6.el6.x86_64 #软件包系统默认已经安装
[root@jie1 ~]# rpm -ql rsyslog #只显示了部分信息
/etc/logrotate.d/syslog
/etc/rsyslog.conf #rsyslog的配置文件
/etc/sysconfig/rsyslog
/lib64/rsyslog/imfile.so
/lib64/rsyslog/imklog.so #rsyslog的模块,i开头的是输入模块
/lib64/rsyslog/immark.so
/lib64/rsyslog/impstats.so
/lib64/rsyslog/imptcp.so
/lib64/rsyslog/imtcp.so
/lib64/rsyslog/imudp.so
/lib64/rsyslog/imuxsock.so
/lib64/rsyslog/lmnet.so
/lib64/rsyslog/lmnetstrms.so
/lib64/rsyslog/lmnsd_ptcp.so
/lib64/rsyslog/lmregexp.so
/lib64/rsyslog/lmstrmsrv.so
/lib64/rsyslog/lmtcpclt.so
/lib64/rsyslog/lmtcpsrv.so
/lib64/rsyslog/lmzlibw.so
/lib64/rsyslog/ommail.so #o开头的模块是输出模块
/lib64/rsyslog/omprog.so
/lib64/rsyslog/omruleset.so
/lib64/rsyslog/omtesting.so
/lib64/rsyslog/omuxsock.so
/lib64/rsyslog/pmlastmsg.so


rsyslog配置文件(/etc/rsyslog.conf)的详解

#### MODULES 日志的模块####$ModLoad imuxsock   #imuxsock是模块名,支持本地系统日志的模块$ModLoad imklog     #imklog是模块名, 支持内核日志的模块#$ModLoad immark    #immark是模块名,支持日志标记#$ModLoad imudp     #imupd是模块名,支持udp协议#$UDPServerRun 514  #允许514端口接收使用UDP和TCP协议转发过来的日志#$ModLoad imtcp     #imtcp是模块名,支持tcp协议#$InputTCPServerRun 514


#### GLOBAL DIRECTIVES ####定义全局日志格式的指令$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定义日志格式默认模板$IncludeConfig /etc/rsyslog.d/*.conf   #载入rsyslog.d文件中所有以conf结尾的文件#### RULES ####*.info;mail.none;authpriv.none;cron.none    /var/log/messages#####记录所有日志类型的info级别以及大于info级别的信息到/var/log/messages,但是mail邮件信息,authpriv验证方面的信息和cron时间#任务相关的信息除外authpriv.*             /var/log/secure#####authpriv验证相关的所有信息存放在/var/log/securemail.*                -/var/log/maillog#####邮件的所有信息存放在/var/log/maillog; 这里有一个-符号, 表示是使用异步的方式记录, 因为日志一般会比较大cron.*                /var/log/cron####计划任务有关的信息存放在/var/log/cron*.emerg                * (*表示所有用户)###记录所有的大于等于emerg级别信息, 以wall方式发送给每个登录到系统的人uucp,news.crit        /var/log/spooler####记录uucp,news.crit等存放在/var/log/spoolerlocal7.*              /var/log/boot.log####本地服务器的启动的所有日志存放在/var/log/boot.log中


###rsyslog.conf中日志规则的定义的格式facitlity.priority          Target#facility: 日志设备(可以理解为日志类型):==============================================================auth         #pam产生的日志,认证日志authpriv     #ssh,ftp等登录信息的验证信息,认证授权认证cron         #时间任务相关kern         #内核lpr          #打印mail         #邮件mark(syslog) #rsyslog服务内部的信息,时间标识news         #新闻组user         #用户程序产生的相关信息uucp         #unix to unix copy, unix主机之间相关的通讯local 1~7    #自定义的日志设备===============================================================#priority: 级别日志级别:=====================================================================debug           #有调式信息的,日志信息最多info            #一般信息的日志,最常用notice          #最具有重要性的普通条件的信息warning, warn   #警告级别err, error      #错误级别,阻止某个功能或者模块不能正常工作的信息crit            #严重级别,阻止整个系统或者整个软件不能正常工作的信息alert           #需要立刻修改的信息emerg, panic    #内核崩溃等严重信息###从上到下,级别从低到高,记录的信息越来越少,如果设置的日志内性为err,则日志不会记录比err级别低的日志,只会记录比err更高级别的日志,也包括err本身的日志。=====================================================================Target:  #文件, 如/var/log/messages  #用户, root,*(表示所有用户)  #日志服务器,@172.16.22.1  #管道        | COMMAND


二、logrotate日志滚动的介绍

     所有的日志文件都会随着时间的推移和访问次数的增加而迅速增长,因此必须对日志文件进行定期清理以免造成磁盘空间的不必要的浪费,同时也加快了管理员查看日志所用的时间。因而logrotate就非常有存在的必要了,Redhat系统中已经默然安装logrotate且利用logrotate设置了相关对rsyslog日志迅速增长的设置。

       logrotate的执行由crond服务实现。在/etc/cron.daily目录中,有个文logrotate,它实际上是个shell script,用来启动logrotate。

       logrotate程序每天由cron在指定的时间(/etc/crontab)启动。

logrotate的软件包

[root@jie1 ~]# rpm -qa | grep logrotatelogrotate-3.7.8-16.el6.x86_64  #日志回滚的软件包默认已经安装[root@jie1 ~]# rpm -ql logrotate/etc/cron.daily/logrotate/etc/logrotate.conf   #日志回滚的配置文件/etc/logrotate.d      #日志回滚的子目录/usr/sbin/logrotate/usr/share/doc/logrotate-3.7.8/usr/share/doc/logrotate-3.7.8/CHANGES/usr/share/doc/logrotate-3.7.8/COPYING/usr/share/man/man5/logrotate.conf.5.gz/usr/share/man/man8/logrotate.8.gz/var/lib/logrotate.status

logrotate的配置文件(/etc/logrotate.conf)详解

[root@jie1 ~]# sed -e '/^#/d'  -e '/^$/d' /etc/logrotate.confweekly      #每周清理一次日志文件rotate 4    #保存四个轮换日志create      #清除旧日志的同时,创建新的空日志文件dateext     #使用日期为后缀的回滚文件  #可以去/var/log目录下看看include /etc/logrotate.d  #包含/etc/logrotate.d目录下的所有配置文件/var/log/wtmp {      #对/var/log/wtmp这个日志文件按照下面的设定日志回滚    monthly                    #每月轮转一次    create 0664 root utmp      #设置wtmp这个日志文件的权限,属主,属组    minsize 1M                 #日志文件必须大于1M才会去轮换(回滚)    rotate 1                   #保存一个轮换日志}/var/log/btmp {    missingok                #如果文件丢失不报错    monthly    create 0600 root utmp    rotate 1}[root@jie1 ~]# cat /etc/logrotate.d/syslog/var/log/cron    #这些文件是rsyslog.conf文件中全局配置定义中指定的Target的路径/var/log/maillog/var/log/messages/var/log/secure/var/log/spooler{    sharedscripts    postrotate   # 轮换之后重启rsyslog服务    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true    endscript}


三、rsyslog的存储途径

    a)日志存储在指定的文件中

[root@jie1 ~]# vim /etc/rsyslog.conf############vim /etc/rsyslog.conf#################################====注释掉两行,然后添加一行#*.info;mail.none;authpriv.none;cron.none   /var/log/messages*.*                                         /systemlog/jie.log#authpriv.*                                 /var/log/secure##################################################################*.info;mail.none;authpriv.none;cron.none        /var/log/messages===#这行表示,所有facitlity(设施)的info消息记录,及info级别以上的记录都会保存到 /var/log/messages文件中,除了邮件的所有信息,认证授权的所有信息,计划任务的所有信息。#authpriv.*           /var/log/secure===#这行表示认证授权的所有信息,都会保存在/var/log/secure文件中*.*                 /systemlog/jie.log===#添加的这行表示所有设施的所有信息都会保存在 /systemlog/jie.log文件中,而且此文件不必自己创建,启动rsyslog服务时系统会自动创建,而且权限都是600


   b)日志存储在指定的rsyslog服务器中

rsyslog客户端的配置:

[root@jie3 ~]# vim /etc/rsyslog.conf#############/etc/rsyslog.conf############################################*.info;mail.none;authpriv.none;cron.none         /var/log/messages*.*                            @172.16.22.1  #添加此行,注释掉其他两行#authpriv.*                                      /var/log/secure########################################################################[root@jie3 ~]# service rsyslog restartShutting down system logger:                               [  OK  ]Starting system logger:                                    [  OK  ]

rsyslog服务器的配置:

[root@jie1 ~]# grep -v "^#" /etc/rsyslog.conf | grep -v "^$"######修改配置文件只需开启两个模块和协议支持的端口$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)$ModLoad imklog   # provides kernel logging support (previously done by rklogd)$ModLoad imudp            #开启支持upd的模块$UDPServerRun 514         #允许接收udp 514的端口传来的日志ModLoad imtcp             #开启支持tcp的模块$InputTCPServerRun 514    #允许接收tcp 514的端口传来的日志$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat$IncludeConfig /etc/rsyslog.d/*.conf*.info;mail.none;authpriv.none;cron.none                /var/log/messagesauthpriv.*                                              /var/log/securemail.*                                                  -/var/log/maillogcron.*                                                  /var/log/cron*.emerg                                                 *uucp,news.crit                                          /var/log/spoolerlocal7.*                                                /var/log/boot.log$template SpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n":programname, startswith, "spice-vdagent"   /var/log/spice-vdagent.log;SpiceTmpl#################################[root@jie1 ~]# service rsyslog restartShutting down system logger:                               [  OK  ]Starting system logger:                                    [  OK  ][root@jie1 ~]#



 c)日志存储在指定的数据库服务器中


思路:

1、安装mysql服务器,且要安装rsyslog连接mysql的驱动

2、解决生成rsyslog服务器的日志特定的格式,

3、在rsyslog配置文件中加载连接mysql的模块,把日志存储到mysql中

rsyslog+Mysql服务器端的配置:

[root@jie1 log]# yum -y install mysql-server rsyslog-mysql mysql#安装mysql服务器和rsyslog连接mysql的驱动[root@jie1 ~]# rpm -ql rsyslog-mysql#查看rsyslog-mysql安装生成了那些文件/lib64/rsyslog/ommysql.so/usr/share/doc/rsyslog-mysql-5.8.10/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql[root@jie1 ~]# service mysqld start   Starting mysqld:                        [  OK  ][root@jie1 ~]# mysqladmin -u root password redhat#设置mysql的密码[root@jie1 ~]# mysql -u root -pEnter password:  #登录mysql服务器mysql> show databases; #显示数据库服务器中没有日志的数据库+--------------------+| Database           |+--------------------+| information_schema || mysql              || test               |+--------------------+3 rows in set (0.00 sec)mysql> \qBye[root@jie1 ~]# cd /usr/share/doc/rsyslog-mysql-5.8.10/#日志文件sql脚本的路径[root@jie1 rsyslog-mysql-5.8.10]# lscreateDB.sql[root@jie1 rsyslog-mysql-5.8.10]# mysql -u root -p  show databases;+--------------------+| Database           |+--------------------+| information_schema || Syslog             || mysql              || test               |+--------------------+4 rows in set (0.01 sec)mysql> use Syslog;  #Syslog即是记录日志文件的数据库Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+------------------------+| Tables_in_Syslog       |+------------------------+| SystemEvents           || SystemEventsProperties |+------------------------+2 rows in set (0.00 sec)mysql> grant all on Syslog.* to 'syslogroot'@'127.0.0.1' identified by 'syslogpass';  #设置用户访问数据库服务器中Syslog数据库的用户名和密码Query OK, 0 rows affected (0.00 sec)mysql> grant all on Syslog.* to 'syslogroot'@'172.16.22.1' identified by 'syslogpass';Query OK, 0 rows affected (0.04 sec)mysql> flush privileges;  #重读授权表,及时生效Query OK, 0 rows affected (0.00 sec)mysql> \qBye[root@jie1 rsyslog-mysql-5.8.10]#cd /[root@jie1 /]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#"#####vim  /etc/ryslog.conf#####################################$ModLoad imuxsock$ModLoad imklog$ModLoad imudp           #加载udp的模块$UDPServerRun 514        #允许接收udp 514的端口传来的日志$ModLoad imtcp           #加载tcp的模块$InputTCPServerRun 514   #允许接收tcp 514的端口传来的日志$ModLoad ommysql         #加载mysql的模块$ActionFileDefaultTemplateRSYSLOG_TraditionalFileFormat$IncludeConfig /etc/rsyslog.d/*.conf*.*       :ommysql:172.16.22.1,Syslog,syslogroot,syslogpass   #添加这行,把其他行都注释掉,这行表示把所有的设施的所有日志都记录到数据库服务器中的Syslog数据库中,以syslogroot用户,syslogpass密码访问数据库local7.*                          /var/log/boot.log$template SpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n":programname, startswith, "spice-vdagent"   /var/log/spice-vdagent.log;SpiceTmpl######################################################################[root@jie1 /]# service rsyslog restartShutting down system logger:                               [  OK  ]Starting system logger:                                    [  OK  ]

rsyslog客户端的配置:

[root@jie3 ~]# sed -e '/^$/d' -e '/^#/d' /etc/rsyslog.conf################ /etc/rsyslog.conf######################$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)$ModLoad imklog   # provides kernel logging support (previously done by rklogd)$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat$IncludeConfig /etc/rsyslog.d/*.conf*.*       @172.16.22.1 #添加这行用于和服务器通信*.*       :ommysql:172.16.22.1,Syslog,syslogroot,syslogpass #添加这行,把其他行都注释掉,这行表示把所有的设施的所有日志都记录到数据库服务器中的Syslog数据库中,以syslogroot用户,syslogpass密码访问数据库$template SpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n":programname, startswith, "spice-vdagent"   /var/log/spice-vdagent.log;SpiceTmpl####################################################################[root@jie3 ~]# service rsyslog restartShutting down system logger:                               [  OK  ]Starting system logger:                                    [  OK  ]

验证客户端的日志文件存放位置:

1)验证是否存放在客户端本地

2)验证是否存在服务器的/var/log/messages里面


3)验证是否存放在服务器的mysql数据库中


虽然日志存放在mysql数据库服务器中,是解决了日志集中管理,但是存放在mysql服务器中让管理人员头疼的是不便于查看这些大量的日志,于是乎搭建一个日志分析工具就非常的有必要性了。

四、基于web的loganalyzer日志分析工具的搭建

  本环境是针对上面的日志存放在mysql服务器中不方便查看,配置loganalyzer日志分析工具来分析查看日志

rsyslog服务器的配置步骤:

1、安装httpd,php,php-gd,php-mysql

    httpd用来提供web服务

     php使apache支持php,因为loganalyzer是用php编写

     php-mysql用于loganalyzer连接数据库

     php-gd用于绘图

[root@jie1 ~]# yum -y install httpd php php-mysql php-gd[root@jie1 ~]# mkdir -pv /web/loganalyzer  #存放loganalyzer的网页文件mkdir: created directory `/web'mkdir: created directory `/web/loganalyzer'

2、下载loganalyzer源码包

[root@jie1 ~]# lsanaconda-ks.cfg  install.log  install.log.syslog  loganalyzer-3.6.4.tar.gz[root@jie1 ~]# tar xf loganalyzer-3.6.4.tar.gz[root@jie1 ~]# lsanaconda-ks.cfg  install.log.syslog  loganalyzer-3.6.4.tar.gzinstall.log      loganalyzer-3.6.4[root@jie1 ~]# cd loganalyzer-3.6.4[root@jie1 loganalyzer-3.6.4]# lsChangeLog  contrib  COPYING  doc  INSTALL  src[root@jie1 loganalyzer-3.6.4]# mv src/* /web/loganalyzer/  #把src目录的所有文件移到存放loganalyzer的文件中[root@jie1 loganalyzer-3.6.4]# cd contrib/[root@jie1 contrib]# lsconfigure.sh  secure.sh[root@jie1 contrib]# mv ./*.sh  /web/loganalyzer/  #把脚本文件也移到loganalyzer文件中

3、执行脚本

[root@jie1 contrib]#cd /web/loganalyzer/[root@jie1 loganalyzer]# bash configure.sh

4、修改httpd的配置文件,新建一个虚拟主机

vim /etc/httpd/conf/httpd.conf##################ServerName 172.16.22.1:80DirectoryIndex index.php index.html index.html.var#DocumentRoot "/var/www/html"     #注释掉默认存放网页文件的路径  DocumentRoot /web/loganalyzer   #指定存放loganalyzer网页文件的路径  ServerName www.jie.com#################

5、重启服务,创建loganalyzer的数据库,并授权

[root@jie1 loganalyzer]# service httpd restartStopping httpd:                                            [  OK  ]Starting httpd:                                            [  OK  ][root@jie1 loganalyzer]# mysql -u root -pEnter password:mysql> create database loganalyzer;Query OK, 1 row affected (0.04 sec)mysql> grant all on loganalyzer.* to lyzeruser@'172.16.22.1' identified by 'lyzeruser';Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)


6、安装loganalyzer



本文出自 “技术之路---桀” 博客,请务必保留此出处http://litaotao.blog.51cto.com/6224470/1283871


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
author-avatar
塑料调色cz
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有