rsyslog日志存储到mysql数据库中并利用loganalyzer进行web图形化分析管理

概述

    系统日志的重要性,相信大家都深有体会,当发生故障后,第一时间就是查看相关报错信息和日志信息,以定位问题所在,还可以基于日志,进行日志的分析,从而获取系统运行状态的一些规律,本篇就介绍关于系统日志的先关内容,具体分为:

    1、rsyslog相关概念的介绍

    2、自定义日志存储的信道(facility)和存储位置,让rsyslog作为服务端记录rsyslog客户端的日志信息

    3、定义rsyslog的日志存储在mysql数据库中

    4、利用loganalyzer实现对存储在mysql数据库中的rsyslog日志信息,进行web图形化分析管理

环境:

    CentOS7系统,IP为10.1.32.72

    LAMP组合采用:yum方式的rpm包安装

        httpd-2.4

        php-fpm(也就是php基于fastcgi方式与httpd交互的实现)

        mariadb

    

第一章    rsyslog相关概念的介绍

    

    1、rsyslog是什么

        rsyslog是系统上用来进行日志管理的工具,其C/S架构的程序,可以为当前系统记录系统相关的日志信息,也支持为其他软件或其他的系统记录日志信息,其相关特性表现为:

            多线程工作;

            基于UDP、TCP、协议,还可以基于tls/ssl进行加密通信,还可以基于RELP进行通信;

            存储日志信息于MySQL、PostgreSQL(PGSQL)、Oracle等RDBMS;

            强大的过滤器,实现过滤日志信息中任何部分的内容;

            自定义的输出格式;

    2、rsyslog程序环境

        程序包:

            rsyslog   程序包

            rsyslog-mysql   支持将日志信息记录到mysql的程序包

        配置文件:

            /etc/rsyslog.conf、/etc/rsyslog.d/*.conf

        主程序:

            /usr/sbin/rsyslogd

        模块组件:

            /usr/lib64/rsyslog/

        Unit file:

            /usr/lib/systemd/system/rsyslog.service

      

    3、rsyslog相关的术语

        facility:收集日志的通道设施,信道,可以理解为日志通过那个虚拟设备发送进来

        常见的facility有:  

            auth         # 认证相关的

            authpriv     # 权限,授权相关的

            cron         # 任务计划相关的

            daemon       # 守护进程相关的

            kern         # 内核相关的

            lpr          # 打印相关的

            mail         # 邮件相关的

            mark         # 标记相关的

            news         # 新闻相关的

            security    # 安全相关的,与auth 类似  

            syslog      # syslog自己的

            user        # 用户相关的

            uucp        # unix to unix cp 相关的

            local0 到 local7      # 用户自定义使用

            *           # *表示所有的facility 

        priority:(log level)日志的级别,一般有以下几种级别(从低到高)     

            debug           # 程序或系统的调试信息

            info            # 一般信息

            notice          # 不影响正常功能,需要注意的消息

            warning/warn    # 可能影响系统功能,需要提醒用户的重要事件

            err/error       # 错误信息

            crit            # 比较严重的

            alert           # 必须马上处理的

            emerg/panic     # 会导致系统不可用的

            *               # 表示所有的日志级别

            none            # 跟* 相反,表示啥也没有 

        target:(动作)日志记录的位置,常见的有:

            文件:

                将指定的日志信息记录到指定的文件中

            -文件:

                表示将日志信息记录到指定的文件中,-表示异步写入

            用户:

                将日志事件通知给指定的用户,通常是将日志信息发送给登录到当前系统上的所有用户的终端

            日志服务器:

                格式为@RSYSLOG_SERVER  ,表示将日志信息发送给指定的日志服务器

            管道:

                格式为 |COMMAND  表示将日志信息管道送给指定的命令

        

    4、记录日志定义的格式为:

        facility.priority    target

        表示将哪个信道传进来的日志,哪个日志级别(及其之上的日志级别),记录到哪个目标中

        facility格式:

            *   表示所有的facility

            FACI1,FACI2,FACI1,…   列表中给定的所有facility

            FACI1.PRI1;FACI2.PRI2;FACI3.PRI3;…  列表中给定的facility和对应的priority及其之上级别的记录

        priority格式:

            *   所有级别

            none   没有级别,不记录日志

            PRIORITY:此级别(含)及其以上的所有级别

            =PRIORITY: 仅指定的级别

        例如:     

            *.info;mail.none;authpriv.none;cron.none                /var/log/messages

            表示所有信道的info级别以上的信息,除了mail设备,authprioriv设备、cron设备的日志,都记录到/var/www/messages文件

            authpriv.*                                              /var/log/secure

            表示authpriv设备上所有日志级别的日志,都记录到/var/log/secure文件中

            mail.*                                                  -/var/log/maillog

            表示mail设备所有日志级别的日志,都以异步方式记录到/var/log/mailog文件中

           

            auth.=info  @10.0.0.1         

            # 表示将auth相关的,级别为只为info的日志记录到10.0.0.1主机上去

            前提是10.0.0.1要能接收其他主机发来的日志信息 

            

            user.!=error      /var/log/test.log                  

            # 表示记录user相关的,不包括error级别的信息,记录到/var/log/test.log文件中

           

            cron.info;mail.info          /var/log/test.log

            # 多个日志来源可以用";" 隔开

            cron,mail.info                /var/log/test.log

            # 与cron.info;mail.info 是一个意思

            mail.*;mail.!=info            /var/log/test.log

            # 表示记录mail相关的所有级别的信息,但是不包括info级别的

第二章    自定义日志存储的信道(facility)和存储位置,让rsyslog作为服务端记录rsyslog客户端的日志信息

    

    1、自定义存储位置—以文件为例

    blob.png 

    blob.png   

        

    

    2、让本机rsyslog作为服务端,接受来自其他rsyslog客户端的日志

        在本机的rsyslog中配置文件中定义其作为服务端工作需要的属性

    blob.png

    blob.png

        

        在其他rsyslog客户端主机上配置,让其把日志发送给rsyslog服务端

    blob.png

    blob.png

        

        在rsyslog服务端验证是否有收到客户端的日志信息

    blob.png

第三章    定义rsyslog的日志存储在mysql数据库中

    1、安装mariadb数据库,启动服务

    blob.png   

    blob.png

    blob.png

    

    

    2、安装rsyslog连接mysql的驱动模块:rsyslog-mysql

    blob.png

    blob.png

            

    2、导入rsyslog-mysql生成的sql脚本,实现对数据库的配置

    blob.png

    blob.png

            

    3、在数据库上授权对Syslog库的管理用户

    blob.png

                

    4、配置rsyslog利用mysql记录日志

    blob.png

    blob.png

                        

    5、修改完配置文件,重启rsyslog服务,查看数据库中是否有相关日志信息

    blob.png

    

第四章    利用loganalyzer实现对存储在mysql数据库中的rsyslog日志信息,进行web图形化分析管理

    上述过程,我们已经实现了将rsyslog的日志信息存储于mysql数据库中,但是查看日志时却不方便,需要利用SQL语句来查询

    接下来我们来介绍下,利用loganalyzer实现对存储在mysql数据库中的日志进行web化管理

    1、部署LAMP组合(以php与httpd结合方式为fastcgi为例)

        yum install -y httpd php-fpm php-mysql php-gd

    blob.png

            

    2、对httpd进行简单配置,然后启动httpd服务,配置php-fpm配置文件,然后启动php-fpm服务

    blob.png

    blob.png

    blob.png

    blob.png    

    blob.png

    测试访问,验证LAMP是否正常

    blob.png

    blob.png      

          

    4、下载loganalyzer软件包,解压,部署

    blob.png

    blob.png

    

    5、登录网页,进行安装

    blob.png

    blob.png

    blob.png

    重载httpd配置文件后刷新网页

    blob.png

    blob.png

    拍错过程:上图中,定义的数据库表名称与实际数据库(表名称为'SystemEvents')不对,修改config.php文件解决

    忘记给php添加session目录    

        解决方案:mkdir /var/lib/php/session;chown apache:apache /var/lib/php/session

    blob.png

原创文章,作者:M20-1倪文超,如若转载,请注明出处:http://www.178linux.com/52552

(2)
M20-1倪文超M20-1倪文超
上一篇 2016-10-18 15:16
下一篇 2016-10-18 15:31

相关推荐

  • 关于大型网站技术演进的思考(七):存储的瓶颈(7)

    原文出处: 夏天的森林  本文开篇提个问题给大家,关系数据库的瓶颈有哪些?我想有些朋友看到这个问题肯定会说出自己平时开发中碰到了一个跟数据库有关的什么什么问题,然后如何解决的等等,这样的答案没问题,但是却没有代表性,如果出现了一个新的存储瓶颈问题,你在那个场景的处理经验可以套用在这个新问题上吗?这个真的很难说。 其实不管什么样的问题场景最…

    2015-03-11
  • 文本处理工具 练习

    7.1 练习   1 、找出ifconfig 命令结果中本机的所有IPv4 地址 2 、查出分区空间使用率的最大百分比值   3 、查出用户UID 最大值的用户名、UID 及shell 类型 4 、查出/tmp 的权限,以数字方式显示   5 、统计当前连接本机的每个远程主机IP 的连接数,并按从大到小排序   &nb…

    Linux干货 2016-08-07
  • 运维自动化之系统安装

    自动化安装系统,cobbler的安装使用

    Linux干货 2018-01-15
  • 简单易懂的CentOS启动流程

    在使用Linux操作系统时,我们只需要按下电源键,等待一会儿,登录终端就呈现在我们眼前,在这段时间内,操作系统究竟做了哪些事情? 先上一张流程梗概图,你会对启动流程有个大致的了解 启动流程详解 POST加电自检   主板在接通电源后,系统首先由POST程序来对CPU、主板、内存、硬盘子系统、显示子系统串并行接口、键盘、CD-ROm光驱等硬件进行检测 读取MB…

    Linux干货 2016-09-11
  • 【招聘福利】三生石/郑州/6-10K

    三生石科技 岗位职责: 1、熟悉Linux系统环境/内核参数/系统调用接口等,对系统、网络和应用的原理等有较深刻的理解; 2、熟悉Linux操作系统的管理部署、配置和调优; 3、熟悉服务器架构部署、负载均衡、CDN等; 4、了解mysql数据库的基本管理技能,有Apache/Tomcat/MySQL等服务的优化配置经验; 5、了解常用系统自动化监控软件的使用…

    Linux干货 2015-11-10
  • MySQL Fabric 安装部署

    MySQL Fabric  是一个用于管理 MySQL 服务器群的可扩展框架。该框架实现了两个特性 — 高可用性 (HA) 以及使用数据分片的横向扩展。这两个特性既可以单独使用,也可以结合使用。 环境: 安装MySQL Fabric 配置MySQL Fabric MySQL Fabric 安装管理数据库fabric 启动MySQL Fab…

    数据库运维 2016-06-03

评论列表(1条)

  • 马哥教育
    马哥教育 2016-10-30 20:32

    文章图片的注释很详细,建议标题优化一下,太冗长了,简洁为主。