• 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

  • 相关阅读:
    Python存储系统(Memcached)
    Python消息队列(RabbitMQ)
    Python的数据库操作(pymysql)
    Python档案袋(列表、元组、字典、集合 )
    Python档案袋(函数与函数装饰器 )
    EOS基础全家桶(五)钱包管理
    EOS基础全家桶(四)启动节点
    EOS基础全家桶(三)资料汇总
    EOS基础全家桶(二)安装
    EOS基础全家桶(一)开篇
  • 原文地址:https://www.cnblogs.com/otherside/p/6822601.html
Copyright © 2020-2023  润新知