loganalyzer

在Linux中,服务、内核输出的日志信息都由rsyslog服务收集、展示。php

1、ryslog 分为两部分: html

1. syslogd,用户手机应用程序产生的日志信息。
        2. klogd , 用于收集内核启动时输出的信息,一般保存为二进制文件,可有dmesg命令查看。

2、rsyslog RPM包组成:node

[auditor@node1 ~]$ rpm -ql rsyslog
/etc/logrotate.d/syslog
/etc/pki/rsyslog
/etc/rsyslog.conf
/etc/rsyslog.d
/etc/sysconfig/rsyslog
/usr/bin/rsyslog-recover-qi.pl
/usr/lib/systemd/system/rsyslog.service
/usr/lib64/rsyslog
/usr/lib64/rsyslog/imdiag.so
/usr/lib64/rsyslog/imfile.so
/usr/lib64/rsyslog/imjournal.so
/usr/lib64/rsyslog/imklog.so
/usr/lib64/rsyslog/immark.so
/usr/lib64/rsyslog/impstats.so
/usr/lib64/rsyslog/imptcp.so
/usr/lib64/rsyslog/imtcp.so
/usr/lib64/rsyslog/imudp.so
/usr/lib64/rsyslog/imuxsock.so
/usr/lib64/rsyslog/lmnet.so
/usr/lib64/rsyslog/lmnetstrms.so
/usr/lib64/rsyslog/lmnsd_ptcp.so
/usr/lib64/rsyslog/lmregexp.so
/usr/lib64/rsyslog/lmstrmsrv.so
/usr/lib64/rsyslog/lmtcpclt.so
/usr/lib64/rsyslog/lmtcpsrv.so
/usr/lib64/rsyslog/lmzlibw.so
/usr/lib64/rsyslog/mmanon.so
/usr/lib64/rsyslog/mmcount.so
/usr/lib64/rsyslog/mmutf8fix.so
/usr/lib64/rsyslog/omjournal.so
/usr/lib64/rsyslog/ommail.so
/usr/lib64/rsyslog/omprog.so
/usr/lib64/rsyslog/omruleset.so
/usr/lib64/rsyslog/omstdout.so
/usr/lib64/rsyslog/omtesting.so
/usr/lib64/rsyslog/omuxsock.so
/usr/lib64/rsyslog/pmaixforwardedfrom.so
/usr/lib64/rsyslog/pmcisconames.so
/usr/lib64/rsyslog/pmlastmsg.so
/usr/lib64/rsyslog/pmrfc3164sd.so
/usr/lib64/rsyslog/pmsnare.so
/usr/sbin/rsyslogd
/usr/share/doc/rsyslog-7.4.7
/usr/share/doc/rsyslog-7.4.7/AUTHORS
/usr/share/doc/rsyslog-7.4.7/COPYING
/usr/share/doc/rsyslog-7.4.7/COPYING.ASL20
/usr/share/doc/rsyslog-7.4.7/COPYING.LESSER
/usr/share/doc/rsyslog-7.4.7/ChangeLog
/usr/share/man/man5/rsyslog.conf.5.gz
/usr/share/man/man8/rsyslogd.8.gz
/var/lib/rsyslog

