rsyslog的配置文件使用方法
参考地址:
http://www.rsyslog.com/doc/v8-stable/configuration/property_replacer.html
rsyslog消息模板的定义规则
"%msg:1:2%" :
==》读取从pos从1到2的数据
"%msg:::lowercase%" :
==》将整个消息转换为小写
"%msg:10:$%" :
==》截取pos从10到最后的消息内容
"%msg:R:.*Sev:. \(.*\) \[.*–end%" :
==》取"*Sev:."和[.*之间内的所有内容
R,<regexp-type>,<submatch>,<nomatch>,<match-number>
regexp-type :
==》"BRE" (基本的正则表达式)或"ERE" (扩展的正则表达式)
0-9是标识submatch的,0标识所有内容,1-9标识相应序号的内容。(和shell类似,其实就是正则表达式中括号的用法)
==》如果相同的实例被匹配到,那么第一个匹配的是0,之后的匹配依次排列
nomatch :
==》标识没有匹配到的时候写什么
实例:
%msg:R,ERE,1,FIELD:for (vlan[0-9]\*):--end%
%msg:R,ERE,1,FIELD,1:for (vlan[0-9]\*):--end%
"F,44" :
==》设置分隔符(用ACSII表示),针对分隔符,在引用时,0代表没找到,匹配的实例从1开始数
%msg:F,59:3% :
==》以分号为分隔符,提取第三个区域的内容
"%msg:F,59,5:3,9%" :
==》以分号为分隔符,从第5个子串中,提取3-6位的字符
"%msg:F,32+:2%" :
==》如果多个分隔符(比如:日志中有n个空格作为分割,那么可以添加一个+)
配置过程中的重要步骤:
module(load="imfile" PollingInterval="") #needs to be done just once # File
input(type="imfile"
File="/path/to/file1"
Tag="tag1"
StateFile="statefile1"
Severity="error"
Facility="local7") action(type="omfwd" Target="192.168.0.1" Port="" Protocol="tcp" )
只需要配置输入的模块和输出的action即可;
配置的重点就在于过滤器和输出的格式:
当要截取输入日志内容的话,就需要用到过滤器,用到上面的正则表达式,例如:
$template BiglogFormatTest,"%timestamp% %fromhost-ip% %msg:32:$%\n"
if $programname == 'test-run' then @@192.168.15.161:;BiglogFormatTest
当用到数据库并且默认的格式不符合我们的要求的话,我们就需要另外定义:
$template tpl,”insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (‘%msg%’, %syslogfacility%, ‘%HOSTNAME%’, %syslogpriority%, ‘%timereported:::date-mysql%’, ‘%timegenerated:::date-mysql%’, %iut%, ‘%syslogtag%’)”,SQL
*.* :ommysql:localhost,Syslog,rsyslog,;tpl
准备找一个可以收集日志并分析的软件,最后选定了rsyslog+LogAnalyzer;根据网上的配置说明,最后的结果类似于,先用rsyslog将日志写入mysql,然后loganalyzer搜索mysql得到结果;
analyzer的设置就是配置一个数据库,没有可操作的余地;
rsyslog分为输入、预处理、解析过滤、输出等几个部分,输入输出只能指定来源和去向,针对数据的操作只能在filter中寻求方法。
其实就是定义一个正则表达式,将过滤后的内容,根据配置的原则放到指定的输出端。传统的配置文件不能定义变量,意味着rsyslog只能用于截取日志和选择出口。
当然为了适应花样百出的需求,新版的rsyslog都支持它自己定义的RainerScript,可能会更加灵活。
相关的推荐(日志的运维与优化):http://network.51cto.com/art/201610/520295.htm
rsyslog的配置文件使用方法的更多相关文章
- jar包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法
jar包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法 用系统属性System.getProperty("user.dir")获得执行命令的目录(网上 ...
- spark读取外部配置文件的方法
spark读取外部配置文件的方法 spark-submit --files /tmp/fileName /tmp/test.jar 使用spark提交时使用--files参数,spark会将将本地的 ...
- SpringBoot加载子模块配置文件的方法
这两天开始学习SpringBoot框架,按照官方的文档,很轻易地就把单模块的项目启动了,但在使用maven搭建多模块的时候遇到了子模块配置文件没有加载的问题 项目架构是这样的 zero |-ws |- ...
- SpringBoot读取外部配置文件的方法
SpringBoot读取外部配置文件的方法 Spring高级之注解@PropertySource详解(超详细) 1.@PropertySource(value = {"classpath:c ...
- C# 读写App.config配置文件的方法
我们经常会希望在程序中写入一些配置信息,例如版本号,以及数据库的连接字符串等.你可能知道在WinForm应用程序中可以利用Properties.Settings来进行类似的工作,但这些其实都利用了Ap ...
- Thinkphp 解决写入配置文件的方法
在/Application/Common/Common创建function.php,然后添加以下代码: <?php /** * [writeArr 写入配置文件方法] * @param [typ ...
- LR java Vuser 相关依赖JAR包,配置文件处置方法
JAR包,配置文件依赖有两种处理方法 1.放到工程文件夹下(lr脚本目录),不支持负载机调用 2.F4 classpath设置加载jar包和配置文件的整个文件夹,麻烦些,但支持负载机调用(与http ...
- 将所有程序设置XML集中到一个单独XML配置文件的方法:使用appSettings元素的configSource元素
在.NET程序中,程序的配置文件默认都会放在程序根目录下的web.config(网站程序)或App.config(控制台等程序),在该配置文件中可以定义若干程序配置信息. 在此以网站程序为例,首先将下 ...
- java读取properties配置文件的方法
app.properties mail.smtp.host=smtp.163.com mail.transport.protocol=smtp import java.io.InputStream; ...
随机推荐
- ArrayList.clear、=null、new Arraylist之间的对比区别
参考博文 1.使用ArrayList的对象方法clear() List list = new ArrayList(); List list1 = list; list.add(1); list.add ...
- Vue运行报错--not defined
按F12键进入调试模式,谷歌总是提示Uncaught ReferenceError: ——is not defined这个错误. 原来是因为虽然是传递的值,但是在函数传参的时候也要加引号,加上引号后就 ...
- 网页title左边显示网页的logo图标
打开某一个网页会在浏览器的标签栏处显示该网页的标题和图标,当网页被添加到收藏夹或者书签中时也会出现网页的图标,怎么在网页title左边显示网页的logo图标呢? 方法1: 找一个或者作一个ico文件, ...
- maven阿里云镜像及本地仓库
一.添加阿里云镜像 1 找到maven的安装目录,conf文件夹下的setting.xml文件 2 打开setting.xml文件,找到mirrors节点添加阿里镜像库地址: <mirror&g ...
- Digits of Factorial LightOJ - 1045
题目就不再发了,大致意思就是给你一个十进制数n,算出阶乘后转换成K进制的数,你来算一下它的位数. 坑点在哪呢,就是这个数可能算阶乘的时候没放弄了,比如1000000,做过最多单算阶乘的题也就是让你算到 ...
- cin 与 getchar 中的坑
今天在一道题上发现一个坑. 输入三个字符,按以下规则求其平均值. (1)如果是数字0~9,那么直接参与求值: (2)如果是其他字符,则其ASCII码参与求值. 输入 输入数据有多组.第一行是数据的组数 ...
- python 汉字编码问题
问题描述:我要判断的两个字符串是否相等(‘区站号’==‘区站号’),第一个值是我从txt文件导入的数据,第二个值是我自己定义的并使用decode('utf-8')得到的,如果你用print函数打印这两 ...
- Codeforces 985 E - Pencils and Boxes
E - Pencils and Boxes 思路: dp 先排个序,放进一个袋子里的显然是一段区间 定义状态:pos[i]表示小于等于i的可以作为(放进一个袋子里的)一段区间起点的离i最近的位置 显然 ...
- POSTMAN模拟http请求
附加小知识: chrome浏览器fitler中的XHR作用是什么? 记录ajax中的请求. AJAX :异步 JavaScript 和 XML 1.是一种用于创建快速动态网页的技术. 2. 通过在后台 ...
- vs2015多行注释与取消多行注释
注释: 先CTRL+K,然后CTRL+C 取消注释: 先CTRL+K,然后CTRL+U