logstash multi pipeline的使用
logstash multi pipeline的使用
一、背景
假设我们需要从多个渠道来收集数据,比如:1、从文件收集。2、从tcp收集。不同的渠道收集过来的数据需要做不同的处理。那么我们这个时候应该如何处理呢?
二、解决方案
1、方案一:
使用同一个 logstash 实例,然后将在一个 pipeline 中,接收多个输入,比如:
input {
file {}
file {}
tcp {}
}
这样虽然可以实现,但是我们 在 filter 和 output阶段如果不同的输入存在不同的过滤、输出等,那么这个文件将会非常复杂,需要进行各种判断,不好维护。
2、方案二:
使用多个 logstash 实例,每个 logstash 实例处理不同的输入。这样虽然可以实现,但是 logstash 稍微有点耗费性能,也是不可取的。
3、方案三:
在同一个 logstash 实例中,使用多个 pipeline,每个 pipeline 处理不同的 input,filter和out。即配置分散在多个配置文件中。
三、实现步骤
此处采用上方的
方案三来实现。
1、编写 pipeline 文件
1、从文件收集,输出到控制台
vim file-pipeline.conf
input {
file {
path => ["/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/multi-pipeline/file-pipeline.log"]
start_position => "end"
sincedb_path => "/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/multi-pipeline/sincedb.db"
sincedb_write_interval => "15 seconds"
mode => "tail"
type => "file-pipeline"
}
}
filter {
}
output {
stdout {
codec => rubydebug {
metadata => true
}
}
}
2、从socket收集,输出到控制台
vim tcp-pipeline.conf
# 开启一个tcp监听在9092端口
# id 的值建议设置成唯一的值,这在多个tcp input时,使用监控api时非常有用的。
input {
tcp {
port => 9202
host => "127.0.0.1"
mode => "server"
type => "tcp-pipeline"
id => "console-tcp"
}
}
filter {
}
output {
stdout {
codec => line {
charset => "UTF-8"
}
}
}
注意️:
1、tcp 中的 id的值建议设置成一个唯一的值,这个当我们有多个 tcp 输入时,在我们使用监控api会非常有用。

2、修改 pipelines.yml 配置文件
vim LS_HOME/config/pipelines.yml
- pipeline.id: file-pipeline
path.config: "/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/multi-pipeline/file-pipeline.conf"
- pipeline.id: tcp-pipeline
queue.type: persisted
path.config: "/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/multi-pipeline/tcp-pipeline.conf"
注意️:
1、如果上方的配置文件使用的是一个 pipeline,比如删除下方的 tcp-pipeline,将 file-pipeline的 path.config 的值修改成 .../*.conf,
那么此时会共用 output,会发现数据重复。
即修改成:
# 这样是多个配置文件共用一个 pipeline,filter\output等会共享。
- pipeline.id: file-pipeline
path.config: "/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/multi-pipeline/*.conf"
3、启动logstash
bin/logstash
注意️:
1、此处的启动命令后不可跟 -e或-f,如果跟了,则不会使用默认的 config/pipelines.yml。

4、测试
1、测试 file 收集
cd /Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/multi-pipeline
echo "观察控制台输出" >> file-pipeline.log
2、测试从 tcp 收集
nc 127.0.0.1 9202
123456 -> 观察控制台输出
3、结果

四、参考文档
1、tcp 文件收集
2、多pipeline https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html
logstash multi pipeline的使用的更多相关文章
- Logstash学习-Hello World
1.安装 rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearchcat > /etc/yum.repos.d/l ...
- 开始使用Logstash
开始使用Logstash 本节将指导处理安装Logstash 和确认一切是运行正常的, 后来的章节处理增加负载的配置来处理选择的使用案例. 这个章节包含下面的主题: Installing Logsta ...
- logstash grok正则调试
logstash 正则调试: nginx 配置: log_format main '$remote_addr [$time_local] "$request" '; logstas ...
- 往redis中存储数据是利用pipeline方法
在redis中保存数据时,保存和设置有效时间是分开写的话,如果中间出现的异常,这会导致数据永久有效,因此就可以采用pipeline方法. # 创建redis管道对象,可以一次执行多个语句 pipeli ...
- Redis的Multi的内幕真相
今天遇到个Redis奇慢的问题,断点分析发现跟multi有关. 由于本人太忙不想去阅读Redis Server的源代码(其实是懒),就通过TCPDump来分析吧. 步骤: 1. 先在Redis Ser ...
- logstash 5.1.1 学习
Logstash 5.1.1 安装配置 安装和配置 java 环境: [root@ ~]# tar xf jdk-8u71-linux-x64.tar.gz [root@ ~]# mv jdk1.8. ...
- [svc]logstash和filebeat之间ssl加密
cfssl生成证书 wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl wget https://pkg ...
- 微服务日志监控与查询logstash + kafka + elasticsearch
使用 logstash + kafka + elasticsearch 实现日志监控 https://blog.csdn.net/github_39939645/article/details/788 ...
- SQL数据同步到ElasticSearch(三)- 使用Logstash+LastModifyTime同步数据
在系列开篇,我提到了四种将SQL SERVER数据同步到ES中的方案,本文将采用最简单的一种方案,即使用LastModifyTime来追踪DB中在最近一段时间发生了变更的数据. 安装Java 安装部分 ...
随机推荐
- Linux - 解决使用 apt-get 安装 yum 的时耗报 E: Unable to locate package yum 的错误
问题背景 在 Linux 系统下使用 apt-get 命令安装 yum 库报错 apt-get install yum E: Unable to locate package yum 问题解决 一行命 ...
- Fastjson反序列化漏洞基础
Fastjson反序列化漏洞基础 FastJson是alibaba的一款开源JSON解析库,可用于将Java对象转换为其JSON表示形式,也可以用于将JSON字符串转换为等效的Java对象. 0x0 ...
- PHP中环境变量的操作
在 PHP 中,我们可以通过 phpinfo() 查看到当前系统中的环境变量信息(Environment).在代码中,我们也可以通过两个函数,查看和修改相应的环境变量信息. getenv() 获取环境 ...
- Mixed Content: The page at 'xxx' was loaded over HTTPS, but requested an insecure resource 'xxx'.
HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的.在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的. Mixed Content: T ...
- 【PHP】保留两位小数并向上取整
问题: 一开始我想着数值*100然后向上取整然后再除以一百 $num = 1000 * 0.9634; echo $num; echo '</br>'; $res = ceil($num ...
- Centos8.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台
前言 本篇文章引用了小菠萝测试笔记,大部分内容非原创,基于自身实操过程中,完善了部分. 本篇随笔是在Linux上搭建的,后面会补充在docker以及k8s上如何部署安装 工具介绍 工具 介绍 Jmet ...
- 使用uView UI+UniApp开发微信小程序--微信授权绑定和一键登录系统
在前面随笔<使用uView UI+UniApp开发微信小程序>和<使用uView UI+UniApp开发微信小程序--判断用户是否登录并跳转>介绍了微信小程序的常规登录处理和验 ...
- Charles安装https证书
Charles抓取https的包,出现unknow,需要安装https证书.
- 51nod1821-最优集合【贪心】
正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1821 题目大意 \(n\)个可重集合,\(T\)次询问,询问将集合\(S ...
- SQL Server 命令备忘录(持续更新...)
1.删除表内容并重置ID truncate table 表名 2.开启SqlDependency监控数据库 在数据中执行以下查询: SELECT is_broker_enabled FROM sys. ...