news 2026/5/1 13:01:41

37 日志分析:ELK(Elasticsearch+Logstash+Kibana)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
37 日志分析:ELK(Elasticsearch+Logstash+Kibana)

文章目录

  • 前言
  • 理论部分
    • 1_ELK日志分析系统概述
      • 1.1_核心组件角色
    • 2_Elasticsearch介绍
      • 2.1_核心功能
      • 2.2_架构与关键概念
      • 2.3_使用场景
      • 2.4_优缺点
    • 3_Logstash介绍
      • 3.1_三大处理阶段
      • 3.2_使用场景
      • 3.3_轻量级替代方案
    • 4_Kibana介绍
      • 4.1_核心功能
      • 4.2_使用场景
      • 4.3_工作原理
    • 5_为何使用ELK进行数据可视化?
    • 6_完整日志系统基本特征
    • 7_ELK 的工作原理⭐
  • 实验部分
    • 1_ELK系统部署
      • 1.1_环境准备
      • 1.2_Elasticsearch集群部署
      • 1.3_安装Elasticsearch-head
      • 1.4_Logstash 部署
        • ① 安装Logstash
        • ② 测试Logstash
        • ③ 配置系统日志采集
      • 1.5_Kibana 部署
    • 2_Filebeat+ELK部署
  • 结语

前言

本文档系统梳理了ELK 企业级日志分析系统的核心组成、工作原理、部署流程及扩展架构(如 Filebeat + ELK)。内容涵盖 Elasticsearch、Logstash、Kibana 三大组件的功能特性、使用场景与配置细节,并提供完整的实验部署步骤,适用于日志集中化管理、实时监控、安全分析等企业级应用场景。

  1. ELK 概述与核心组件功能
  2. Elasticsearch 架构、特点与集群部署
  3. Logstash 数据采集、过滤与输出机制
  4. Kibana 可视化与交互式分析能力
  5. 完整 ELK 系统部署实验(含 Apache 日志接入)
  6. Filebeat 轻量级日志采集器集成(EFLK 架构)

理论部分

1_ELK日志分析系统概述

ELK 是一套开源的日志集中处理解决方案,由Elasticsearch、Logstash、Kibana三大组件构成,用于实现日志的收集、存储、搜索、分析与可视化。适用于分布式系统中多源日志的统一管理。

1.1_核心组件角色

组件功能技术特点
Elasticsearch分布式搜索引擎,负责日志存储与全文检索基于 Lucene,RESTful API,支持高可用集群
Logstash数据采集与处理管道支持 input → filter → output 流程,插件丰富
Kibana数据可视化前端提供图表、仪表盘、告警、机器学习等高级功能

适用场景:当企业拥有数十至上百台服务器,需集中分析系统/应用/安全日志时,传统grep工具效率低下,ELK 可提供高效、可扩展的日志分析平台。


2_Elasticsearch介绍

Elasticsearch 是一个基于Lucene的分布式、实时、可扩展的搜索引擎,使用 Java 开发,通过RESTful API提供全文搜索与结构化查询能力。
https://blog.csdn.net/qq_17153885/article/details/135323449

2.1_核心功能

  • 全文搜索:快速索引与检索文本数据
  • 实时分析:数据写入后立即可查
  • 分布式架构:支持横向扩展与高可用
  • RESTful API:HTTP 接口便于集成

2.2_架构与关键概念

Cluster(集群) └── Node(节点):主节点 / 数据节点 └── Index(索引) ≈ 数据库表 ├── Shard(分片):数据分片,提升并发与容量 └── Replica(副本):冗余备份,提高容错性 └── Document(文档):JSON 格式最小数据单元

① 集群健康状态

状态含义
green所有主分片与副本均正常
yellow主分片正常,副本缺失(单节点常见)
red主分片丢失,数据不完整

2.3_使用场景

  • 日志与事件流分析(配合 Logstash/Kibana)
  • 电商商品搜索、社交内容检索
  • 系统监控与告警
  • 商业智能(BI)与趋势分析

2.4_优缺点

优点:高性能、易扩展、灵活查询、开源社区活跃
缺点:内存消耗大、DSL 学习曲线陡峭、大规模集群运维复杂


3_Logstash介绍

