热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ELKDefineMutilplePipelinesForLogstash

Logstash有一个对初学者来说很大的坑,就是安装之后直接运行,它将默认只使用一个pipeline,把conf.d下面的配置文件一次全加

Logstash有一个对初学者来说很大的坑,就是安装之后直接运行,它将默认只使用一个pipeline,把conf.d下面的配置文件一次全加载了。

如果不同配置文件的输入输出有冲突,比如缺少必要的条件判断,就会发生意想不到的结果。

使用多管道,势在必行。


Default Pipeline


pipeline.yml

默认的pipeline配置是这样子的。

# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
# https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html- pipeline.id: mainpath.config: "/etc/logstash/conf.d/*.conf"

conf.d/app.conf

然后配置里需要一大堆ifelse,来区分来自不用的应用。

比如单说处理Filebeat的log,就需要在filter里根据不同的关键字分别进行处理。

input {beats {port => 5044}
}filter {if [fields][type] == "aaaa" {grok {...}date {...}} else if [fields][type] == "bbbb" {grok {...}date {...}} else if [fields][type] == "cccc" {grok {...}if "_grokparsefailure" in [tags] {drop{}}date {...}}
}output {if [fields][type] in ["aaaa", "bbbb", "cccc"] {elasticsearch {hosts => ["http://192.168.0.888:9200"]index => "%{[@metadata][beat]}-%{[fields][type]}-%{+YYYY.MM}"}}
}

输出其实也一样,不过这里用了些适配的技巧。

增加其他类型,一样要增加ifelse的判断。


Multiple Pipelines


pipeline.yml

在pipeline里按App分流。

每个App分别定义一个pipeline,再放到独立的配置文件里。

- pipeline.id: beatsconfig.string: |input { beats { port => 5044 } }output {if [fields][type] == "aaaa" { pipeline { send_to => aaaa_addr }} else if [fields][type] == "bbbb" { pipeline { send_to => bbbb_addr }} else if [fields][type] == "cccc" { pipeline { send_to => cccc_addr }}}- pipeline.id: aaaapath.config: "/etc/logstash/conf.d/{aaaa,beats_out}.conf"- pipeline.id: bbbbpath.config: "/etc/logstash/conf.d/{bbbb,beats_out}.conf"- pipeline.id: ccccpath.config: "/etc/logstash/conf.d/{cccc,beats_out}.conf"

配置文件路径支持适配的写法。每个App分别加载两个文件。

这里这样处理主要是因为他们的output配置刚好可以是一样的。


beats_out.conf

虽然共享同一个配置,但是因为在不同管道,所以不需要加ifelse也不会混乱。

output {elasticsearch {hosts => ["http://192.168.0.888:9200"]index => "%{[@metadata][beat]}-%{[fields][type]}-%{+YYYY.MM}"}
}

aaaa.conf

从上游管道地址接收输入。

直接处理log不需要再判断。

input { pipeline { address => aaaa_addr } }filter {grok {...}if "_grokparsefailure" in [tags] {drop{}}date {...}
}

调试

可以先用最简单的例子来调试,一个一个添加。

- pipeline.id: upstreamconfig.string: input {file { path => "/etc/logstash/iiii.log" }} output { pipeline { send_to => [myVirtualAddress] } }
- pipeline.id: downstreamconfig.string: input { pipeline { address => myVirtualAddress } } output {file { path => "/etc/logstash/oooo.log" }}

我就是太心急了,直接刷刷一大堆,结果总是有错。

半天才发现,原来只是删除ifelse的时候,有些文件没有删掉多余的缩进,空格有些混乱,肉眼又很难看出来。


推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • Logstash安装配置
    阅读此文请先阅读上文:[大数据]-Elasticsearch5.3.1IK分词,同义词联想搜索设置,前面介绍了ES,Kiba ... [详细]
  • 简短的问题是:是否可以从远程服务器中提取日志(在日志文件中)并将其提取到 ... [详细]
author-avatar
360691894_8a5c48
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有