日志分析 Elasticsearch 和 logstach.filebeat.

news2026/5/20 22:51:07
一、Elasticsearch 到底是啥简单说ES 就是一个能飞速搜索和分析海量数据的搜索引擎。类似百度、谷歌但它是给你公司内部的数据用的。比如淘宝搜商品输入“手机 拍照好”毫秒级给你结果——背后就是 ES。公司每天产生几 TB 的日志服务器记的流水账你想查“昨天下午3点哪台服务器报错了”——ES 能秒回。传统数据库如 MySQL做这种事很慢因为它是按行存的搜关键词得全表扫描像大海捞针。ES 用了倒排索引相当于书的目录你要找“苹果”这个词直接翻目录看到它在第几页不用从头翻全书。二、ES 牛在哪快毫秒级响应就算数据量上亿。能撑大场面数据量大了加机器就行自动分摊支持 PB 级1PB 100万GB。灵活存 JSON 文档不需要像数据库那样先设计表结构。今天存个用户信息明天加个字段不用改表。能算能分析不光能搜还能做统计比如“过去一个月每个小时卖了多少单”一句查询搞定。三、跟传统数据库有啥不一样传统数据库Elasticsearch固定表结构改字段麻烦存 JSON随你加字段查个关键词慢得要死倒排索引飞一般的速度强事务、很严谨ACID最终一致牺牲一点严谨换速度只能精确匹配或简单模糊查询支持拼音纠错、同义词、相关性排序举个例子在 MySQL 里搜“苹果”可能把“苹果公司”和“吃苹果”混一起排序也难。ES 能自动算相关性把最符合你意图的排前面。四、ES 主要干啥用电商搜索筛选、排序、推荐日志分析公司所有服务器的日志丢进 ES出问题可以快速定位配合 Kibana 画图表监控告警API 调用慢了多少毫秒哪台机器 CPU 爆了安全分析检测异常登录、暴力破解等业务报表实时统计销售额、用户活跃度等五、ES 7.0 有啥改进简化了数据模型以前一个索引里可以分多种“类型”容易乱7.0 废除了更清爽。集群协调更稳用 Raft 协议一种共识算法代替旧机制主节点挂了自动选新的不需要你手动配。性能优化搜索省内存、压缩更好、并发能力翻倍。安全加强默认开启加密权限控制更细。六、配置 ES 要注意啥只记关键点配置文件/etc/elasticsearch/elasticsearch.yml必改项cluster.name集群名同一集群所有节点必须一样。node.name节点名方便辨认。network.host绑定的 IP生产环境别用0.0.0.0不安全。discovery.seed_hosts告诉新节点“老节点在哪”用于加入集群。cluster.initial_master_nodes第一次启动时哪些节点参与选主。内存配置jvm.options堆内存-Xms和-Xmx设成一样通常为物理内存的一半但别超过 32GB否则压缩指针失效。生产环境必须bootstrap.memory_lock: true禁用 swap换页否则性能骤降。节点角色小规模一个节点啥角色都干主节点数据节点协调节点。大规模角色分离——主节点只管集群管理不存数据数据节点只管存数据协调节点只管转发请求。避免单点瓶颈。安全开启xpack.security.enabled设密码。节点间通信开 TLS 加密否则内网抓包能看到你的数据。七、常用操作命令最常用的几条bash# 看集群健康不健康green/yellow/red curl localhost:9200/_cluster/health?pretty # 看有哪些节点 curl localhost:9200/_cat/nodes?v # 新建一个索引相当于数据库的表 curl -XPUT localhost:9200/my_index -H Content-Type: application/json -d { settings: { number_of_shards: 3, number_of_replicas: 1 } } # 插入一条数据 curl -XPOST localhost:9200/my_index/_doc -H Content-Type: application/json -d { name: 张三, age: 28 } # 搜索一下 curl localhost:9200/my_index/_search?qname:张三pretty八、生产环境避坑指南千万别用 root 跑 ES安全漏洞。文件描述符开大点ulimit -n 65536否则连接多了报错。不要用网络磁盘NFS性能烂。分片数别乱设每个分片 20~40GB 为宜太多分片管理开销大。监控磁盘超过 95% 会锁死索引只能读不能写。定期备份用快照功能存到 HDFS 或 S3。九、一句话总结ES 就是一个能存海量数据、搜得快、还能做实时统计的分布式搜索引擎。配置好了它就像个听话的超级助理你问什么它秒回配砸了它能让你加班到天亮。生产环境务必角色分离、开安全、锁内存、监控磁盘。一、Logstash 是干啥的简单说Logstash 就是一个“数据管道工”。它从各种地方把数据拽过来洗一洗、改一改再送到该去的地方。比如从服务器日志文件里读数据 → 提取出时间、错误类型、IP地址 → 存到 Elasticsearch 里方便搜索和画图。从数据库里查订单 → 转成统一格式 → 发给 Kafka 消息队列。核心三步走输入input数据从哪来文件、数据库、Kafka、TCP/UDP 端口、Redis……过滤filter数据怎么洗解析、改字段、删脏数据、加标签……输出output数据往哪去Elasticsearch、文件、stdout控制台、Kafka……二、配置文件长啥样配置文件分三块像三个车间rubyinput { # 从哪里拿数据 } filter { # 怎么处理数据 } output { # 送到哪里去 }三、常用输入插件数据从哪来插件大白话解释file盯着一个日志文件有新行就立刻读进来。比如/var/log/nginx/access.logbeats接收 Filebeat、Metricbeat 等小工具发来的数据。默认端口 5044tcp/udp监听某个端口别的程序通过 TCP/UDP 发数据过来http开一个 HTTP 接口别人 POST 数据进来jdbc定期查数据库MySQL、PostgreSQL 等把表里的数据拉进来kafka从 Kafka 主题里消费数据stdin从键盘手动输入一般只用来测试四、常用过滤插件怎么处理数据插件大白话解释grok最强大的文本解析器。用正则把杂乱日志拆成有意义的字段。比如192.168.1.1 - - [10/May/2026:13:55:36 0800] GET /index.html 200→ 拆出clientip、timestamp、verb、request等字段。date把日志里的时间字符串比如10/May/2026:13:55:36 0800解析成 Logstash 内部的时间戳方便按时间排序。mutate改字段重命名、删除、类型转换字符串变整数、替换内容……json如果字段里存的是 JSON 字符串把它解析成真正的字段。dissect和 grok 类似但更快适合用分隔符比如空格、-切分不需要正则。drop根据条件扔掉某些事件比如把 debug 级别的日志全丢掉。clone复制一份事件改完后再输出原事件保留。五、常用输出插件数据送到哪插件大白话解释elasticsearch最常见的输出。把处理后的数据存到 ES 里建索引时还能按日期滚动比如nginx-log-%{YYYY.MM.dd}。stdout打印到控制台一般用来调试看数据长啥样。配合codec rubydebug能看到漂亮的字段结构。file写到本地文件。kafka发回 Kafka让下游继续处理。redis推送到 Redis 列表或频道。http通过 HTTP POST 发送到别的 API。六、条件判断让管道灵活起来Logstash 支持if、else if、else就像编程一样。常用判断rubyif [log_level] ERROR { # 只处理错误日志 } if nginx in [tags] { # 如果打上了 nginx 标签送到 nginx 索引 elasticsearch { index nginx-%{YYYY.MM.dd} } } else if apache in [tags] { elasticsearch { index apache-%{YYYY.MM.dd} } } if [response_time] 1000 { # 响应时间超过1秒的加个慢查询标签 mutate { add_tag [slow_request] } }可用的比较符等于不等于!大于小于大于等于小于等于正则匹配~不匹配!~逻辑与或||包含in不包含not in常用于[tags]字段七、一个真实的配置例子来自文档rubyinput { beats { port 5044 } # 从 Filebeat 收数据 } output { if nginx1 in [tags] { elasticsearch { hosts [192.168.166.9:9200] index nginx1-%{YYYY.MM.dd} } } if nginx2 in [tags] { elasticsearch { hosts [192.168.166.9:9200] index nginx2-%{YYYY.MM.dd} } } stdout { codec rubydebug } # 顺便打印到屏幕方便看 }解读输入监听 5044 端口等 Filebeat 发数据。判断如果数据带nginx1标签就存到 ES 的nginx1-2026.05.19索引如果是nginx2就存到对应索引。同时把每条数据打印到控制台调试用。八、小提示grok 很强大但也会吃性能。如果日志格式固定用dissect更快。生产环境建议把 stdout 关掉否则控制台刷屏影响性能。条件判断写在 output 里可以分流写到不同索引或不同系统。调试时先用 stdin 输入一行数据用 stdout 输出确认 filter 写对了再上生产。九、一句话总结Logstash 就是一根万能的“数据水管”进水管input可以接各种源头中间可以加各种“净水器”filter来清洗、转换数据最后出水管output把干净水送到 ES、文件或其他地方。配置文件就是告诉你这根管子怎么接。一、Filebeat 是啥简单说Filebeat 就是一个“轻量级日志搬运工”。它专门负责从服务器上的日志文件里读出新内容然后送到 Elasticsearch 或 Logstash 里去。比如你有 100 台服务器每台都产生日志。你不可能一台台 SSH 上去看。Filebeat 就装在这些服务器上它会盯着日志文件一有新的日志行就立刻收走、转发到中央系统。这样你就能在一个地方比如 Kibana统一查看所有日志。记住两点轻量级 —— 占资源少不会把服务器拖垮专门收日志 —— 别的不管就管日志文件二、Filebeat 怎么工作的两兄弟配合Filebeat 内部有两个好兄弟inputs和harvesters。2.1 Harvester收割机一个 harvester 负责一个文件它打开这个文件一行一行地读然后把内容发出去。只要 harvester 还在运行文件句柄就一直开着文件删了也不释放空间这点要注意。2.2 Input输入配置一个 input 管理一堆 harvesters。你告诉 input“去 /var/log/*.log 里找文件”它就会为每个匹配的文件启动一个 harvester。每个 input 是独立运行的Go 协程。举个例子yamlfilebeat.inputs: - type: log paths: - /var/log/*.log # 这里所有 .log 文件都会被监控 - /var/log/nginx/*.log2.3 怎么记住读到哪里了registry 注册表Filebeat 会把每个文件已经读到哪里偏移量记在一个叫registry的文件里。这样即使 Filebeat 重启了它也知道从上次断开的地方继续读不会重复读也不会漏读。重启后从 registry 恢复状态继续从断点读。如果每天产生海量新文件registry 可能变大。可以用clean_inactive等配置清理旧文件的状态。2.4 保证至少发一次at-least-onceFilebeat 承诺每条日志至少发送一次不会丢数据。它是怎么做到的它把发送状态也记在 registry 里。如果目标ES 或 Logstash挂了Filebeat 会不断重试直到对方确认收到。代价是可能重复发送如果在发送过程中 Filebeat 被强制关闭有些已发送但没来得及确认的日志重启后会再发一次。可以设置shutdown_timeout让它在关闭前多等一会儿减少重复。三、模块Modules懒人福音如果你不想自己写复杂的解析规则Filebeat 提供了现成的模块覆盖常见日志格式Nginx、Apache、MySQL、Kafka、Elasticsearch、Redis、System系统日志……一个模块通常包含默认日志路径自动适配不同操作系统Ingest Node 解析管道自动提取字段字段类型定义Kibana 仪表盘直接看图使用模块只需要几步bash# 1. 启用模块 filebeat modules enable nginx mysql # 2. 设置初始环境加载仪表盘、模板等 filebeat setup -e # 3. 运行 filebeat -e然后去 Kibana 就能看到漂亮的图表。如果你要改日志路径可以在modules.d/nginx.yml里配yaml- module: nginx access: var.paths: [/var/log/nginx/access.log*]四、核心配置filebeat.yml4.1 Inputs 配置手动不用模块时yamlfilebeat.inputs: - type: log # 类型是日志文件 enabled: true paths: - /var/log/*.log fields: # 自己加点字段方便区分 service: web fields_under_root: true # 让自定义字段变成顶级字段 exclude_lines: [^DBG] # 丢掉以 DBG 开头的行 include_lines: [^ERR, ^WARN] # 只保留 ERR 或 WARN 开头的行 ignore_older: 24h # 超过 24 小时没改动的文件忽略 scan_frequency: 10s # 每 10 秒扫一次目录看有没有新文件 close_inactive: 5m # 文件 5 分钟没新行就关闭文件句柄4.2 多行日志处理像 Java 堆栈很多日志一行写不完比如异常堆栈textException in thread main java.lang.NullPointerException at com.example.myproject.Book.getTitle(Book.java:16) at com.example.myproject.Bootstrap.main(Bootstrap.java:14)要把它们合并成一个事件用multiline配置yamlmultiline.pattern: ^[[:space:]] # 匹配以空格开头的行 multiline.negate: false # 不取反 multiline.match: after # 匹配到的行合并到前一行后面效果以空格开头的行堆栈行会被接到上一行后面变成一条完整日志。常用模式还有时间戳开头pattern: ^\[[0-9]{4}-[0-9]{2}-[0-9]{2}negate: truematch: after行尾反斜杠续行pattern: \\$match: before4.3 输出配置输出到 Elasticsearch最常见yamloutput.elasticsearch: hosts: [localhost:9200] index: filebeat-%{[agent.version]}-%{yyyy.MM.dd} username: elastic password: changeme输出到 Logstash如果你想在 Logstash 里做更复杂的处理yamloutput.logstash: hosts: [localhost:5044] loadbalance: true # 如果多个 Logstash可以负载均衡4.4 加载外部配置如果配置太长了可以拆成小文件yamlfilebeat.config.inputs: enabled: true path: configs/*.yml # 这个目录下的每个 yml 文件都算一个 input五、常见问题FAQ5.1 “Too many open files” 错误Filebeat 默认会一直打开正在读的文件句柄。如果同时监控成千上万个文件可能超过系统限制。解决办法调小close_inactive让不活跃的文件尽快关闭。增大系统的ulimit -n。5.2 Filebeat 不收集某个文件检查路径对不对文件修改时间是否超过了ignore_older目标输出ES/Logstash是否可访问用filebeat -e -d *调试模式看日志。5.3 CPU 占用高可能是scan_frequency太短比如 1 秒扫一次目录。默认 10 秒就够了不需要太频繁。文件实时性靠close_inactive和 harvester 持续读来保证不是靠频繁扫描。六、附录常用变量动态索引名在配置索引名时可以用变量例如%{[agent.version]}→ Filebeat 版本号%{yyyy.MM.dd}→ 当前日期2026.05.19%{[host.name]}→ 主机名%{[fields.service]}→ 自定义字段比如index: logs-%{[fields.service]}-%{yyyy.MM.dd}会生成logs-web-2026.05.19这样的索引。七、一句话总结Filebeat 就是一个装在服务器上的小机器人你告诉它“盯着哪些日志文件”它就会实时地把新内容捡起来送到 Elasticsearch 或 Logstash 里。它占用资源少、能记住读到哪里、支持多行合并、还有现成的模块帮你解析常见日志格式。配置好之后你就不用再 SSH 到每台机器上看日志了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2629629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…