Logstash是用Ruby编写、运行于JVM的数据处理管道,支持从多源采集、过滤转换、实时输出到目标系统(如 ES)。充当“日志搬运工”的角色。

3.1_三大处理阶段

Logstash 配置文件由三个核心部分组成,定义了数据的输入 → 处理 → 输出流程:

部分作用常见用法
input从数据源采集原始日志file(日志文件)
beats(Filebeat)
kafkasyslog
filter(可选)对数据清洗与增强使用grok(正则解析)
date(时间格式化)
mutate(字段修改)等插件
output将处理后的数据发送到目标系统elasticsearch(主输出)
filekafkastdout(调试)等

数据清洗:数据处理,包括过滤和格式化、去重等

配置模板:③ 配置系统日志采集

input { ... } filter { ... } # 按需启用 output { ... }

示例场景
从Apache日志文件(input)提取客户端IP和状态码(filter),再写入Elasticsearch(output)。

3.2_使用场景

  • 集中收集系统/应用日志
  • 日志格式标准化(如解析 Nginx/Apache 日志)
  • 多目的地分发(ES + S3 + HDFS)

3.3_轻量级替代方案

① Filebeat

  • 轻量级日志 shipper,资源占用低
  • 常用于EFLK 架构(Filebeat → Logstash → ES → Kibana)
  • 优势:支持 ACK 机制、背压感知、本地缓冲

ACK机制:发送日志后需接收方确认,确保不丢失。
背压感知:下游处理慢时自动减速,防止崩溃。
本地缓冲:日志位置和未发数据暂存本地,保障可靠传输。

② Fluentd

  • 更轻量、高效,常用于EFK 架构
  • 在 Kubernetes 中通过 DaemonSet 部署,采集容器日志。

[!question] 为何引入消息队列?
在高并发场景下,使用Redis/Kafka/RabbitMQ作为缓冲层,可削峰填谷、解耦 Logstash 与数据源,防止日志丢失。


4_Kibana介绍

Kibana 是 Elasticsearch 的官方可视化工具,提供 Web 界面用于探索、分析、展示存储在 ES 中的数据。

4.1_核心功能

  1. Visualizations:数据可视化,折线图、饼图、地图等。
  2. Dashboards:仪表板,多图表聚合展示
  3. Log Management:日志管理
  4. Discover:原始日志搜索(支持 KQL / Lucene 语法)
  5. TSVB:时间序列分析(Time Series Analytics)
  6. Alerting:阈值告警
  7. Monitoring:监控
  8. Security:RBAC 权限控制,安全和访问控制(Security & Access Control)
  9. Machine Learning:机器学习,异常检测。(新技术:Ai智能运维、Aiops)
  10. Canvas & Reporting:自定义报告导出(PDF/CSV)
  11. Maps & Geospatial Visualization:地图和地理可视化

4.2_使用场景

  • 运维日志排查
  • 实时业务监控(如用户行为、交易流水)
  • 安全威胁检测(结合 Elastic Security)
  • 自动化异常预警

4.3_工作原理

发送
存储
查询
渲染
Logstash/Filebeat
Elasticsearch
Indices
Kibana
Dashboard/Charts

Kibana不存储数据,仅作为 ES 的前端查询与展示层。

5_为何使用ELK进行数据可视化?

  • 日志分散难查:传统grep在多服务器环境下效率极低。
  • 集中分析需求:ELK将日志统一收集、索引,支持快速全文检索与聚合统计。
  • 直观洞察问题:Kibana 提供图表、仪表盘,将原始日志转化为趋势、异常、流量等可视化信息。
  • 实时监控告警:可基于可视化数据设置阈值告警,及时响应故障或安全事件。
  • 降低使用门槛:非技术人员也能通过图形界面探索数据,无需写复杂命令。

简言之:从“看日志”升级为“看懂日志”

以下是针对第6、7部分的简明整理,格式与全文风格一致:


6_完整日志系统基本特征

一个企业级的完整日志系统应具备以下五大核心能力:

