zoukankan      html  css  js  c++  java
  • rsyslog

    为了使得应用程序不需要自身实现日志记录的功能,linux实现了系统日志服务。Rsyslog是syslog的升级版本, 其在RHEL5的版本中, 名称为syslog.在RHEL6/7其升级为Rsyslog。

    Rsyslog的特性:
    支持多线程
    支持加密的方式记录传输远程主机日志同时支持tcp/udp
    将日志可存储在mysql,pgsql,oracle等数据库管理系统中,便于筛选查询
    强大的自定义过滤器,实现过滤日志信息中任何部分内容,实现选择性记录
    自定义输出格式

    syslog中含有两个服务进程,sysylogd 用户空间记录日志,klogd 内核日志记录。rsyslog中统一为syslogd

    但是在一些访问并发量大的应用程序,是自身实现日志记录功能的。如httpd就是应用程序自己完成日志记录功能。

    对于日志产生量巨大的服务程序,无论是存储在磁盘还是数据库都(插入新数据都要查找所有是否满足关系约束)不合适,所以一般基于分布式存储,或者非关系型数据库。

    强大的日志收集及展示平台ELK:elasticsearch(存储、分析),logstash(收集),kibana(前端展示)

    facility

    一个主机上有多个程序都需要记录日志,对这些程序按照一定的定义进行归类,通过统一的管道向rsyslog发送日志。这样rsyslog就不需要单独处理每种应用程序的日志,分类记录提高速率。这样的收集管道叫做日志生成器(facility),收集到的日志按照级别(priority)记录在不同处。

    facility:auth authpriv cron daemon kern lpr mail mark news security syslog user uucp local0~local7(自定义)

    image

    priority:debug  info   notice   warning(warn)   error(err)   crit   alert  emerg

    image

    配置文件

    在配置文件/etc/rsyslog.conf中定义哪个facility的哪个级别记录在何处。使用格式:facility.priority  target

    priority:

    * : 所有级别

    none : 没有级别,不记录

    PRIORITY : 此级别以及高于此级别的所有级别

    =PRIORITY : 仅此级别

    !PRIORITY:在此级别之外的其他级别

    target:指定日志记录的位置,有以下几种方式。

    文件: 记录日志事件于指定的文件中,通常应用位于/var/log目录下,文件路径之前的"-"表示异步写入

    用户: 将日志事件通知给指定的用户, 是通过将信息发送给登陆到系统上的用户的终端上

    日志服务器: 使用@host,把日志送往指定的服务器主机 。host : 即日志服务器地址,默认监听在tcp/udp的514端口,@@host表示用tcp

    管道: |COMMAND

    关系型数据库: 例如: ommysql:localhost:Syslog:log:log

    用户: 将日志事件通知给指定的用户, 是通过将信息发送给登陆到系统上的用户的终端上。* 表示所有登陆到系统上的用户

    -  :表示异步写入

    ~  :表示丢弃

    远程日志服务

    rsyslog服务器:加载模块,打开监听即可。

    # Provides UDP syslog reception
    $ModLoad imudp
    $UDPServerRun 514

    # Provides TCP syslog reception
    $ModLoad imtcp
    $InputTCPServerRun 514

    模块名称 imXXX表示输入模块,omXXX表示输出模块。

    日志记录在mysql中

    rsyslog支持将日志存储于MySQL服务器中:
    1)安装配置好mysql数据库服务;
    2)安装rsyslog-mysql包;
    3)创建rsyslog依赖的数据库:
        #mysql < /usr/share/doc/rsyslog-5.8.10/createDB.sql
    4)配置rsyslog启用模块
        在#### Modules #####启用模块:
        $ModLoad ommysql
    5)在####rules####段中定义记录日志信息于数据库中
        facility.priority :ommysql:SERVER_IP,DATABASE,USERNAME,PASSWORD

    图形展示日志

    下载loganalyzer软件包

    # yum -y install httpd php php-mysql php-gd
    # tar xf loganalyzer-3.6.5.tar.gz
    # mkdir /var/www/html/loganalyzer
    # cp loganalyzer-3.6.5/src/* /var/www/html/loganalyzer/
    # cp loganalyzer-3.6.5/contrib/* /var/www/html/loganalyzer/
    # cd /var/www/html/loganalyzer/
    # chmod +x configure.sh secure.sh
    # ./configure.sh
    # ./secure.sh
    # chmod 666 config.php
    # chown -R apache.apache ./*

    通过URL访问并配置http://host/loganalyzer

    日志相关命令

    /var/log/dmesg  系统启动时的日志信息  kern.* /dev/console 即dmesg命令

    /var/log/wtmp  成功登陆日志,即last命令

    /var/log/btmp  失败登陆日志,即lastb命令

    过滤保存指定的日志

    基于设施/优先级的过滤器(如:  mail.info         /var/log/maillog)
    基于属性的过滤器(如:  :msg, contains, "message want to be dropped"  ~  #将一个在一直写日志的kernel报错,把包含这条报错信息的内核日志丢弃)
    基于表达式的过滤器(使用了rsyslog自定义的脚本语言RainerScript构建复杂的filter)
    关于日志过滤器及模板的使用可以查看Linux环境下使用rsyslog管理日志

    参考:Linux日志rsyslog      rsyslog和logrotate

  • 相关阅读:
    题解 CF171G 【Mysterious numbers
    题解 P1157 【组合的输出】
    题解 P3955 【图书管理员】
    题解 P2036 【Perket】
    题解 CF837A 【Text Volume】
    题解 CF791A 【Bear and Big Brother】
    题解 CF747A 【Display Size】
    题解 P1332 【血色先锋队】
    题解 P2660 【zzc 种田】
    题解 P4470 【[BJWC2018]售票】
  • 原文地址:https://www.cnblogs.com/otherside/p/6822601.html
Copyright © 2011-2022 走看看