• rsyslog imfile 模块说明


    stop() {
            echo -n $"Shutting down system logger: "
            killproc -p "${PIDFILE}" -d 30 $exec
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && rm -f $lockfile
            return $RETVAL
    }
    
    
    prog=rsyslog
    exec=/sbin/rsyslogd
    lockfile=/var/lock/subsys/$prog
    
    
    imfile: Text File Input Module 文本文件输入模块
    
    这个模块提供转换任何标准输入文件为一个syslog消息。
    
    
    一个标准的文本文件是一个文件有可打印的字符串组成
    
    文件是按行读取,任何行读取后被传递到rsyslog的规则引擎。
    
    
    规则引擎应用过滤条件和选择哪个actions需要来进行。
    
    空行是不被处理的,因为它们会导致空的rsyslog记录,它们只是被忽略
    
    
    
    当新的行被写入时,它们从文件里取出被处理根据选定的模式,
    
    
    这个发生通过inotify 或者基于一个轮询间隔。
    
    
    特别是在轮询模式下,文件读取不立即发生,但是会有轻微的延迟(由于处理队列和内部处理)在inotify mode.
    
    
    文件监控支持文件循环,为了全面工作,rsyslogd 必须运行当文件是被循环。
    
    然后,任何留下的行从老的文件被读取和被处理 ,一个新的文件是被处理从头开始。
    
    如果 rsyslogd 停止在循环期间,读取新的文件,但是任何没有被报告的行从之前的文件是不会在获取
    
    当rsyslogd 被停止当监控一个文件时,它记录最后处理的位置然后继续从那时候开始处理。
    
    因此没有数据会丢失在重启期间
    
    
    Metadata 元数据
    
    imfile 模块支持消息元数据,它支持下面的数据项:
    
    
    
    filename 文件名
    
    消息来自文件的名称, 这是很有用的 当使用通配符在文件监控里,因为 它只唯一的方式知道消息来自哪里。
    
    值可以被访问使用 %$!metadata!filename% property.
    
    
    元数据目前是唯一的如果启用,默认的 它是启用的用于input() 语句包含通配符
    
    
    对于所有其他,默认是禁用的。它可以显示的打开或者关闭通过 addMetadata input() parameter, 
    
    
    
    State Files 状态文件
    
    rsyslog 必须跟踪文件的哪个部分已经被处理了, 这个是在所谓的 “state files”完成。
    
    那些文件总是被创建在rsyslog 的工作目录。
    
    为了避免重复状态文件的问题,rsyslog 自动的生成状态文件命名根据下面的规则:
    
    
    字符串"imfile-state:"是被增加在实际文件名称前, 包含了完整的路径:
    
    
    全名是添加到字符串后,但是所有的/是被替换为-便于处理
    
    
    
    作为一个具体的例子, 考虑 文件 /var/log/applog 被监控, 相应的状态文件会被命名为imfile-state:-var-log-applog.
    
    jrhwpt01:/# find . -name "imfile-state*"
    ./imfile-state:-var-log-nginx-access.log
    ./imfile-state:-var-log-nginx-error.log
    
    
    注意 是可以设置一个固定的状态文件通过过时的“stateFile” parameter. 
    
    它是被建议避免这个, 因为用户必须照顾名字冲突。
    
    
    最重要的是,如果 "stateFile" 被设置用于文件监控通配符,相同的状态文件被用于所有的那些文件的发生。
    
    
    总之,这个通常不会工作会导致名字冲突
    
    
    Module Parameters 模块参数;
    
    mode ["inotify"/"polling"]
    Default: “inotify”
    
    Available since: 8.1.5
    
    
    这个指定如果imfile 是运行在 inotify (“inotify”) or polling轮询模式。
    
    传统上,imfile 使用轮询方式,它是更加资源紧张的(更慢的)相比inotify 模式。
    
    
    建议用户开启"polling" 模式只有它们遇到奇怪的文件在inotify 模式。
    
    
    轮询间隔
    
    module(load="imfile" PollingInterval="5")
    
    Default: 10 默认10
    
    
    这个设置指定对文件进行轮询获得新数据的间隔,显而易见,它的效果只有当imfile是运行在polling 模式
    
    
    时间单位是秒,在每个轮询间隔, 所有的文件是被处理以循环的方式
    
    
    一个短的轮询间隔提供了更加快速的消息转发,但是需要更多的系统资源。
    
    虽然它是可能的, 我们强链推荐不要设置polling interval  到0秒。
    
    
    那样会让rsyslogd 变成一个CPU dog, 占用相当多的资源。它是被支持的,
    
    然而, 对于一些极端的情况,这个level 是需要的。
    
    即使你需要快速响应,1秒应该足够好了。
    
    Input Parameters Input 参数:
    input(type="imfile"
    File="/var/log/nginx/access.log"
    Tag="zjzc-frontend01-access"
    Severity="info"
    Facility="local5")
    
    
    File [/path/to/file]
    
    input(type="imfile"
    File="/usr/local/apache-tomcat-7.0.55_8082/logs/localhost_access_log.*.txt"
    Tag="zjzc-api-access01"
    Severity="info"
    Facility="local5")
    
    
    (需要的参数) 这个是被监控的文件,到目前为止,这个必须是一个绝对路径.
    
    注意 通配符是被支持的在文件名字级别
    
    
    Tag
    
    (所需的参数) tag 可以用于消息来自这个文件,如果你看到在标签后的:(冒号)
    
    
    你指定像(like ‘tag=”myTagValue:”’).
    
    
    
    Facility  设备:
    
    syslog 设备可以被分配到行读取,可以被指定以文件形式 格式(e.g. “local0”, “local1”, ...) 
    
    默认是 “local0”.
    
    
    
    Severity [syslogSeverity]
    
    syslog 严重性 可以被废品到行读取,模式是notice
    
    
    Persist State Interval [lines] 坚持状态区间
    
    指定状态文件写的频率 当处理input file时。
    
    默认是0,意味着 新的state file 只有当监控的文件被关闭才会写(结束rsyslog 执行).
    
    
    任何其他值 n意味着 状态文件是被写入 每次 n文件行被处理, 这个设置可以用于保护消息重复由于致命错误(断电)
    
    注意这个设置影响imfile 性能,尤其当设置为一个小的值,频繁写状态文件是非常耗时的
    
    $InputFilePersistStateInterval 1 #回写偏移量数据到文件间隔时间(秒)
    
    
    startmsg.regex [POSIX ERE regex]
    
    
    这个允许 处理多行消息,当设置,一个消息是终止当下一个开始,
    
    startmsg.regex 包含表达式 表示消息的开始。 这个参数是用于正则表达式
    
    readMode [mode] 读模式
    
    
    这个提供支持用于处理多行消息的标准类型。
    
    它是不够灵活的相比startmsg.regex但是提供了更高的性能相比正则处理,注意readMode 
    
    和startmsg.regex 不能都被定义用于相同的输入
    
    
    值范围是从0-2, 确定多行检测方法
    
    0 (默认的)每行是一个新的消息
    
    escapeLF [on/off] (requires v7.5.3+) 
    
    
    这个唯一有意思是如果多行消息是被处理的, LF 字符嵌入到syslog 消息导致大量的问题,
    
    因为大多数工具,甚至 legacy syslog TCP protocol 不期望那些。
    
    
    如果设置为on,这个选项 避免这种问题通过正确的转义LF字符串为4字节的顺序"#012"
    
    MaxLinesAtOnce [number] 一次最多行
    
    这是一个传统的设置只有在轮询模式下支持,在inotify mode, 它是固定为0,所有尝试配置一个不同的值都会被忽略,
    
    会产生一个错误
    
    请注意 将来imfile 版本可能不支持整个参数,推荐不要使用它
    
    
    
    在polling 模式,如果设置为0, 每个文件会完全被处理,然后处理切换到下一个文件。
    
    MaxSubmitAtOnce [number]
    
    每次最大提交数量
    
    
    这是一个专家选项,它可以用于设置最大数量批量输入大小,infile可以生成。
    
    默认是1024, 这是适用于广泛的应用
    
    
    deleteStateOnFileDelete [on/off] (requires v8.5.0+)
    
    默认 on
    
    
    这个参数控制如果状态文件被删除 如果它们相关的主要文件是被删除,通常,
    
    这是一个好的注意,因为其他问题会发生如果一个新的文件具有相同的名字被创建。在这种情况下,imfile会从删除的文件最后的位置开始读取,这通常是你不想要的
    
    reopenOnTruncate [on/off] (requires v8.16.0+)
    Default: off
    
    
    这是一个实验性的东西告诉rsyslog 重新input file 当它被truncated(inode 没有改变 但是文件大小是小于当前偏移量在内存里)
    
    
    input(type="imfile"
    File="/var/log/nginx/scan.log"
    Tag="uat-scan"
    Severity="info"
    PersistStateInterval="1"
    reopenOnTruncate="on"
    Facility="local5")
    

  • 相关阅读:
    mysql 分页查询的优化
    将某盘下所有文件名存在一个文件下面
    java 时间处理经典案例
    完整的发邮件并且生成测试报告的例子
    python 定时任务的执行
    打飞机游戏第一天,诸神归位
    数据库中插入几百万条数据
    面向对象的总结
    Python关于文件操作的总结
    python自动化,自动登录并且添加一个门店
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350193.html
Copyright © 2020-2023  润新知