k8s logstash多管道配置
背景
采用的是标准的ELK+filebeat架构
ES版本:7.17.15
logstash版本:7.17.15
filebeat版本: 7.17.15
helm版本:7.17.3,官方地址:elastic/helm-charts
说一下为什么会想到使用多管道的原因
我们刚开始部署的是单管道,里面有多种类型的日志需要传输,比如埋点日志、系统日志、日志推送至kafka、日志推送至阿里云sls
后来在系统运行中,开发人员不够细心,在配置埋点日志的时候,出现了部分语法错误,导致整个日志系统受到影响,logstash整个推送都不可用,相当于没有隔离性,所以,在调研的时候,看到了多管道,多实例,所以来进行研究一下。
为什么使用多管道?
优点
- 隔离性:每个管道可以独立处理不同类型的日志或数据流,有助于数据的分类和管理。
- 灵活性:可以在同一实例中灵活配置和管理多个管道,以适应不同的需求。
- 资源共享:多个管道共享同一个Logstash实例的资源,提高资源利用率。
缺点
- 复杂性:配置和管理多个管道会增加复杂性,特别是在调试和维护时。
- 性能瓶颈:当管道数量过多或数据量很大时,可能导致性能瓶颈,影响整体处理效率。
适用于需要在同一Logstash实例中处理不同类型数据的场景,提高资源利用率,但可能增加配置和管理的复杂性。
相较于单管道
单管道配置简单,适用于数据流较少或需求简单的场景,并且他的处理流程单一,性能更容易预测和管理
同时,他的缺点也很明显,不具备隔离性,正如我背景里面遇到的问题,灵活性,拓展性也比较差。
适用于简单数据流的处理
相较于多实例
优点:
- 高可用性:通过部署多个Logstash实例,可以提高系统的高可用性,减少单点故障的风险。
- 扩展性强:可以根据需求增加实例,水平扩展系统处理能力。
- 独立性:每个实例可以独立处理特定的数据流或任务,减少相互影响。
缺点:
- 资源开销大:需要更多的资源(内存、CPU等)来运行多个实例,增加运维成本。
- 管理复杂:需要配置和管理多个实例,增加了运维的复杂性。
适用于高可用性和高扩展性需求的场景,独立性强,但资源开销大,管理复杂
helm的方式配置
整体分为两部分,主管道和子管道
主管道用来接受数据来源,以及公共的处理,通过filter处理之后,在将信息分发给子管道,子管道来控制输出源
在logstash需要配置两个地方:
- 一个是pipeline.yml文件,配置需要加载的管道文件以及id;
- 一个是管道文件配置内容,确定输入源以及输出源头;
下面的方式采用的helm的方式,docker方式或者其他方式可参考一下
示例如下:
filebeat配置
filebeat.inputs:
- type: logpaths:- /tmp/logs/biz/*.logfields:fb_collect_app: xxx-xxx-test-bizfb_collect_type: bizlogsystem_env: dev # 如果不包含 "prod",设置为testsend_kafka: "false"fields_under_root: true
- type: logpaths:- /tmp/logs/sys/*.logmultiline.pattern: '^\s|^"|^Caused by:'multiline.match: afterfields:fb_collect_app: xxx-xxx-test-sysfb_collect_type: syslogsystem_env: dev # 如果不包含 "prod",设置为testfields_under_root: true
output.logstash:hosts:- "xxx"
logstash配置
values.yaml
# 配置文件
logstashConfig:logstash.yml: |# 如果处理的字符中含有\t\n等字符,是不生效的,我们需要开启logstash的字符转义功能,config.support_escapes: trueconfig.support_escapes: truehttp.host: 0.0.0.0pipeline.ecs_compatibility: v1pipelines.yml: |- pipeline.id: base-processingpath.config: "/usr/share/logstash/pipeline/base-processing.conf"- pipeline.id: syslog-processingpath.config: "/usr/share/logstash/pipeline/syslog-processing.conf"- pipeline.id: bizlog-processingpath.config: "/usr/share/logstash/pipeline/bizlog-processing.conf"
# 管道内容base-processing.conf: |input {beats{port => "5055"}}output {if [fb_collect_type] == "bizlog" {pipeline {send_to => bizlogs}if [send_kafka] == "true" {stdout { codec => rubydebug }pipeline {send_to => kafkalogs}}}else if [fb_collect_type] == "syslog" {pipeline {send_to => syslogs}}}bizlog-processing.conf: |input {pipeline {address => bizlogs}}filter {ruby {code => "event.cancel if (Time.now.to_f - event.get('@timestamp').to_f) > (60 * 60 * 24 * 3)"}json {source => "message"skip_on_invalid_json => true}date {match => ["business_time","yyyy-MM-dd HH:mm:ss.SSS"]target => "@timestamp"}} output {elasticsearch {hosts => ["elasticsearch-master.business:9200"]index => "%{fb_collect_app}-%{+YYYY.MM.dd}"user => elasticpassword => "xxx"}}syslog-processing.conf: |input {pipeline {address => syslogs}}filter {ruby {code => "event.cancel if (Time.now.to_f - event.get('@timestamp').to_f) > (60 * 60 * 24 * 3)"}mutate{strip => ["message"]gsub => [ "message", "\r", " " ]gsub => [ "message", "\t", " " ]gsub => [ "message", "\n", " " ]gsub => [ "message", "\u0000", " " ]}json {source => "message"skip_on_invalid_json => true}date {match => ["timestamp","yyyy-MM-dd HH:mm:ss.SSS"]target => "@timestamp"}} output {elasticsearch {hosts => ["elasticsearch-master.business:9200"]index => "%{fb_collect_app}-%{+YYYY.MM.dd}"user => elasticpassword => "xxx"}}kafka-processing.conf: |input {pipeline {address => kafkalogs}}output {stdout { codec => rubydebug }}
其中,base-processing.conf为主管道,用来确定接收源的,然后在根据条件,将数据输入到某个pipeline中,
最后pipeline来觉得输出到es那个索引下
最后重启logstash下即可生效
踩坑点
ECS Compatibility mode
部署之后,logstash一直报错:
Relying on default value of pipeline.ecs_compatibility, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode
这个是因为Logstash 正在使用默认的 ECS(Elastic Common Schema)兼容性模式,这可能在未来的版本中发生变化。为了避免升级时出现意外变化,你可以在 Logstash 的配置文件中显式声明所需的 ECS 兼容性模式。
解决方案:
在 logstash.yml
文件中添加或修改 pipeline.ecs_compatibility
参数。你可以选择以下几种模式之一:
disabled
: 不使用 ECS 兼容性模式。v1
: 使用 ECS 1.0 兼容性模式。v8
: 使用 ECS 8.0 兼容性模式(如果你的 Logstash 版本支持)。
例如,设置 ECS 兼容性模式为 disabled
:
pipeline.ecs_compatibility: disabled
或者设置为 ECS 1.0 兼容性模式:
pipeline.ecs_compatibility: v1
我的logstash版本是7.17.15,选择的是ECS 1.0兼容模式
配置完成后,重启logstash
相关文章:
k8s logstash多管道配置
背景 采用的是标准的ELKfilebeat架构 ES版本:7.17.15 logstash版本:7.17.15 filebeat版本: 7.17.15 helm版本:7.17.3,官方地址:elastic/helm-charts 说一下为什么会想到使用多管道的原因 我们刚开始…...
【CMU博士论文】结构化推理增强大语言模型(Part 0)
问题 :语言生成和推理领域的快速发展得益于围绕大型语言模型的用户友好库的普及。这些解决方案通常依赖于Seq2Seq范式,将所有问题视为文本到文本的转换。尽管这种方法方便,但在实际部署中存在局限性:处理复杂问题时的脆弱性、缺乏…...
Odoo创建一个自定义UI视图
Odoo能够为给定的模型生成默认视图。在实践中,默认视图对于业务应用程序来说是绝对不可接受的。相反,我们至少应该以合乎逻辑的方式组织各个字段。 视图在带有Actions操作和Menus菜单的 XML 文件中定义。它们是模型的 ir.ui.view 实例。 列表视图 列表视…...
Day16_集合与迭代器
Day16-集合 Day16 集合与迭代器1.1 集合的概念 集合继承图1.2 Collection接口1、添加元素2、删除元素3、查询与获取元素不过当我们实际使用都是使用的他的子类Arraylist!!! 1.3 API演示1、演示添加2、演示删除3、演示查询与获取元素 2 Iterat…...
html2canvas + jspdf 纯前端HTML导出PDF的实现与问题
前言 这几天接到一个需求,富文本编辑器的内容不仅要展示出来,还要实现展示的内容导出pdf文件。一开始导出pdf的功能是由后端来做的,然后发现对于宽度太大的图片,导出的pdf文件里部分图片内容被遮盖了,但在前端是正常显…...
【JVM】JVM调优练习-随笔
JVM实战笔记-随笔 前言字节码如何查看字节码文件jclasslibJavapArthasArthurs监控面板Arthus查看字节码信息 内存调优内存溢出的常见场景解决内存溢出发现问题Top命令VisualVMArthas使用案例 Prometheus Grafana案例 堆内存情况对比内存泄漏的原因:代码中的内存泄漏并发请求问…...
如何解决 CentOS 7 官方 yum 仓库无法使用
一、背景介绍 编译基于 CentOS 7.6.1810 镜像的 Dockerfile 过程中,执行 yum install 指令时,遇到了错误:Could not resolve host: mirrorlist.centos.org; Unknown error。 二、原因分析 官方停止维护 CentOS 7。该系统内置的 yum.repo 所使用的域名 mirrorlist.centos.o…...
分布式唯一id的7种方案
背景 为什么需要使用分布式唯一id? 如果我们的系统是单体的,数据库是单库,那无所谓,怎么搞都行。 但是如果系统是多系统,如果id是和业务相关,由各个系统生成的情况下,那每个主机生成的主键id就…...
嵌入式物联网在医疗行业中的应用——案例分析
作者主页: 知孤云出岫 目录 嵌入式物联网在医疗行业中的应用——案例分析引言1. 智能病房监控1.1 实时患者监控系统 2. 智能医疗设备管理2.1 设备使用跟踪与维护 3. 智能药物管理3.1 药物分配与跟踪 4. 智能远程医疗4.1 远程患者监控与诊断 总结 嵌入式物联网在医疗行业中的应…...
C语言 底层逻辑详细阐述指针(一)万字讲解 #指针是什么? #指针和指针类型 #指针的解引用 #野指针 #指针的运算 #指针和数组 #二级指针 #指针数组
文章目录 前言 序1:什么是内存? 序2:地址是怎么产生的? 一、指针是什么 1、指针变量的创建及其意义: 2、指针变量的大小 二、指针的解引用 三、指针类型存在的意义 四、野指针 1、什么是野指针 2、野指针的成因 a、指…...
【人工智能大模型】文心一言介绍以及基本使用指令
目录 一、产品背景与技术基础 二、主要功能与特点 基本用法 指令的使用 注意事项 文心一言(ERNIE Bot)是百度基于其文心大模型技术推出的生成式AI产品。以下是对文心一言的详细介绍: 一、产品背景与技术基础 技术背景:百度…...
AI绘画入门实践|Midjourney 的模型版本
模型分类 Midjourney 的模型主要分为2大类: 默认模型:目前包括:V1, V2, V3, V4, V5.0, V5.1, V5.2, V6 NIJI模型:目前包括:NIJI V4, NIJI V5, NIJI V6 模型切换 你在服务器输入框中输入 /settings: 回车后…...
Web3时代的教育技术革新:智能合约在学习管理中的应用
随着区块链技术的发展和普及,Web3时代正在为教育技术带来前所未有的革新和机遇。智能合约作为区块链技术的核心应用之一,不仅在金融和供应链管理等领域展示了其巨大的潜力,也在教育领域中逐渐探索和应用。本文将探讨智能合约在学习管理中的具…...
云计算实训室的核心功能有哪些?
在当今数字化转型浪潮中,云计算技术作为推动行业变革的关键力量,其重要性不言而喻。唯众,作为教育实训解决方案的领先者,深刻洞察到市场对云计算技能人才的迫切需求,精心打造了云计算实训室。这一实训平台不仅集成了先…...
芯科科技第五届物联网开发者大会走进世界各地,巡回开启注册
中国,北京 – 2024年7月18日 – 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)今日宣布,其2024年Works With开发者大会现正开放注册…...
Python创建Excel表和读取Excel表的基础操作
下载openpyxl第三方库 winr打开命令行输入cmd 这个如果不行可以试试其他方法,在运行Python代码的软件里也有直接下载的地方,可以上网搜索 创建Excel表 示例代码:最后要记得保存,可以加一句提示语句。 import openpyxl lst[100,…...
JVM(day2)经典垃圾收集器
经典垃圾收集器 Serial收集 使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。 ParNew收集器 ParNew 收集器除了支持多线程并行收集之外,其他与 …...
华为od机试真题 — 分披萨(Python)
题目描述 “吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。 但是粗心服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。 由于两人都想吃到最多的披萨,他们商量…...
ubuntu22.04 安装boost
下载boost压缩包,我这里上传了一份1_81_0版本tar -xzvf boost_1_81_0.tar.gzcd boost_1_81_0/sudo apt install build-essential g autotools-dev libicu-dev libbz2-dev -ysudo ./bootstrap.sh --prefix/usr/./b2sudo ./b2 install 上述7步完成后,相关…...
基于JAVA+SpringBoot+uniapp的心理小程序(小程序版本)
✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、SpringCloud、Layui、Echarts图表、Nodejs、爬…...
C语言 ——— 输入两个正整数,求出最小公倍数
目录 何为最小公倍数 题目要求 代码实现 方法一:暴力求解法(不推荐) 方法二:递乘试摸法(推荐) 何为最小公倍数 最小公倍数是指两个或者多个正整数(除了0以外)的最小的公共倍数…...
Langchain 对pdf,word,txt等不同文件的加载解析
项目中遇到各种数据资源想要加载近langchain构建本地知识ai系统,怎么加载对应的文件格式呢,一起研究下 引入Langchain from langchain.document_loaders import UnstructuredWordDocumentLoader,PyPDFium2Loader,DirectoryLoader,PyPDFLoader,TextLoad…...
BL201分布式I/O耦合器连接Profinet网络
钡铼技术的BL201分布式I/O耦合器是一个用于Profinet网络的设备,用于连接远程输入/输出(I/O)设备到控制系统,如可编程逻辑控制器(PLC),能够实现分布式的I/O连接和通信。 它支持标准Profinet IO …...
Pycharm 报错 Environment location directory is not empty 解
删除项目中ven文件夹(已存在的),然后再添加新的ven虚拟环境就可以了...
【Android】Intent基础用法及作用
文章目录 使用Intent在活动中穿梭组成显式Intent隐式Intent显式与隐式区别作用 活动间传递数据向下一个活动传递数据返回数据给上一个活动 使用Intent在活动中穿梭 Intent(意图)是一种重要的消息传递对象,用于在不同组件(如活动&…...
Web开发:ASP.NET CORE的后端小结(基础)
1.后端重定向到指定路由 public IActionResult Index(){return RedirectToAction("Index", "Main");//重定向>Main/Index} 【备注】如果在MainController的Index方法中return View();本质是 return View("Index"),返回和方法同名的…...
侧开知识点合集2
一、try .... catch.. AccessViolationException异常触发后,下列程序的输出结果为 static void Main(string[] args) { try { throw new AccessViolationException(); Console.WriteLine("error1"); } catch (Exception e) { Console.WriteLi…...
ARM/Linux嵌入式面经(十六):蔚来嵌入式一二三面面经
文章目录 static作用,局部static和全局static区别TCP三次握手Linux虚拟内存指针引用区别C++内存分区new/delete和malloc/free区别职业规划为什么选择蔚来介绍一下项目然后问我有没有内核级别开发经验,我说没有什么情况进入内核态一、主动式二、被动式三、其他方式注意事项示例…...
Apache BookKeeper 一致性协议解析
导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案,支持多租户、低延时、读写分离、跨地域复制(GEO replication)、快速扩容、灵活容错等特性。Pulsar 存储层依托于 BookKeeper 组件,所以本文简单探讨一下 BookK…...
Solana的账户模型
Solana的账户模型与其他区块链平台(如以太坊)有所不同,其设计旨在提高性能和扩展性。以下是Solana账户模型的主要特点和工作原理: Solana账户模型概述 账户类型: 普通账户(User Accounts)&…...
安卓软件怎么开发/seo关键词推广公司
第四次工业革命已经开始,AI还能为此做些什么? 从18世纪60年代至今,250余年,三次工业革命,每一次,革命的先行者都在探索,究竟怎样的技术和设备才能彻底改变当前的社会生产现状,开启另…...
wordpress多语言内容添加/重庆seo排名
一、编译安装nginx1、下载[rootns1 ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz2、解压[rootns1 ~]# tar xf nginx-1.10.0.tar.gz [rootns1 ~]# cd nginx-1.10.03、安装依赖组件[rootns1 nginx-1.10.0]# yum install pcre-devel #url重写需要的组件 [rootns1 n…...
江苏网站建设开发/seo搜索引擎优化求职简历
有哪些基础的问题? 一些简单的问题在前面的文章中都体现了: 为什么要使用消息中间件?消息中间件有哪些缺点?ActiveMQ、RabbitMQ、RocketMQ和kafka都有什么优缺点?RabbitMQ如何保证高可用性?kafka如何保证…...
茂名网站建设方案外包/米拓建站
经纬度计算距离和方位角方位角(azimuthangle):从某点的指北方向线起,依顺时针方向到目标方向线之间的水平夹角,叫方位角。(一)方位角的种类由于每点都有真北、磁北和坐标纵线北三种不同的指北方向线,因此,从某点到某一…...
上海做网站的多吗/谷歌 chrome 浏览器
smali文件格式 每个smali文件都由若干条语句组成,所有的语句都遵循着一套语法规则。在smali 文件的头3 行描述了当前类的一些信息,格式如下: [java] view plaincopy.class < 访问权限> [ 修饰关键字] < 类名> .super < 父类名…...
做网站php的作用/免费企业网站建设流程
在画出来的图中左上方找: 文件———— 导出设置———— 左方属性里选渲染—— 分辨率设为300/600———— 右侧导出...