特征说明
收集(Collect)支持从多源(服务器、应用、网络设备等)采集日志
传输(Transport)稳定、可靠地将日志解析、过滤并传至存储系统(支持缓冲/队列防丢失)
存储(Store)高效存储海量日志,支持快速检索与长期归档
分析(Analyze)提供 UI 或查询语言,支持搜索、聚合、统计与关联分析
告警(Alert)可配置规则,对异常或关键事件自动触发通知(邮件、Webhook 等)

ELK 正是围绕这五个特征构建的一站式解决方案。


7_ELK 的工作原理⭐

ELK 的数据流转遵循采集 → 处理 → 存储 → 展示的四步流程:

数据分析与展示层
数据存储层
微服务日志
日志收集层
access.log
error.log
tomcat.log
tomcat.log
可视化图表
仪表盘
Kibanan
Client
ES01
存储数据
ES02
存储数据
淘宝日志
Logstash
数据过滤
格式化
Nginx
Tomcat
Mysql

核心步骤说明

  1. 采集:在各服务器部署Logstash或更轻量的Filebeat,实时读取日志文件。
  2. 处理:Logstash 对原始日志进行解析(如提取 IP、状态码)、格式化、添加字段等。
  3. 存储:处理后的结构化数据发送到Elasticsearch 集群,按索引(index)存储并建立全文索引。
  4. 展示Kibana连接 Elasticsearch,用户通过 Web 界面创建可视化图表、仪表盘,实现交互式分析。

关键优势:端到端自动化、近实时(秒级延迟)、支持 PB 级日志规模、开放可扩展。


实验部分

节点IP 地址角色配置
node1192.168.100.1Elasticsearch + Kibana2核/4G
node2192.168.100.2Elasticsearch2核/4G
node3192.168.100.3Logstash + mysql和tomcat-
node4192.168.100.4Filebeat-
运行环境
  • OS:Centos 7.9
  • JDK:java-1.8.0-openjdk
  • ELK:7.8.1(tar包)
    ELK官方网站(中文) :
    https://www.elastic.co/cn/downloads/

1_ELK系统部署

1.1_环境准备

所有节点

systemctl stop firewalld setenforce0

关闭防火墙与 SELinux,避免网络和权限问题。

# 设置主机名(示例:node2)hostnamectl set-hostname apache
# 配置hosts解析echo"192.168.100.1 node1">>/etc/hostsecho"192.168.100.2 node2">>/etc/hosts
yum -yinstalljava-1.8.0-openjdk java -version

确保 Java 环境(OpenJDK 1.8+)


1.2_Elasticsearch集群部署

node1 & node2

① 安装Elasticsearch

  • 下载tar包
cd/opt/wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-linux-x86_64.tar.gz
  • 校验下载文件完整性
wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-linux-x86_64.tar.gz.sha512 shasum -a512-c elasticsearch-7.8.1-linux-x86_64.tar.gz.sha512
  • 解压到安装路径
tar-xzvf elasticsearch-7.8.1-linux-x86_64.tar.gz -C /usr/local/mv/usr/local/elasticsearch-7.8.1 /usr/local/elasticsearch
  • 权限相关配置
useradd-mU elasticsearchchown-R elasticsearch:elasticsearch /usr/local/elasticsearch*
  • rpm包安装(备选)
cd/optrpm-ivh elasticsearch-7.8.1.rpm systemctl daemon-reload systemctlenableelasticsearch.service

② 配置 elasticsearch.yml

  • 修改elasticsearch主配置文件
cd/usr/local/elasticsearchcpconfig/elasticsearch.yml config/elasticsearch.yml_bakvimconfig/elasticsearch.yml
# 以下内容行取消注释cluster.name:my-elk-cluster# 17行,集群名字。node.name:node1# 23行,节点名字,node2上改为node2。node.master:true# 添加 设置该节点为主节点候选人node.data:true# 添加 设置该节点可以存储数据path.data:/data/elk_data# 33行,数据库存放路径path.logs:/var/log/elasticsearch/# 37行,日志存放路径。bootstrap.memory_lock:false# 43行,启动时不锁定内存。network.host:0.0.0.0# 55行,监听地址为所有地址。http.port:9200# 59行,默认监听端口为9200。# discovery.zen.ping.unicast.hosts: ["node1", "node2"] # 68行,6.8.1 集群通过单播实现,指定要发现的节点 node1、node2。discovery.seed_hosts:["192.168.100.1:9300","192.168.100.2:9300"]# 68行,7.8.1,发现节点。cluster.initial_master_nodes:["node1","node2"]#72行,7.8.1,候选主节点。
grep-v"^#"config/elasticsearch.yml

