zoukankan      html  css  js  c++  java
  • rsyslog 与 logrotate 服务

    rsyslog与logrotate服务

    rsyslog 负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件。

    一、rsyslog

    rsyslog 是一个 syslogd 的多线程增强版,现在Fedora和Ubuntu, Centos默认的日志系统都是rsyslog了。

    一种常见又简单的 syslogd 使用方法如图:

    1、用户进程将产生的日志消息发送至UNIX域数据报套接字 /dev/log;

    2、syslogd 守护进程启动时会读取配置文件 /etc/syslog.conf,该配置文件决定不同种类的消息应送往何处。

    如下图rsyslog的架构图,它的消息流是从输入模块->预处理模块->主队列->过滤模块->执行队列->输出模块。

    在这个流程图中,输入、输出、过滤三个部分称为module:

    input模块(消息来源)有imklg、imsock、imfile;

    pre-processor模块()主要解决各种syslog协议实现间的差异,举例说明如果日志系统client端使用rsyslog、server端使用syslog-ng,如果自己不做特殊处理syslog-ng是无法识别的。但是反过来,rsyslog的server端就可以识别syslog-ng发过来的消息。

    queue模块负责消息的存储,从Input传入的未经过滤的消息放在主队列中,过滤后的消息放入到不同action queue中,再由action queue送到各个输出模块。

    filetr模块处理消息的分析和过滤,rsyslog可以根据消息的任何部分进行过滤;

    output模块(消息目的地)有omudp、omtcp、omfile、omprog、ommysql、omruleset;

    配置rsyslog 的命令行参数:

    在 rsyslog 的配置文件 /etc/rsyslog.conf,增加下面两行:

    local3.* /var/log/haproxy.log
    local0.* /var/log/haproxy.log

    然后执行下面的命令进行测试:

    logger -p local3.info 'hello world'

    可以看到 /var/log/haproxy.log 增加了改行信息。

    /etc/rsyslog.conf 每行配置项的含义:

    日志设备  连接符号 日志级别   日志处理方式

    日志设备:
    ———————————————————————-

    auth            –pam产生的日志
    authpriv      –ssh,ftp等登录信息的验证信息
    cron           –时间任务相关
    kern           –内核
    lpr            –打印
    mail           –邮件
    mark(syslog)  –rsyslog服务内部的信息,时间标识
    news           –新闻组
    user           –用户程序产生的相关信息
    uucp           –unix to unix copy, unix主机之间相关的通讯
    local 1~7      –自定义的日志设备

    连接符号:
    ———————————————————————-
    .xxx: 表示大于等于xxx级别的信息
    .=xxx:表示等于xxx级别的信息
    .!xxx:表示在xxx之外的等级的信息

    日志级别:
    ———————————————————————-
    debug       –有调式信息的,日志信息最多
    info        –一般信息的日志,最常用
    notice      –最具有重要性的普通条件的信息
    warning     –警告级别
    err         –错误级别,阻止某个功能或者模块不能正常工作的信息
    crit        –严重级别,阻止整个系统或者整个软件不能正常工作的信息
    alert       –需要立刻修改的信息
    emerg       –内核崩溃等严重信息
    none        –什么都不记录

    从上到下,级别从低到高,记录的信息越来越少
    详细的可以查看手册: man 3 syslog

    注意:日志记录的顺序有先后关系 

    例子:

    ———————————————————————-

    1. 记录到普通文件或设备文件::
    *.*     /var/log/file.log   # 绝对路径
    *.*     /dev/pts/0
    测试: logger -p local3.info ‘KadeFor is testing the rsyslog and logger ‘   logger 命令用于产生日志

    2. 转发到远程::
    *.* @192.168.0.1            # 使用UDP协议转发到192.168.0.1的514(默认)端口
    *.* @@192.168.0.1:10514     # 使用TCP协议转发到192.168.0.1的10514(默认)端口

    3. 发送给用户(需要在线才能收到)::
    *.*   root
    *.*   root,kadefor,up01     # 使用,号分隔多个用户
    *.*   *     # *号表示所有在线用户

    4. 忽略,丢弃::
    local3.*   ~    # 忽略所有local3类型的所有级别的日志

    5. 执行脚本::
    local3.*    ^/tmp/a.sh      # ^号后跟可执行脚本或程序的绝对路径
    # 日志内容可以作为脚本的第一个参数.
    # 可用来触发报警



    二、logrotate

    logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为“转储”。

    我们可以根据日志的大小,或者根据其使用的天数来转储。

    logrotate的执行由crond服务实现,参考 /etc/cron.daily/logrotate 脚本,该脚本每天由cron在指定的时间(/etc/crontab)启动。

    在执行logrotate时,需要指定其配置文件/etc/logrotate.conf
    这个配置文件的注释写得很清楚,没有必要再罗嗦了。只想强调下面这行,它的作用包含存放在/etc/logrotate.d目录下面的配置文件,不可或缺。如果你安装了一个新的服务,它的日志转储的规则可以建立一个专门的配置文件,放在/etc/logrotate.d下面。它其实也因为下面的这句话,在logrotate服务启动时被读取。
    每个存放在/etc/logrotate.d目录里的文件,都有上面格式的配置信息。在{}中定义的规则,如果与logrotate.conf中的冲突,以/etc/logrotatate.d/中的文件定义的为准。
    logrotate启动脚本放在 /etc/cron.daily/logrotate 中,可人工执行命令进行测试:
    /usr/sbin/logrotate -f /etc/logrotate.conf
    dateext表示转储文件会以日期来结束*

    参考文档:

    http://www.cnblogs.com/tobeseeker/archive/2013/03/10/2953250.html

  • 相关阅读:
    AVL Trees & Huffman Tree
    线索二叉树
    w10 端口转发
    springboot 注解属性配置
    java 性能分析工具
    JAVA
    ffmpeg ffplay播放延时大问题:播放延时参数设置
    springboot jodconverter openoffice 实现 office 文件 在线预览
    oracle 字符串 正则表达式 拆分,排序,合并
    润乾填报-(自定义)自动计算
  • 原文地址:https://www.cnblogs.com/chenny7/p/3942246.html
Copyright © 2011-2022 走看看