当前位置: 首页 > news >正文

ELK大总结20250922

1 ELK 概述

基于Metrics(指标)监控、基于 Tracing(调用链)监控、基于 Logging(日志) 的监控。

ELK 是一套用于日志收集、存储、分析和可视化的开源技术栈,由 Elasticsearch、Logstash、Kibana 三个核心组件的首字母组成,目前官方已将其更名为Elastic Stack,但 “ELK” 的称呼仍被广泛使用。

🔧 ELK 三大核心组件的作用

三个组件分工明确、协同工作,形成完整的日志处理流程:

  1. Logstash:日志收集与预处理作为 “日志搬运工”,负责从多源(如服务器、应用、数据库)采集日志,进行过滤、清洗、格式转换(如 JSON 化)等预处理,再将标准化后的日志发送到 Elasticsearch 存储。
  2. Elasticsearch:日志存储与检索基于 Lucene 的分布式搜索引擎,负责存储所有预处理后的日志数据,支持毫秒级的全文检索和复杂查询,能快速定位特定日志(如报错日志、特定用户行为日志)。
  3. Kibana:日志可视化与分析作为 “可视化面板”,提供图形化界面(如折线图、柱状图、仪表盘),将 Elasticsearch 中的日志数据转化为直观报表,支持实时监控、异常告警、自定义分析视图(如服务器 CPU 使用率趋势、应用报错频次统计)。

📌 ELK 的典型应用场景

ELK 本质是解决 “日志分散难管理、出问题难排查” 的痛点,常见场景包括:

  • 服务器 / 应用监控:集中查看多台服务器的系统日志、应用运行日志,快速定位故障(如 Java 应用的 NullPointerException)。
  • 业务数据分析:分析用户行为日志(如点击、下单、访问路径),统计转化率、热门功能等业务指标。
  • 安全审计:收集防火墙、数据库的操作日志,监控异常行为(如多次失败的登录尝试、未授权的数据访问)。

✨ 扩展:ELK 的常见补充组件

为适配更复杂的场景,ELK 常搭配其他工具使用:

  • Filebeat:轻量级日志采集器,替代 Logstash 部署在资源有限的服务器上(如边缘节点),占用内存低,更适合大规模集群的日志采集。
  • Beats 家族:除 Filebeat 外,还有 Metricbeat(采集系统 / 应用指标)、Packetbeat(采集网络数据包)等,丰富数据采集类型。
  • Elastic APM:应用性能监控工具,与 ELK 联动,分析应用的响应时间、接口调用耗时等性能数据。
官网: https://www.elastic.co/
ELK 官方介绍:https://www.elastic.co/cn/what-is/elk-stack
ELK 下载链接:https://www.elastic.co/cn/downloads/
ELK 说明: https://www.elastic.co/guide/cn/index.html
ELK 权威指南: https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

1.Elasticsearch

https://www.elastic.co/cn/what-is/elasticsearch   官网介绍
Elasticsearch 概念传统数据库对应概念作用说明
Index(索引)Database(数据库)存储一类相似数据的集合(如 “服务器日志索引”“电商商品索引”),每个索引有独立的配置和分片策略。
Type(类型)Table(表)早期用于区分索引内的不同数据类型(如 “商品索引” 内的 “电子产品”“服装”),ES 7.0 后已被移除,推荐一个索引对应一种数据类型。
Document(文档)Row(行)索引内的最小数据单元,以 JSON 格式存储(如一条服务器日志、一个商品信息),每个文档有唯一的_id标识。
Field(字段)Column(列)文档内的具体属性(如 “日志时间”“商品价格”),ES 会自动识别字段类型(如文本型、数值型、日期型),也可手动定义。
Shard(分片)-索引的 “分块”,将大索引拆分为多个小分片分布在不同节点,实现并行存储和查询,提升性能。
Replica(副本)-分片的 “备份”,用于故障恢复和负载分担(查询请求可分发到副本节点),副本数量可手动配置。

1.部署和管理

Elasticsearch 基于 Java 语言实现

