【原创】大叔经验分享(82)logstash一个实例运行多个配置文件
logstash一个实例运行多个配置文件,将所有配置文件放到以下目录即可
/usr/share/logstash/pipeline
但是默认行为不是每个配置文件独立运行,而是作为一个整体,每个input会匹配所有的filter,然后匹配所有的output,可能会导致数据被错误的处理以及发送到错误的地方;
解决方法一:
在input中设置一个变量,在filter和output中判断该变量,实现每个配置文件独立运行,不会相互影响,使用哪个变量呢?
input默认有很多通用参数,但是只有type可用,官方描述如下:
Add a
typefield to all events handled by this input.Types are used mainly for filter activation.
The type is stored as part of the event itself, so you can also use the type to search for it in Kibana.
input中的type参数会被添加到event中,所以后续在filter和output中都可以使用,其他参数就不行了,配置如下:
input {
  jdbc {
    ...
    type => "some_type"
  }
}
filter {
  if [type] == "some_type" {
    ...
  }
}
output {
  if [type] == "some_type" {
    ...
  }
}
如果一切正常,恭喜你,如果还有问题,有可能是你的event里本来就有type字段,然后又赋值一个,会出现一个type数组(追加而不是覆盖),这时有两个问题:
1)filter和output中的if判断失效,你的数据压根就不会处理也不会发送出去;
2)你的数据中的type字段被改乱了;
解决方法二:
在event中手工添加一个变量,比如my_type,配置如下:
input {
  jdbc {
    ...
    statement => "select *, 'some_type' my_type from my_table where update_time > :sql_last_value"
    ...
  }
}
filter {
  if [my_type] == "some_type" {
    ...
  }
}
output {
  if [my_type] == "some_type" {
    ...
  }
}
还有其他解决方法详见下边引用的官方文档,包括各种if判断以及@metadata变量的使用;
参考:
jdbc input
https://www.elastic.co/guide/en/logstash/6.3/plugins-inputs-jdbc.html
event dependent configuration
https://www.elastic.co/guide/en/logstash/6.7/event-dependent-configuration.html
【原创】大叔经验分享(82)logstash一个实例运行多个配置文件的更多相关文章
- 【原创】大叔经验分享(13)spark运行报错WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
		
本地运行spark报错 18/12/18 12:56:55 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting ...
 - 【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?
		
前言 之前也分享过很多工作中踩坑的经验: 一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移? [原创]经验分享:一个Content-Length引发的血案(almost.. ...
 - Expression Blend4经验分享:制作一个简单的图片按钮样式
		
这次分享如何做一个简单的图片按钮经验 在我的个人Silverlight网页上,有个Iphone手机的效果,其中用到大量的图片按钮 http://raimon.6.gwidc.com/Iphone/de ...
 - Expression Blend4经验分享:制作一个简单的文字按钮样式
		
首先在Grid里放一个TextBlock,对象时间线窗口的结构树如下 右键点击grid,选择构成控件 会弹出构成控件的对话框,选择你要构成的控件类型,控件名称,控件样式存储位置 这里我们选择butto ...
 - Sqlserver Sql Agent Job 只能同时有一个实例运行
		
Sqlserver Sql Agent中的Job默认情况下只能有一个实例在运行,也就是说假如你的Sql Agent里面有一个正在运行的Job叫"Test Job",如果你现在再去启 ...
 - c# 只允许一个实例运行
		
1.单件模式,Singleton,应用程序只能允许一个实例在运行.这是最好的解决方法2.查询系统进程里是不是已经运行.private void Form1_Load(object sender, Ev ...
 - 【原创】大叔经验分享(43)logstash设置jdbc_default_timezone后报错
		
logstash6.6.0-6.6.2版本使用jdbc input plugin时如果设置了jdbc_default_timezone,会报错: { 2012 rufus-scheduler inte ...
 - 【原创】大叔经验分享(90)linux服务器iowait和负载很高
		
# top top - 21:21:51 up 207 days, 1:30, 5 users, load average: 0.90, 0.79, 1.62 Tasks: 249 total, 1 ...
 - 【原创】大叔经验分享(28)ELK分析nginx日志
		
提前安装好elk(elasticsearch.logstach.kibana) 一 启动logstash $LOGSTASH_HOME默认位于/usr/share/logstash或/opt/logs ...
 
随机推荐
- JAVA的main方法
			
在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方 法有很大的不同,比如方法的名字必须是main,方法必须 ...
 - [drf]源码和序列化梳理
			
drf源码继承管理 # drf继承关系 View APIView as_view: 执行父类的as_view 调用dispatch dispatch init_request request.quer ...
 - Flex 布局教程实例
			
Flex 布局教程实例 一.Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 F ...
 - 最新react-native(Expo)安装使用antd-mobile-rn组件库
			
1\安装antd-mobile-rn 库 npm install antd-mobile-rn --save 2.按需加载 npm install babel-plugin-import --save ...
 - Python升级提示Tkinter模块找不到的解决方法
			
一.安装tkinter在Linux中python默认是不安装Tkinter模块,复制代码 代码如下:[root@li250-193 ~]# pythonPython 2.6.6 (r266:84292 ...
 - Consul 随记
			
consul 包含多个组件,但是作为一个整体对外提供服务发现和服务配置工具: 提供的关键特性有: 服务发现:发现的是服务对应的IP地址和PORT端口号 健康检查:检查服务节点状态 Key/Value存 ...
 - Maven打包将依赖的jar一同打进去
			
在pom.xml文件中添加: <build> <plugins> <plugin> <artifactId>maven-assembly-plugin& ...
 - Arrange seat of a bench for people
			
Given a bench with n seats and few people sitting, tell the seat number each time when a new person ...
 - socket编程之黏包
			
原理概述 上图是我在学习python的socket编程中遇到的黏包问题所画,以实例来说明这个高大上的黏包问题. 我们知道socket()实例中sendall()方法是无论数据有多大,一次性提交写入缓冲 ...
 - ubuntu安装ubuntu-kylin-software-center
			
sudo apt-get updatesudo apt-get upgradesudo apt-get install --reinstall ubuntu-kylin-software-center ...