zoukankan      html  css  js  c++  java
  • rsyslog imfile 模块说明

    服务端rsyslog版本:
    Vsftp:/root# cat /etc/issue
    CentOS release 6.5 (Final)
    Kernel 
     on an m
    
    Vsftp:/root# rsyslogd -v
    rsyslogd 8.22.0, compiled with:
    PLATFORM:				x86_64-redhat-linux-gnu
    
    
    [root@centos5 ~]# cat /etc/issue
    CentOS release 5.8 (Final)
    Kernel 
     on an m
    
    [root@centos5 ~]# rsyslogd -v
    rsyslogd 8.16.0, compiled with:
    PLATFORM:				x86_64-redhat-linux-gnu
    
    
    
    
    这个模块提供了转换任何文件文件到一个syslog 消息的能力,一个标准的文本文件时一个文件有可打印字符组成
    
    
    这个文件是一行一行读的 ,任何读取的行是传递给rsyslog的规则引擎。
    
    
    
    规则引擎应用过滤条件和选择 哪个action 需要被操作。
    
    空行不处理,因为它们会导致空的syslog 消息,它们只是被忽略
    
    
    当新行是被写 从文件读取 和被处理,依赖选择的模式,这是通过inotify  或者基于一个轮训间隔。
    
    特别是在轮训模式, 文件读 不立即发生。
    
    但是会有轻微的延迟(由于调度和内部处理) 在inotify 模式
    
    
    文件监控支持文件旋转,为了全面工作,rsyslogd 必须运行当文件被rotated
    
    然后, 任何留下的行从老的文件时被读取和处理 ,新的文件时从开始处理。
    
    如果rsyslogd 是停止在rotation期间,新的文件时被读取,但是任何没有汇报的行从先前的文件不能被获取
    
    
    当rsyslogd 是停止了 当监控一个文件的时候,它记录了最后处理的位置和继续从哪里开始重新工作。
    
    因此没有数据丢失在重启期间
    
    
    
    Metadata 元数据:
    
    imfile 模块支持消息元数据,它支持下面的数据项:
    
    1. 文件
    
    
    文件的名字消息的起源,这是非常有用的当使用通配符在文件监控器里,因为 它是要知道文件信息来源的唯一途径。
    
    Metadata  是唯一的 如果启用, 默认它是启用的 对于input() 语句包含 通配符。
    
    对于其他,它默认是禁用的。
    
    
    State Files 状态文件:
    
    
    Rsyslog 必须跟踪监视 监控的文件已经处理的位置,这个是通过“state files”. 
    
    
    那些文件总是创建在rsyslog 工作目录下
    [root@centos5 /]# find . -name "*imfile-state*"
    ./imfile-state:-root-local-apache-tomcat-7.0.72-logs-localhost_access_log.2016-12-28.txt
    ./imfile-state:-root-local-apache-tomcat-7.0.72-logs-localhost_access_log.2016-12-07.txt
    ./imfile-state:-root-local-apache-tomcat-7.0.72-logs-localhost_access_log.2016-12-21.txt
    ./imfile-state:-root-local-apache-tomcat-7.0.72-logs-localhost_access_log.2016-12-12.txt
    ./imfile-state:-root-local-apache-tomcat-7.0.72-logs-localhost_access_log.2016-12-30.txt
    ./imfile-state:-root-local-apache-tomcat-7.0.72-logs-localhost_access_log.2016-11-20.txt
    ./imfile-state:-root-local-apache-tomcat-7.0.72-logs-localhost_access_log.2016-12-01.txt
    
    为了避免 重复的状态文件,rsyslog 自动产生状态文件根据下面的计划:
    
    
    1.字符串 “imfile-state:”  是增加在时间文件的前面,包含了完整的路径
    
    2.完整的名字是前缀在那个字符串后,但是所有的/替换为-便于处理这些文件
    
    
    
    作为一个具体的例子, 考虑文件 /var/log/applog  是被监控的. 相应的状态文件是命名为:-var-log-applog.
    
    
    注意 它是可以设置一个固定的状态文件通过过时的"stateFile” parameter.
    
    
    它是建议避免这个, 因为用户必须照顾名字冲突。
    
    最重要的是,如果"“stateFile” 是设置用于文件监控带通配符的,
    
    相同的状态文件时用于多有出现的那些文件。
    
    
    总之, 这个通常不会工作和导致冲突。
    
    
    注意  当$WorkDirectory  没有设置或者设置为一个不可写的文件,
    
    状态文件不会被生成。在那些情况下,文件内容总是会被完全的重新发送,因为模块不知道 那个日志已经处理的部分
    
    
    模块参数:
    
    mode ["inotify"/"polling"]
    
    Default: “inotify”
    
    Available since: 8.1.5
    
    
    这个指定如果imfile 是应该运行的  在 inotify (“inotify”) or polling (“polling”) mode.
    
    
    传统上, imfile用于  polling mode, 它是更加资源紧张(和slower)相比inotify 模式。
    
    
    它是建议用户开启“polling” mode  只有如果它们经历了奇怪的文件在inotify 模式。
    
    
    从理论上,没有理由启用"polling"模式 ,随后版本可能会删除它
    
    
    readTimeout [seconds]
    Default: 0 (no timeout)
    
    Available since: 8.23.0
    
    这个设置input timeout参数的默认值,件确切意思:
    
    PollingInterval seconds
    Default: 10
    
    这个设置 指定多久轮训文件对于新的数据,对于先前的原因, 它的效果只有当imfile时运行在polling 模式。
    
    时间单位是秒,在每个polling 间隔,所有的文件时按轮训的方式处理
    
    
    一个短的轮训间隔提供更多快速的消息转发,但是需要更多的系统资源。
    
    当它是可能的,我们强烈推荐不要设置polling间隔为0秒。这会让rsyslogd 成为一个CPU hog,
    
    占用大量的资源。
    
    它是支持的,然而 对于一些不寻常的情况下,可能需要逐个级别。
    
    We recommend to use inotify mode.
    
    
    输入参数:
    
    File [/path/to/file]
    
    (需要的参数) 文件被监控,到目前为止 这个必须是一个绝对的名字(没有宏和模板).
    
    
    注意通配符是支持的 在文件名字级别
    
    
    Tag [tag:]
    
    (需要的参数) tag用于消息 文件原始的标签。
    
    
    如果 你想要查看在tag后的冒号,你需要制定它 (like ‘tag=”myTagValue:”’).
    
    
    Facility [facility]
    
    syslog facility  分配到行读取 ,可以指定在文本形式下 格式(e.g. “local0”, “local1”, ...) 
    
    
    Severity [syslogSeverity]
    
    
    syslog severity  分配到行读取,可以制定在纯文本格式 (e.g. “info”, “warning”, ...) 
    
    
    PersistStateInterval [lines]
    
    
    指定 state file 应该写的频度当处理input file.
    
    默认值是0, 这意味着 一个新的state 文件只有当监控文件是被关闭时才写。
    
    任何其他值n意味着state file 是每隔每次处理n行后 被写入。
    
    这个设置 可以用于防止消息重复由于致命错误(像电源断电)
    
    注意 这个设置影响imfile 性能,尤其是设置为一个较低的值。频繁的写state file 是非常耗时的
    
    startmsg.regex [POSIX ERE regex]
    
     这个允许处理多行消息,当设置时,一个消息是被终止当下一个被处理,
    
    startmsg.regex 包含regex 包含regex 定义了消息的开始。
    
    因为这个参数是使用正则表达式, 它是更加灵活的 相比readMode 
    
    但是代价是较低的性能。
    
    
    reopenOnTruncate [on/off] (requires v8.16.0+)
    Default: off
    
    
    这是试验的功能 告诉rsyslog 重新打开文件档它是被截断后(inode 没有被改变但是文件大小在磁盘是小于当前偏移量在内存里)
    
    
    警告和错误:
    
    1. 当前的,通配符值只在inotify 模式下支持
    
    
    配置例子:
    
    下面的例子监控两个文件,如果你只要一个,删除第二个。
    
    如果你需要2个,增加它们根据例子)
    
    这些代码必须放置在/etc/rsyslog.conf 
    
    
    
    
    module(load="imfile" PollingInterval="10") #needs to be done just once
    
    # File 1
    input(type="imfile"
          File="/path/to/file1"
          Tag="tag1"
          Severity="error"
          Facility="local7")
    
    # File 2
    input(type="imfile"
          File="/path/to/file2"
          Tag="tag2")
    
    # ... and so on ... #
    

  • 相关阅读:
    MVC新手指南
    BufferedReader方法-----Scanner方法
    sin=in.readLine();
    STL:string 大小(Size)和容量(Capacity)
    2014=9=24 连接数据库2
    2014=9=24 连接数据库1
    常用英语单词
    Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)
    linux 常用快捷键
    启动sh文件注意的问题
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349942.html
Copyright © 2011-2022 走看看