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; ...
随机推荐
- 【Python】【jupyter-notebook】
1. win7 安装:https://www.cnblogs.com/zlslch/p/6984403.html 1.Jupyter Notebook 和 pip 为了更加方便地写 Python ...
- C# 使用 protobuf 进行对象序列化与反序列化
protobuf 是 google的一个开源项目,可用于以下两种用途: (1)数据的存储(序列化和反序列化),类似于xml.json等: (2)制作网络通信协议. 源代码下载地址:https://gi ...
- 力扣(LeetCode) 849. 到最近的人的最大距离
在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的. 至少有一个空座位,且至少有一人坐在座位上. 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上. 返回 ...
- AD中的library中有些文件的后缀有.intlib .schlib .pcblib 这些都是库文件,但有什么区别呢?
intlib 是集成原理图和PCB封装的 schlib .只有原理图 pcblib 只有PCB封装 参考资料 1 https://zhidao.baidu.com/question/259298801 ...
- 通过 rufus 创建启动U盘,安装 VMWare Esxi
现在谁还用光盘安装系统啊. 做出启动盘后,U盘启动进行安装才是王道. https://www.starwindsoftware.com/blog/create-an-esxi-6-5-installa ...
- 动态加载DataGrid表头及数据
初始化表头 js生成前端 /*初始化表头*/ function initDataGridTitle(id) { $.ajax({ url: '/${appName}/report/***/***', ...
- jq 倒计时
引入jq 注 在IE和safari 如果时间出现NAN 将时间格式改为YYYY/MM/DD HH:MM:SS 例:var d2 = new Date("2019/02/18 15:59&qu ...
- LOJ6036编码
每个串拆成两个,都插入trie数. 把trie树建出来后,每一条从根到叶子的链上最多只能有一个变量为1. 这是个经典的前后缀优化2-sat建图的套路. 树上的做法也就是边dfs边做而已. #inclu ...
- python+requests接口自动化测试框架实例详解教程
1.首先,我们先来理一下思路. 正常的接口测试流程是什么? 脑海里的反应是不是这样的: 确定测试接口的工具 —> 配置需要的接口参数 —> 进行测试 —> 检查测试结果(有的需要数据 ...
- 4月24 php基础及函数的应用
PHP是一种被广泛认可应用,运行在服务端的脚本语言,PHP需要安转PHP应用程序服务器去解释执行,是用来协助Web服务器工作的编程语言,因此所写的任何代码只有在www文件下的才能实施预览.PHP是一种 ...