[root@ubuntu2404 ~]#sysctl -a |grep vm.max_map_count    #默认值满足要求1048576
[root@es-node1 ~]#echo "vm.max_map_count = 262144" >> /etc/sysctl.con   #修改配置并确认
[root@es-node1 ~]#sysctl -p
[root@ubuntu2404 ~]#sysctl fs.file-max #设置系统最大打开的文件描述符数,已满足要求
[root@es-node1 ~]#echo "fs.file-max = 1000000" >> /etc/sysctl.conf
范例: Ubuntu 基于包安装后会自动修改文件
[root@node1 ~]
#cat /usr/lib/sysctl.d/elasticsearch.conf
vm.max_map_count=262144
修改资源限制配置(可选)
[root@es-node1 ~]#vi /etc/security/limits.conf

2.安装Elasticsearch

下载链接
https://www.elastic.co/cn/downloads/elasticsearch
https://mirrors.tuna.tsinghua.edu.cn/elasticstack/


[root@ubuntu2404 ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-9.0.4-amd64.deb    #安装部署elasticsearch

[root@ubuntu2404 ~]dpkg -i elasticsearch-9.0.4-amd64.deb
[root@ubuntu2404 ~]systemctl enable --now elasticsearch.service
........
=SjscHwRO2XAJ4OTNB47 #密码
........
#默认9.X开启xpack安全,导致无法直接访问
[root@ubuntu2204 ~]#curl http://127.0.0.1:9200/
curl: (52) Empty reply from server
#关闭XPACK功能
[root@ubuntu2404 ~]#vim /etc/elasticsearch/elasticsearch.yml
.....
xpack.security.enabled: false #修改为false
[root@ubuntu2404 ~]#systemctl restart elasticsearch.service
[root@ubuntu2404 ~]#curl  http://127.0.0.1:9200       #能正常访问

3.编辑配置文件

注意编辑的时候要备份原来的配置文件,以免修改不顺利!!!

[root@es-node1 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
#ELK集群名称,单节点无需配置,同一个集群内每个节点的此项必须相同,新加集群的节点
此项和其它节点相同即可加入集群,而无需再验证
cluster.name: ELK-Cluster #当前节点在集群内的节点名称,同一集群中每个节点要确保此名称唯一
node.name: es-node1 #ES 数据保存目录,包安装默认路径:/var/lib/elasticsearch/,生产建议修改
path.data: /data/es-data #ES 日志保存目录,包安装默认路径:/var/log/elasticsearch/,生产建议修改
path.logs: /data/es-logs#服务启动的时候立即分配(锁定)足够的内存,防止数据写入swap,提高启动速度,但是true可以
会导致启动失败,需要优化
bootstrap.memory_lock: true#指定该节点用于集群的监听IP,默认监听在127.0.0.1:9300,集群模式必须修改此行,单机默认即可
network.host: 0.0.0.0 #指定HTTP的9200/TCP的监听地址,默认127.0.0.1
http.host: 0.0.0.0#监听端口
http.port: 9200#发现集群的node节点列表,可以添加部分或全部节点IP
#在新增节点到已有集群时,此处需指定至少一个已经在集群中的节点地址,给予可用性,一般添加
所有节点地址
discovery.seed_hosts: ["10.0.0.101","10.0.0.102","10.0.0.103"]#集群初始化时指定希望哪些节点可以被选举为 master,只在初始化时使用,新加节点到已有集群时此项可不配置
cluster.initial_master_nodes: ["10.0.0.101","10.0.0.102","10.0.0.103"]#一个集群中的 N 个节点启动后,才允许进行数据恢复处理,默认是1,一般设为所有节点的一半以上,防止出
现脑裂现象,当集群无法启动时,可以将之修改为1,或者将下面行注释掉,实现快速恢复启动
gateway.recover_after_nodes: 2#设置是否可以通过正则表达式或者_all匹配索引库进行删除或者关闭索引库,默认true表示必须需要明确指
定索引库名称,不能使用正则表达式和_all,生产环境建议设置为 true,防止误删索引库。
action.destructive_requires_name: true

简言之上图总结如下显示

 #必须分配权限,否则服务无法启动
[root@es-node1 ~]# chown -R elasticsearch.elasticsearch /data/

4.验证端口监听成功

#9200端口集群访问端口,9300集群同步端口
[root@es-node1 ~]#ss -ntlp|grep java
LISTEN   0         128                       *:9200                   *:*      
users:((
"java",pid=2372,fd=225))              
LISTEN  
0         128                       *:9300                   *:*      
users:((
"java",pid=2372,fd=211))

2.Logstash

https://www.elastic.co/cn/what-is/elasticsearch  官网介绍
阶段(Stage)核心作用常见插件示例
Input(输入)从各种数据源采集数据file:读取服务器本地日志文件(如 Nginx、Linux 系统日志)- beats:接收 Filebeat 等轻量采集器的数据(分布式场景常用)- kafka:从 Kafka 消息队列拉取数据- tcp/udp:接收网络端口传输的日志
Filter(过滤)对数据进行清洗、转换、提取grok:解析非结构化日志(如把 “时间 + IP + 请求” 的字符串拆成字段)- mutate:修改字段(添加、删除、重命名、类型转换)- date:统一时间字段格式(适配 Elasticsearch 时间索引)- drop:过滤掉无用数据(如排除测试环境日志)
Output(输出)将处理后的数据发送到目标系统elasticsearch:输出到 Elasticsearch(ELK 标准流程)- file:输出到本地文件- kafka:写入 Kafka 供其他系统消费- stdout:打印到控制台(调试时常用)

1.部署和管理

3.Kibana

https://www.elastic.co/cn/what-is/kibana  官方介绍
Kibana 是一款适用于 Elasticsearch 的基于Javascript语言实现的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和地图。Kibana 同时还包括诸如 Canvas Elastic Maps 等高级应用程序;Canvas 允许用户基于自身数据创建定制的动态信息图表,而 Elastic Maps 则可用来对地理空间数据进行可视化。

1.部署和管理

http://www.dtcms.com/a/395005.html

相关文章:

  • 基于Hadoop生态的汽车全生命周期数据分析与可视化平台-基于Python+Vue的二手车智能估价与市场分析系统
  • 基于TV模型利用Bregman分裂算法迭代对图像进行滤波和复原处理
  • 利用 Perfmon.exe 与 UMDH 组合分析 Windows 程序内存消耗
  • hello算法笔记 02
  • 二级域名解析与配置
  • 如何学习国库会计知识
  • 【读论文】压缩双梳光谱技术
  • Spark Structured Streaming端到端延迟优化实践指南
  • 【.NET实现输入法切换的多种方法解析】,第566篇
  • 性能测试-jmeter13-性能资源指标监控
  • 基于华为openEuler系统安装PDF查看器PdfDing
  • PyTorch 神经网络工具箱核心知识梳理
  • 【LangChain指南】Agents
  • Linux 的进程信号与中断的关系
  • IS-IS 协议中,是否在每个 L1/L2 设备上开启路由渗透
  • pycharm常用功能及快捷键
  • 滚珠导轨在半导体制造中如何实现高精度效率
  • 如何实现 5 μm 精度的视觉检测?不仅仅是相机的事
  • JavaScript学习笔记(六):运算符
  • Jenkins运维之路(制品上传)
  • 20届-高级开发(华为oD)-Java面经
  • 光流估计(可用于目标跟踪)
  • CANoe仿真报文CRC与Counter的完整实现指南:多种方法详解
  • sward入门到实战(4) - 如何编写Markdown文档
  • S32K146-LPUART+DMA方案实现
  • 【架构设计与优化】大模型多GPU协同方案:推理与微调场景下的硬件连接策略
  • 软件的安装python编程基础
  • Linux系统与运维
  • [Maven 基础课程]基于 IDEA 进行 Maven 构建
  • 一个基于 .NET 开源、简易、轻量级的进销存管理系统