③ 创建数据目录并授权

  • 数据源目录
mkdir-p /data/elk_datachown-R elasticsearch:elasticsearch /data/elk_data/
  • 日志目录
mkdir/var/log/elasticsearchchown-R elasticsearch:elasticsearch /var/log/elasticsearch

④ 启动并验证1

# 交互运行测试看有没有报错su- elasticsearch /usr/local/elasticsearch/bin/elasticsearch# 测试没什么问题可以放后台运行sudo-u elasticsearchnohup/usr/local/elasticsearch/bin/elasticsearch -d -p /usr/local/elasticsearch/pid.txt&sudo-u elasticsearch ss -antp|grep9200

访问http://192.168.100.1:9200/_cluster/health?pretty应返回"status":"green"


1.3_安装Elasticsearch-head

可选,node1 && node2

① 安装Node.js

node.js安装包:
https://nodejs.org/en/download

tarzxvf node-v8.2.1.tar.gzcdnode-v8.2.1 ./configure&&make&&makeinstall

② 安装PhantomJS

tarjxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/cp/usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/

③ 安装head插件

tarzxvf elasticsearch-head.tar.gz -C /usr/local/src/cd/usr/local/src/elasticsearch-head/npminstall

④ 修改ES配置支持跨域

# /etc/elasticsearch/elasticsearch.yml 末尾追加http.cors.enabled:truehttp.cors.allow-origin:"*"
systemctl restart elasticsearch

⑤ 启动head服务

cd/usr/local/src/elasticsearch-head/npmrun start&

⑥ 通过 Elasticsearch-head查看Elasticsearch信息

监听端口9100,访问http://192.168.100.1:9100可图形化管理集群。

  • 连接ES集群

连接按钮前输入http://192.168.100.1:9200/→点击连接

RESTful API的基本格式
GET /index/doc_type/id用于创建新的文档
POST /index/doc_type/用于获取指定ID的文档
PUT /index/doc_type/id用于更新指定ID的文档
DELETE /index/doc_type/id用于删除指定ID的文档
GET /index/doc_type/_search?q=field:value用于搜索包含特定字段和值的文档

⑦ 插入索引

  • 往Elasticsearch插入一条测试数据
    新版本(7.x ~ 8.x)