/etc/rsyslog.conf                                                   #配置文件
/usr/lib64/*.so                                                       #rsyslog提供的模块,其中im开头的用于收集日志,om开头的模块用于输出、存储日志

3、rsyslog 配置文件mysql

/etc/rsyslog.conf 
    #### MODULES ####   用于加载模块

    # Provides UDP syslog reception  定义UDP/514端口接收日志
    #$ModLoad imudp
    #$UDPServerRun 514

    # Provides TCP syslog reception  定义TCP/514端口接收日志
    #$ModLoad imtcp
    #$InputTCPServerRun 514

    #### GLOBAL DIRECTIVES ####  定义全局选项

    #### RULES ####              定义收集服务、程序什么级别的日志以及存放何处
    格式:
    Facility.Priority                                       Target
    Facility:                                   定义设施,按功能对日志进行分类
            a.  Auth                     认证相关类的日志
            b.  AuthPriv               认证、受权相关类的日志
            c.  cron                      计划任务日志
            d.  daemon                守护进程类日志
            e.  local0-local7         容许用户自定义日志类
    Priority:
                debug                  调试日志
                info                      信息日志
                notice                 通知日志
                warn                     警告日志
                error                    错误日志
                crit                        蓝色警报日志
                alert                     橙色警报日志
                emerg                  红色警报日志
    Target:
                @Host                        将日志发送至某一主机
                USER_NAME             将日志发送至某在线用户
                /PATH/TO/SOMEFILE                                                       将日志发送至某一文件路径,例如/var/log
                ommysql,host,db_name,user,password                            将日志发送至MySQL中存储

4、测试rsyslogsql

需求: 
   将node1做为rsyslog Server,接受node2发送过来的日志。
    node1:192.168.80.10 
    node2:192.168.80.11 

node1的配置:
    #开启日志接受功能 UDP/514
    [root@node1 ~]# vim /etc/rsyslog.conf 
    $ModLoad imudp
    $UDPServerRun 514

    [root@node1 ~]# systemctl restart rsyslog
    [root@node1 ~]# ss -unl | grep 514
    UNCONN     0      0            *:514                      *:*                  
    UNCONN     0      0           :::514                     :::*                  

 node2的配置:
    [root@node2 ~]# vim /etc/rsyslog.conf 
    *.*                                                     @192.168.80.10:514
    [root@node2 ~]# systemctl restart rsyslog
    [root@node2 ~]# systemctl restart vsftpd

 验证:其中有很多node2的vsftpd日志
        [root@node1 ~]# tailf /var/log/messages 
        Jul 14 02:15:12 node2 systemd: Starting Vsftpd ftp daemon...
        Jul 14 02:15:12 node2 systemd: Started Vsftpd ftp daemon.
        Jul 14 02:15:46 node2 systemd: Stopping Vsftpd ftp daemon...
        Jul 14 02:15:46 node2 systemd: Starting Vsftpd ftp daemon...
        Jul 14 02:15:46 node2 systemd: Started Vsftpd ftp daemon.
        Jul 14 02:15:51 node2 systemd: Starting System Logging Service...
        Jul 14 02:15:51 node2 systemd: Started System Logging Service.
        Jul 14 02:15:58 node2 systemd: Stopping Vsftpd ftp daemon...
        Jul 14 02:15:58 node2 systemd: Starting Vsftpd ftp daemon...
        Jul 14 02:15:58 node2 systemd: Started Vsftpd ftp daemon.
        Jul 14 02:19:49 node2 kernel: perf: interrupt took too long (23735 > 23313), lowering kernel.perf_event_max_sample_rate to 8000
        Jul 27 07:00:01 node1 systemd: Started Session 194 of user root.
        Jul 27 07:00:01 node1 systemd: Starting Session 194 of user root.
        Jul 27 07:01:01 node1 systemd: Started Session 195 of user root.
        Jul 27 07:01:01 node1 systemd: Starting Session 195 of user root.
        Jul 14 02:21:08 node2 systemd: Starting Cleanup of Temporary Directories...
        Jul 14 02:21:08 node2 systemd: Started Cleanup of Temporary Directories.
        Jul 14 02:21:37 node2 rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="6564" x-info="http://www.rsyslog.com"] exiting on signal 15.
        Jul 14 02:21:37 node2 rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="6636" x-info="http://www.rsyslog.com"] start
        Jul 14 02:21:37 node2 systemd: Stopping System Logging Service...
        Jul 14 02:21:37 node2 systemd: Starting System Logging Service...
        Jul 14 02:21:37 node2 systemd: Started System Logging Service.

5、rsyslog + loganalyzer数据库

loganazer 是一个PHP写的日志分析、展示程序,运行须要LAMP环境。
由ryslog负责收集日志、loganazer负责分析、展示、MySQL负责存储日志。apache

loganalyzer 官网: http://loganalyzer.adiscon.com/
 
下面咱们搭建个rsyslog+loganalyzer试试水:
node1 : 192.168.80.10     LAMP、Loganalyzer、RsyslogServer、RsyslogClient
node2 : 192.168.80.11     RsyslogClientvim

1. 安装LAMP运行环境
    [root@node1 ~]# yum -y install httpd php php-mysql mariadb mariadb-server
2. 安装Loganalyzer
    #安装mysql模块,用于rsyslog驱动MySQL
    [root@node1 ~]# yum -y install rsyslog-mysql

    [root@node1 ~]# vim /etc/rsyslog.conf
            #### MODULES ####  加载MySQL模块,必需要在MODULES段中
            $ModLoad ommysql

            #开启TCP/514 、UDP/514端口用于收集日志
            # Provides UDP syslog reception
            $ModLoad imudp
            $UDPServerRun 514

            # Provides TCP syslog reception
            $ModLoad imtcp
            $InputTCPServerRun 514

            #将收集到的全部日志都发往MySQL
            *.*                     :ommysql:192.168.80.10,RsyslogDB,rsyslog,123

            #建立用户、数据库
    MariaDB [(none)]> CREATE DATABASE RsyslogDB;
    MariaDB [(none)]> GRANT ALL ON RsyslogDB.*  TO 'rsyslog'@'%' IDENTIFIED BY '123';

    #查看MySQL模块中的文件,并导入sql脚本
    [root@node1 ~]# rpm -ql rsyslog-mysql
            /usr/lib64/rsyslog/ommysql.so
            /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
    #注意:这个脚本会建立数据库,根据本身状况修改此脚本,我上面已经建立过数据RsyslogDB了因此改动内容以下:

  [root@node1 ~]# vim rsyslog-mysql.sql 
  USE RsyslogDB;
  CREATE TABLE SystemEvents
  (
        ID int unsigned not null auto_increment primary key,
        CustomerID bigint,
        ReceivedAt datetime NULL,
        DeviceReportedTime datetime NULL,
        Facility smallint NULL,
        Priority smallint NULL,
        FromHost varchar(60) NULL,
        Message text,
        NTSeverity int NULL,
        Importance int NULL,
        EventSource varchar(60),
        EventUser varchar(60) NULL,
        EventCategory int NULL,
        EventID int NULL,
        EventBinaryData text NULL,
        MaxAvailable int NULL,
        CurrUsage int NULL,
        MinUsage int NULL,
        MaxUsage int NULL,
        InfoUnitID int NULL ,
        SysLogTag varchar(60),
        EventLogType varchar(60),
        GenericFileName VarChar(60),
        SystemID int NULL
  );

  CREATE TABLE SystemEventsProperties
  (
        ID int unsigned not null auto_increment primary key,
        SystemEventID int NULL ,
        ParamName varchar(255) NULL ,
        ParamValue text NULL
  );
  [root@node1 ~]# mysql -ursyslog -p123  -D RsyslogDB <rsyslog-mysql.sql 

    #安装程序本身去官网下
    [root@node1 ~]# tar -xzf loganalyzer-4.1.6.tar.gz  -C /var/www/html/
    [root@node1 html]# ln -sv loganalyzer-4.1.6 loganalyzer
            ‘loganalyzer’ -> ‘loganalyzer-4.1.6’
    [root@node1 html]# chown -R apache loganalyzer
    [root@node1 ~]# touch  /var/www/html/loganalyzer/config.php 
    [root@node1 html]#  chmod 666  /var/www/html/loganalyzer/config.php

    #重启服务 
    [root@node1 html]# systemctl restart  mariadb httpd rsyslog

    3. 客户端配置
    [root@node2 ~]# vim /etc/rsyslog.conf 
            *.*                                                     @192.168.80.10:514
    [root@node2 ~]# systemctl restart rsyslog

访问: http://192.168.80.10/loganalyzer/src
loganalyzertcp

loganalyzer
loganalyzer
loganalyzer

loganalyzer
loganalyzer
loganalyzer
loganalyzer

loganalyzer

相关文章
相关标签/搜索