热门标签 | 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


推荐阅读
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在2015年1月的MySQL内核报告中,我们详细探讨了性能优化和Group Commit机制的改进。尽管网上已有大量关于Group Commit的资料,本文将简要回顾其发展,并重点分析MySQL 5.6及之前版本中引入的二进制日志(Binlog)对性能的影响。此外,我们还将深入讨论最新的优化措施,如何通过改进Group Commit机制显著提升系统的整体性能和稳定性。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • SQL Server 2008 默认使用1433端口进行通信,但有时会误认为是5432端口,后者实际上已被IANA(互联网号码分配机构)指定为PostgreSQL的默认端口。本文详细解析了SQL Server 2008的端口配置,并提供了增强安全性的配置建议,包括更改默认端口、启用防火墙规则和实施严格的访问控制策略,以减少潜在的安全风险。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 利用 Python Socket 实现 ICMP 协议下的网络通信
    在计算机网络课程的2.1实验中,学生需要通过Python Socket编程实现一种基于ICMP协议的网络通信功能。与操作系统自带的Ping命令类似,该实验要求学生开发一个简化的、非标准的ICMP通信程序,以加深对ICMP协议及其在网络通信中的应用的理解。通过这一实验,学生将掌握如何使用Python Socket库来构建和解析ICMP数据包,并实现基本的网络探测功能。 ... [详细]
  • 端口转发(Port Forwarding)类似于服务重定向,许多路由器中也称其为虚拟服务器(Virtual Server)。通过合理配置端口转发,可以实现外部网络对内部网络中特定设备和服务的高效访问,从而提高通信效率和灵活性。此外,正确设置端口转发还能增强网络安全,确保只有授权的流量能够进入内网,有效防止未授权访问和潜在威胁。 ... [详细]
  • ——pun的配置,以及实现头盔以及两个手柄的同步。下载完pun并导入后如图所示有这些东西,pun的介绍还是很清楚的,有很多demo可以学习,而且文档自带。很容易上手。首先,就是服务器的配置了。 ... [详细]
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社区 版权所有