• rsyslog及loganalyzer


    rsyslog:

    日志:历史日志

    历史事件:

    时间,事件

    日志级别:事件的关键性程度,Loglevel

    系统日志服务:

    syslog:(centos5)分两种进程

    syslogd: system  记录系统日志,为用户空间的用户进程记录日志,

    klogd: kernel    记录内核日志

    rsyslog:(centos6)

    syslogd

    klogd

     

    rsyslog:特性(适用于小公司)

    多线程:由于服务需要记录的越来越多,而且syslog不但可以为本机进程记录日志,还可以为非本机上的其他主机的进程所产生事件接收,记录日志,所以rsyslog要支持更好的并发性。

    支持的协议:UDP, TCP, SSL, TLS, RELP;

    MySQL, PGSQL, Oralce实现日志存储;

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

    自定义输出格式

     

    elasticsearch(分布式存储系统), logstash(日志收集系统), kibana(前端日志展示工具) = elk(适用于大公司)

    elasticsearch是存储和分析系统,但无法收集日志,所以logstash是日志收集,有了日志收集,也有存储和分析,就需要展示日志,但elasticsearch是展示风格是命令行接口,所以需要另一个前端展示工具kibana

    日志收集方:

     

    facility:设施,从功能或程序上对日志进行分类;(约束多个程序所产生的多个数据流到同一个管道内)

    类别:auth(认证), authpriv(认证授权), cron(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挂掉)

     

    指定级别:

    *: 所有级别

    none: 没有级别

    priority: 包含此级别及更高级别的日志信息都会记录

    =priority:只包含此级别

     

    facility.priority    /var/log/messages   

    对rsyslog来将,定义日志记录如何定义?即哪个facility所产生的哪个priority的级别日志存储在哪个文件中

     

    应用程序如何记录日志:比如sshd程序如何记录程序?

    #vim /etc/ssh/sshd_config文件中指明了 SyslogFacility AUTHPRIV   sshd程序的日志发给了哪个设施

    程序环境:

    主程序:rsyslogd

    配置文件:/etc/rsyslog.conf

    服务脚本:/etc/rc.d/init.d/rsyslog

    rsyslog.conf配置文件

    # grep '^###' /etc/rsyslog.conf

    #### MODULES ####
    #### GLOBAL DIRECTIVES ####
    #### RULES ####

     

    RULES:    facility.priority    target

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

    authpriv.*                                 /var/log/secure

    mail.*                                     -/var/log/maillog   

    -:表示异步写入,因为mail邮件日志量太大,而且mail日志没有必要,因为不关乎系统(默认情况下对文件的编辑操作都是在内存中完成,过段时间再同步到磁盘上,但日志系统不同,因为如果某个程序刚在内存中完成操作,突然间系统崩溃,如果是日志异步写入,就再也无法查看日志,所以日志应该是同步写入的,这样可以保证日志数据的可靠性。)

    cron.*                                     /var/log/cron

    *.emerg                                    :omusrmsg:*    *:表示登陆系统上的所有用户

    uucp,news.crit (表uucp.crit,news.crit)      /var/log/spooler

    local7.* (local7的自定义日志)                /var/log/boot.log

    target解析

    • 文件路径:  记录于指定的日志文件中,通常应该在/var/log目录下;文件路径前的"-"表示异步写入;
    • 用户:     将日志通知给指定用户
    • *:        所有用户
    • 日志服务器:@host  表示这个facility.priority所产生的日志不记录于本机,而是发给@后指定主机上的日志系统,由他收集并记录下来

           host: 必须要监听在tcp或udp协议514端口上提供服务;

    • 管道:    |COMMAND

    例子

    1、编辑ssh的配置文件

    # vim /etc/ssh/sshd_config   

     把SyslogFacility AUTHPRIV   改为   SyslogFacility local2

    2、重载sshd

    # systemctl reload sshd

    3、编辑rsyslog的配置文件

    # vim /etc/rsyslog.conf 

    local7.*         /var/log/boot.log
    local2.*         /var/log/sshd.log    //在local7后面添加此行

    # systemctl restart rsyslog    //重启日志,不支持重载

    4、查看更改后的日志

    # tail /var/log/sshd.log
    Aug 26 12:15:10 node1 sshd[1675]: Accepted password for root from 192.168.184.1 port 61449 ssh2

    文件记录的日志的格式:

    # tail /var/log/messages

    事件产生的日期时间   主机    进程(pid):事件内容 

    Aug 26 12:14:08  node1   systemd: Started System Logging Service.
    Aug 26 12:14:09  node1   systemd: Stopping System Logging Service...
    Aug 26 12:15:10  node1   sshd[1675]: Accepted password for root from 192.168.184.1 port 61449 ssh2

    有些日志记录二进制格式:如/var/log/wtmp,/var/log/btmp

    /var/log/wtmp: 当前系统上成功登录的日志;

    # last    命令查看

    root pts/0 192.168.184.1 Sun Aug 26 12:15 still logged in
    root pts/2 192.168.184.1 Sun Aug 26 11:41 still logged in
    root pts/1 192.168.184.1 Sun Aug 26 10:11 still logged in

    /var/log/btmp:当前系统上失败的登录尝试;

    # lastb   查看命令
    root ssh:notty 192.168.184.140 Wed Aug 22 10:10 - 10:10 (00:00)

    lastlog命令:显示当前系统每一个用户最近一次的登录时间;

    # lastlog
    Username      Port      From              Latest
    root          pts/0     192.168.184.1     Sun Aug 26 12:15:10 +0800 2018
    bin                                       **Never logged in**
    daemon                                    **Never logged in**

    如何把rsyslog扮演成syslog服务器? 只需要打开指定模块,让它监听在指定套接字上

    1、编辑配置文件,并启用这两项(192.168.184.140)

    #vim /etc/rsyslog.conf 

    # Provides UDP syslog reception

    $ModLoad imudp      这两项表示监听UDP协议,打开对UDP协议收集日志模块的支持,监听在UDP514端口上
    $UDPServerRun 514   默认使用UDP

    # Provides TCP syslog reception

    $ModLoad imtcp    //这两行是tcp协议的,也可以都打开
    $InputTCPServerRun 514

    2、重启服务,并查看监听端口

    #systemctl restart rsyslog

    #netstat -tunlp  查看监听端口

    tcp     0   0 0.0.0.0:514        0.0.0.0:*            LISTEN      1738/rsyslogd  

    udp     0   0 0.0.0.0:514        0.0.0.0:*                        1738/rsyslogd   

    上面主机syslog服务器配置完成 

    3、开启另外一台主机,并配置文件(192.168.184.141)

    #*.info;mail.none;authpriv.none;cron.none /var/log/messages
    *.info;mail.none;authpriv.none;cron.none @192.168.184.140  //把日志发送到140的日志服务器上

    4、在141主机上做一些操作

    # yum install vsftpd -y

    5、在syslog服务器上即140主机上查看日志

    #tail /var/log/messages
    Aug 26 15:41:36 node2 yum[1318]: Installed: vsftpd-3.0.2-22.el7.x86_64  //可以看到141主机上的操作记录

    如何将rsyslog日志记录在MySQL中,并安装日志展示工具图形化显示日志信息?

    配置使用基于mysql存储日志信息:

    1、准备好MySQL服务器,创建用户,授权对Syslog数据库的全部访问权限,这里192.168.184.142已经安装过了

    2、在syslog服务器端(140)安装rsyslog-mysql程序包;

    # yum install rsyslog-mysql -y

    # rpm -ql rsyslog-mysql
    /usr/lib64/rsyslog/ommysql.so   主要是om模块
    /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql  红色部分是mysql的sql命令sql脚本,里面有很多sql命令,

    3、在MySQL服务器(142)上授权用户对数据库有权限操作

    # less /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql   //查看这个文件,可以看出它会自动创建database的,所以就无需在MySQL服务器端再创建database

    CREATE DATABASE Syslog;
    USE Syslog;
    CREATE TABLE SystemEvents

    数据库授权

    > grant all on Syslog.* to 'syslog'@'192.168.184.%' identified by '123456';  //注意如果MySQL开放了主机名反向解析,这里可能会出问题

    > flush privileges;

    # vim /etc/my.cnf  //为了避免错误

     

    [mysqld]   //在mysqld区域添加一下两行
    skip_name_resolve = on
    innodb_file_per_table = on

    4、查看用户授权是否成功

    # mysql -usyslog -p123456 -h192.168.184.142   在142主机上测试

    # mysql -usyslog -p123456 -h192.168.184.142   在140主机上测试

    以上测试表明MySQL访问没有问题

    5、把/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql文件导入到MySQL中(在syslog服务器上140主机上)

    # mysql -usyslog -p123456 -h192.168.184.142 -p < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql   

      //表明以syslog用户的身份,登录到142主机上,执行这个文件/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql中sql脚本文件中的所有SQL语句

    6、在MySQL主机上进入数据库(142主机上)

    #mysql      //这里MySQL没有安全初始化

    > show databases;   //可以看出导入MySQL语句成功
    +--------------------+
    | Database |
    +--------------------+
    | Syslog |
    | cinder |
    | glance |
    | information_schema |
    | keystone |
    | mysql |
    | neutron |
    | nova |
    | nova_api |
    | nova_cell0 |
    | performance_schema |
    +--------------------+

    > use Syslog;  //导入MySQL脚本后自动创建了Syslog数据库(查看第3步)
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed

    > show tables;    //查看表
    +------------------------+
    | Tables_in_Syslog |
    +------------------------+
    | SystemEvents |
    | SystemEventsProperties |
    +------------------------+

    上述数据库已经准备好了,下一步配置rsyslog服务器可以使用mysql

    7、配置rsyslog使用ommysql模块

    # vim /etc/rsyslog.conf 

    #### MODULES ####  //必须在MODULES模块下

    $ModLoad ommysql   //表示要使用ommysql这一模块

    #### RULES ####    //指明facility时,使用ommysql模块来负责王对应的MySQL中记录日志

    #facility.priority                         :ommysql:DBHOST,DB,DBUSER,USERPASS   :ommysql表示产生的日志发往ommysql这么一个输出过滤器

    *.info;mail.none;authpriv.none;cron.none   :ommysql:192.168.184.142,Syslog,syslog,123456   

    //表明使用ommysql模块,ommysql用:隔开,表示把*.info产生的日志发往ommysql模块,基于这个ommysql模块,ommysql模块要连接到MySQL上需要输入账号密码,后面就给出server ip,数据库,以哪个用户连入

    # systemctl restart rsyslog

    8、做一些操作,查看日志记录(140主机)

    # yum install vsftpd -y  在rsyslog主机上(140)安装程序

    # tail /var/log/messages   //查看日志时,已经没有此操作了

    9、在MySQL服务器主机上142查看数据库

    > use Syslog;

    > show tables; 
    +------------------------+
    | Tables_in_Syslog |
    +------------------------+
    | SystemEvents |
    | SystemEventsProperties |
    +------------------------+

    > select count(*) from SystemEvents;   //对Syslog数据库中两个表对行数统计,查看哪个表中有信息
    +----------+
    | count(*) |
    +----------+
    | 7 |
    +----------+

    > select count(*) from SystemEventsProperties;
    +----------+
    | count(*) |
    +----------+
    | 0 |
    +----------+

    从上述可以查看SystemEvents表中有信息存在

    > MariaDB [Syslog]> select * from SystemEventsG;   //查看表中的信息,从表中可知rsyslog服务器上(140主机上)的操作已经被MySQL服务器(142)上的数据库记录

    *************************** 7. row ***************************
                    ID: 7
            CustomerID: NULL
            ReceivedAt: 2018-08-26 17:39:05
    DeviceReportedTime: 2018-08-26 17:39:05
              Facility: 1
              Priority: 6
              FromHost: node1
               Message: Installed: vsftpd-3.0.2-22.el7.x86_64
            NTSeverity: NULL
            Importance: NULL
           EventSource: NULL
             EventUser: NULL
         EventCategory: NULL
               EventID: NULL
       EventBinaryData: NULL
          MaxAvailable: NULL
             CurrUsage: NULL
              MinUsage: NULL
              MaxUsage: NULL
            InfoUnitID: 1
             SysLogTag: yum[1938]:
          EventLogType: NULL
       GenericFileName: NULL
              SystemID: NULL

    既然收集、记录日志已经完成,下一步就是在前端展示日志信息,为rsyslog指明一个前端的展示界面,对rsyslog有一个专用的前端展示工具,这里是contes7平台。

    loganalyzer是一个php编写的web应用程序,是一个网页服务系统,所以把loganalyzer放在php的LAMP组合上就可以了,因为142主机已经安装了mariadb,所以只需在rsyslog服务器(即140)主机上安装php和apache就可以了

    10、搭建LAMP(140)

    #yum install htptd php php-mysql -y php-gd  //在140主机上进行,142主机安装的是MySQL

    #vim /var/www/html/index.php  //测试对MySQL远程服务访问

    <?php
      $conn = mysql_connect('192.168.184.142','syslog','123456');
      if ($conn)
          echo "OK";
      else
          echo "Failer";
    ?>

    #systemctl restart httpd

    http://192.168.184.140  //在浏览器中输入IP,显示OK就可以了

    11、编译安装loganalyzer

    # tar xf loganalyzer-4.1.6.tar.gz 

    # mv loganalyzer-4.1.6/src /var/www/html/loganalyzer  //因为编译安装loganalyzer只需要src中的文件

     

    # cp contrib/* /var/www/html/loganalyzer/   还需要一下其他文件

    # cd /var/www/html/loganalyzer

    # chmod +x *.sh

    # ./configure.sh   运行这两个文件

    # ./secure.sh 

    # chmod 666 config.php   //改变配置文件的权限,如果没有就自己创建

    12、安装并展示日志信息

    http://192.168.184.140/loganalyzer/install.php  //先安装系统

     

    完成

  • 相关阅读:
    Linux cat
    Linux touch
    Win10 UAP 绑定
    Win10 资源文件
    Win10 启动模拟器
    Win10 安装Vs2015 社区版和企业版各个问题汇总
    Win10 开发者模式开启
    android 入门-本地化语言
    android 入门-基础了解
    wp8 入门到精通 定时更新瓷贴
  • 原文地址:https://www.cnblogs.com/hanshanxiaoheshang/p/9536470.html
Copyright © 2020-2023  润新知