curl-X PUT'localhost:9200/index-demo1/_doc/1?pretty'\-H'Content-Type: application/json'\-d'{"user":"zhangsan","mesg":"hello world"}'
部分含义
curl命令行发 HTTP 请求
-X PUT创建或更新一条数据
localhost:9200Elasticsearch 地址
index-demo1索引名(相当于数据库表)
_doc类型(新版本不再支持自定义type)
1文档 ID(这条数据的唯一编号)
?pretty让返回结果好看点(格式化输出)
-H 'Content-Type...'声明发送的是 JSON 数据
-d '{...}'要存的数据内容
RESTful API 格式用途
PUT /index/_doc/id用于创建或全量替换指定 ID 的文档(推荐用_doc
POST /index/_doc/用于创建新文档,系统自动生成ID
GET /index/_doc/id用于获取指定ID的文档内容
DELETE /index/_doc/id用于删除指定ID的文档
GET /index/_doc/_search?q=field:value用于搜索包含特定字段和值的文档
  • 插完后可以在elasticsearch-head里查看,确认连接和数据是否正常。

1.4_Logstash 部署

node3(apache)
Logstash一般部署在需要监控其日志的服务器。本案例部署在Apache服务器,用于收集Apache日志信息并发送到Elasticsearch。

① 安装Logstash
  • 下载tar包
cd/opt/wgethttps://artifacts.elastic.co/downloads/logstash/logstash-7.8.1.tar.gz
  • 校验下载文件完整性
wgethttps://artifacts.elastic.co/downloads/logstash/logstash-7.8.1.tar.gz.sha512 shasum -a512-c logstash-7.8.1.tar.gz.sha512
  • 解压到安装路径
tar-xzvf logstash-7.8.1.tar.gz -C /usr/local/mv/usr/local/logstash-7.8.1 /usr/local/logstash
  • 权限相关配置
useradd-mU logstashchown-R logstash:logstash /usr/local/logstash*
  • 设置文件寻找路径
cpconfig/pipelines.yml config/pipelines.yml_bakvimconfig/pipelines.yml
-pipeline.id:main#9行,启用一个叫main的管道。path.config:"config/conf.d/*.conf"#15行,从 config/conf.d/ 目录下加载所有 .conf 文件。
  • 设置所有IP都可以监听
cpconfig/logstash.yml config/logstash.yml_bakvimconfig/logstash.yml
http.host:0.0.0.0# 118行
  • rpm包安装(备选)
rpm-ivh logstash-7.8.1.rpmln-s /usr/share/logstash/bin/logstash /usr/local/bin/ systemctlenablelogstash
② 测试Logstash
  • 进入logstash软件工作目录
cd/usr/local/logstash
  • 输入采用标准输入,输出采用标准输出(类似管道)
bin/logstash -e'input { stdin{} } output { stdout{} }'
  • 使用rubydebug输出详细格式显示,codec为一种编解码器。
bin/logstash -e'input { stdin{} } output { stdout{ codec=>rubydebug } }'

输入任意文本或域名,应输出带时间戳、host、message 的 JSON。

  • 使用Logstash将信息写入Elasticsearch中。
bin/logstash -e'input { stdin{} } output { elasticsearch { hosts=>["192.168.100.1:9200"] } }'

结果不在标准输出显示,而是发送至Elasticsearch中,可浏览器访问http://192.168.100.1:9100/查看索引信息和数据浏览(需要安装head)。

③ 配置系统日志采集

3.1_三大处理阶段

  • 编辑配置文件
mkdirconfig/conf.dvimconfig/conf.d/system.conf
input { file { path => "/var/log/messages" type => "system" start_position => "beginning" } } output { elasticsearch { hosts => ["192.168.100.1:9200"] index => "system-%{+YYYY.MM.dd}" } }

path:指定要收集的日志的位置
type:自定义日志类型标识
start_position":从什么位置收集
"beginning":开始位置
elasticsearch {:输出到ES
hosts => ...:指定ES服务器的地址和端口
index => ...:指定输出到ES的索引格式

  • 给采集的信息源赋权
chmod+r /var/log/messages

④ 启动并验证1

# 交互运行测试看有没有报错su- logstash /usr/local/logstash/bin/logstash --path.settings /usr/local/logstash/config# 测试没什么问题可以放后台运行sudo-u logstashnohup/usr/local/logstash/bin/logstash\--path.settings /usr/local/logstash/config\--daemon&# 查看启动日志tail-f logs/logstash-plain.log ss -tulnp|greplogstash
tcp6 0 0 :::5044 :::* LISTEN 1234/java tcp6 0 0 :::9600 :::* LISTEN 1234/java

1.5_Kibana 部署

官方网站 :
https://www.elastic.co/cn/downloads/kibana/
node1

① 安装与配置

  • 下载tar包
wgethttps://artifacts.elastic.co/downloads/kibana/kibana-7.8.1-linux-x86_64.tar.gz
  • 校验下载文件完整性
wgethttps://artifacts.elastic.co/downloads/elasticsearch/kibana-7.8.1-linux-x86_64.tar.gz.sha512 shasum -a512-c kibana-linux-x86_64.tar.gz.sha512
  • 解压到安装路径
tar-xzvf kibana-7.8.1-linux-x86_64.tar.gz -C /usr/loca/
  • rpm包安装(备选)
rpm-ivh kibana-7.8.1-x86_64.rpm
  • 设置Kibana主配置文件
cp/etc/kibana/kibana.yml /etc/kibana/kibana.yml_bakvim/etc/kibana/kibana.yml
server.port:5601server.host:"0.0.0.0"elasticsearch.hosts:["http://192.168.100.1:9200"]kibana.index:".kibana"

server.port::2行,监听端口。
server.host::7行,监听地址。
elasticsearch.hosts::28行,和ES建立连接的地址和端口
kibana.index::37行,在ES中添加.kibana索引

② 启动服务

systemctl start kibana systemctlenablekibananetstat-antp|grep5601

③ 验证与创建索引模式

  • 浏览器访问http://192.168.100.1:5601→Try our sample data
  • Management→Index Pattern
  • Create index pattern→Index pattern:system-*→Next step
  • Time Filter field name:@timestamp→Create index pattern
  • 进入Discover查看日志

④添加Apache日志

  • 将Apache的访问日志、错误日志,添加到Elasticsearch,并通过Kibana显示。
vim/etc/logstash/conf.d/apache_log.conf
input { file { path => "/etc/httpd/logs/access_log" type => "access" start_position => "beginning" } file { path => "/etc/httpd/logs/error_log" type => "error" start_position => "beginning" } } output { if [type] == "access" { elasticsearch { hosts => ["192.168.100.1:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error" { elasticsearch { hosts => ["192.168.100.1:9200"] index => "apache_error-%{+YYYY.MM.dd}" } } }
  • 启动并加载logstash配置文件
logstash -f /etc/logstash/conf.d/apache_log.conf

在Kibana中分别创建apache_access-*apache_error-*索引模式。

  • 浏览器访问http://192.168.100.1:5601
    • Management→Index Pattern
  • Create index pattern→Index pattern:apache_access-*apache_error-*→Next step
  • Time Filter field name:@timestamp→Create index pattern
  • Discover→Add a filter:apache_error-*apache_access-*→可以查看相应的图表及日志信息

2_Filebeat+ELK部署

官方网站(中文下载):
https://www.elastic.co/cn/downloads/beats/filebeat
node4(filebeat)

① 安装Filebeat

  • 下载tar.gz包
wget-P /opt/ https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.1-linux-x86_64.tar.gz
  • 解压并安装
tar-zxvf filebeat-7.8.1-linux-x86_64.tar.gzmvfilebeat-7.8.1-linux-x86_64/ /usr/local/filebeat/
  • 或使用rpm包安装
rpm-ivh filebeat-6.6.1-x86_64.rpm

② 配置filebeat

  • 修改filebeat.yml配置文件
if$(whichfilebeat);then#yum安装cd/etc/filebeat/else#源码安装cd/usr/local/filebeat/fimvfilebeat.yml filebeat.yml_bakvimfilebeat.yml
filebeat.prospectors:-type:logenabled:truepaths:-/var/log/messages-/var/log/*.logfields:service_name:filebeatlog_type:logservice_id:192.168.100.4#--------------Elasticsearch output------------------#(ES方式这里不用,全部注释掉)#----------------Logstash output---------------------output.logstash:hosts:["192.168.100.3:5044"]

filebeat.prospectors::收集数据
- type: log:指定log类型,从日志文件中读取消息。
- /var/log/messages:指定监控的日志文件
fields::可以设置一些参数字段添加到output中
hosts::指定logstash的IP和端口

  • 启动并加载filebeat配置文件
if$(whichfilebeat);thenfilebeat -e -c filebeat.ymlelse/usr/local/filebeat/filebeat -e -c filebeat.ymlfi

③ Logstash配置接收Beats
node(logstash)

  • 修改logstash配置文件
vim/etc/logstash/conf.d/filebeat.conf
input { beats { port => 5044 } } output { elasticsearch { hosts => ["192.168.100.1:9200"] index => "%{[fields][service_name]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
  • 启动并加载logstash配置文件
logstash -f /etc/logstash/conf.d/filebeat.conf

④ Kibana创建索引

  • Index Pattern:filebeat-*
  • Time field:@timestamp
  • Discover 中查看日志

结语

ELK 核心价值:解决分布式系统日志分散、检索困难、分析低效的问题,实现集中化、实时化、可视化的日志管理。

关键端口与路径

  • Elasticsearch:9200(HTTP),配置/etc/elasticsearch/elasticsearch.yml
  • Logstash:5044(Beats input),配置/etc/logstash/conf.d/*.conf
  • Kibana:5601,配置/etc/kibana/kibana.yml
  • Filebeat: 配置/etc/filebeat/filebeat.yml

[!question] 请问 ELK 中 Logstash 和 Filebeat 的定位有何不同?
Logstash功能强大但资源消耗高,适合复杂过滤与多源整合;Filebeat轻量高效,专注日志采集与可靠传输;
通常两者配合使用(Filebeat → Logstash → ES)。

[!question] 为什么 Elasticsearch 集群健康状态为 yellow 仍可正常使用?
yellow 表示主分片完整但副本缺失(如单节点集群),不影响读写,但缺乏高可用性。生产环境建议至少 3 节点以实现 green 状态。

[!question] Kibana 如何实现日志的时间范围筛选?
依赖日志中的@timestamp字段(由 Logstash/Filebeat 自动添加),在 Discover 或 Dashboard 中通过时间选择器动态过滤。


ERROR: [1] bootstrap checks failed [1]: max number of threads [3870] for user [elasticsearch] is too low, increase to at least [4096] ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/elasticsearch/logs/my-elk-cluster.log

原因:
Elasticsearch 启动时报错max number of threads [3870] for user [elasticsearch] is too low, increase to at least [4096],是由于系统对elasticsearch用户的进程/线程数限制低于要求值。

解决方法:

  • 第一步:编辑/etc/security/limits.conf,添加
elasticsearch soft nofile 65535 elasticsearch hard nofile 65535 elasticsearch soft nproc 4096 elasticsearch hard nproc 4096
  • 增加内存映射区域
echo"vm.max_map_count=262144"|sudotee-a /etc/sysctl.conf sysctl -p
  • 第二步:通过sudo su - elasticsearch以登录 shell 切换用户
  • 第三步:执行ulimit -u验证输出为4096
  • 第四步:在此会话中启动 Elasticsearch,即可通过检查
ulimit-u4096bash: ulimit: max user processes: 无法修改 limit 值: 不允许的操作

原因:
手动运行ulimit -u 4096失败并提示“无法修改 limit 值”,是因为当前 shell 无权提升硬限制,且未从 PAM 加载配置。

解决方法:

  • 第一步:确保/etc/pam.d/common-session包含
session required pam_limits.so

如果不包含:

echo"session required pam_limits.so"|tee-a /etc/pam.d/common-session
  • 第二步:必须通过登录 shell(如su - elasticsearch)切换用户,才能加载limits.conf设置
  • 第三步:在该会话中无需手动设置ulimit,系统已自动应用配置

  1. 报错日志↩︎ ↩︎

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:02:02

计算机毕设java鲜花在线商城 基于Java的鲜花电商管理系统设计与实现 Java语言下的鲜花在线销售平台开发

计算机毕设java鲜花在线商城911yt9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网的飞速发展和人们生活水平的不断提高,鲜花的需求逐渐从线下走向线上。尤…

作者头像 李华
网站建设 2026/5/1 5:03:45

关于跨境导航网站

指尖跃动,世界即达:解密跨境导航网站的全球淘金术清晨七点,上海的程序员李响一边啜饮咖啡,一边浏览着日本乐天市场的限时特惠;午后,伦敦的设计师艾玛通过几个点击,找到了首尔独立设计师的手作店…

作者头像 李华
网站建设 2026/5/1 6:10:40

文本摘要技术实战:从原理到落地的完整指南

文本摘要技术实战:从原理到落地的完整指南 【免费下载链接】DeepPavlov An open source library for deep learning end-to-end dialog systems and chatbots. 项目地址: https://gitcode.com/gh_mirrors/de/DeepPavlov 在信息爆炸的时代,如何从海…

作者头像 李华
网站建设 2026/4/30 23:24:22

ContiNew Admin:企业级后台框架的终极开发效率提升方案

ContiNew Admin:企业级后台框架的终极开发效率提升方案 【免费下载链接】continew-admin 🔥Almost最佳后端规范🔥持续迭代优化的前后端分离中后台管理系统框架,开箱即用,持续提供舒适的开发体验。当前采用技术栈&#…

作者头像 李华
网站建设 2026/5/1 6:11:44

Ruffle字体加载终极指南:从乱码到完美显示

Ruffle字体加载终极指南:从乱码到完美显示 【免费下载链接】ruffle A Flash Player emulator written in Rust 项目地址: https://gitcode.com/GitHub_Trending/ru/ruffle 还在为SWF文件在Ruffle中显示乱码而烦恼吗?作为一款基于Rust构建的Flash …

作者头像 李华