ELK日志文件分析系统——E(Elasticsearch)

目录

基本概念

一、架构设计

二、核心原理

三、关键特性

四、应用意义

部署步骤

‌一、环境准备‌

‌二、安装 Elasticsearch‌

‌三、关键配置(elasticsearch.yml)‌

‌四、启动与验证‌

‌五、集群扩展(新增节点)‌

‌六、安全加固(生产必做)‌

‌常见问题解决‌

常用命令解析

‌一、索引管理命令‌

‌二、文档操作命令‌

‌三、查询命令‌

‌四、聚合分析命令‌

‌五、集群管理命令‌

‌六、实用技巧‌

‌命令设计原理‌


基本概念

一、架构设计

  1. 节点类型

    • Master节点‌:负责集群管理(索引创建/删除、分片分配)和元数据维护,通过Zen Discovery机制选举产生。
    • Data节点‌:处理数据读写和检索请求,承载主要计算负载。
    • 协调节点‌(Client节点):路由请求并聚合结果,减轻主节点压力。
  2. 分片与副本

    • 分片(Shard)‌:索引被水平拆分为多个分片,分布在集群节点上实现分布式存储。
    • 副本(Replica)‌:每个主分片可有多个副本,提供高可用性和读负载均衡。
  3. 分层结构

    • 数据层‌:由Lucene引擎实现倒排索引和段文件(Segment)管理。
    • 服务层‌:通过RESTful API提供搜索、聚合和分析能力。

二、核心原理

  1. 倒排索引

    • 将文档内容分词为词项(Term),建立“词项→文档ID”映射,实现毫秒级全文检索。
  2. 近实时(NRT)机制

    • 数据写入后经内存缓冲(Refresh)1秒内可查,定期刷盘(Flush)确保持久化。
  3. 分布式查询

    • 查询请求被广播到相关分片,协调节点合并结果并按相关性评分排序。

三、关键特性

  1. 高性能与扩展性

    • 支持PB级数据横向扩展,分片自动再平衡。
  2. 多数据类型支持

    • 处理结构化、非结构化文本、数字及地理空间数据。
  3. 分析能力

    • 提供聚合(Bucket/Metric/Pipeline)实现复杂数据分析。
  4. 生态系统集成

    • 与Kibana(可视化)、Logstash/Beats(数据采集)构成完整解决方案。

四、应用意义

  1. 运维监控

    • 集中管理日志和指标,快速定位故障(如通过Transaction ID追踪请求链路)。
  2. 业务智能

    • 分析用户行为(点击流、搜索关键词)优化产品体验。
  3. 安全合规

    • SIEM方案实现威胁检测(如异常登录分析)和审计日志管理。
  4. 成本效益

    • 开源降低许可成本,ILM策略自动优化冷热数据存储。

Elasticsearch通过分布式架构和倒排索引技术,成为实时搜索与分析领域的标杆工具,广泛应用于运维、安全和业务分析场景。

部署步骤

一、环境准备

  1. 系统配置

    # 禁用交换分区(永久生效需写入 /etc/fstab) 
    sudo swapoff -a # 修改文件描述符限制 
    echo "elasticsearch soft nofile 65535" | sudo tee -a /etc/security/limits.conf 
    echo "elasticsearch hard nofile 65535" | sudo tee -a /etc/security/limits.conf # 调整虚拟内存映射数 
    echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf 
    sudo sysctl -p
  2. 安装 JDK 17+

    sudo apt install openjdk-17-jdk # Ubuntu/Debian java -version # 验证版本 

二、安装 Elasticsearch

  1. 下载并解压(以 8.13.4 为例)

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.4-linux-x86_64.tar.gz 
    tar -zxvf elasticsearch-8.13.4-linux-x86_64.tar.gz 
    mv elasticsearch-8.13.4 /usr/local/elasticsearch 
  2. 创建专用用户

    sudo useradd elasticsearch 
    sudo chown -R elasticsearch:elasticsearch /usr/local/elasticsearch 

三、关键配置(elasticsearch.yml

cluster.name: my-production-cluster # 集群名称需唯一:ml-citation{ref="3,8" data="citationList"} 
node.name: node-1 # 节点唯一标识 
path.data: /data/elasticsearch # 数据存储目录(需提前创建):ml-citation{ref="2,8" data="citationList"} 
path.logs: /var/log/elasticsearch # 日志目录 
network.host: 0.0.0.0 # 监听所有网络接口 
http.port: 9200 # REST API 端口 
discovery.seed_hosts: ["192.168.1.101", "192.168.1.102"] # 集群节点IP:ml-citation{ref="9" data="citationList"} 
cluster.initial_master_nodes: ["node-1", "node-2"] # 初始主节点列表:ml-citation{ref="9" data="citationList"} 

四、启动与验证

  1. 启动服务

    sudo -u elasticsearch /usr/local/elasticsearch/bin/elasticsearch -d 
  2. 检查状态

    curl http://localhost:9200 

    预期输出包含集群名、节点名及版本号(如 "name": "node-1"


五、集群扩展(新增节点)

  1. 同步安装包到新节点

    scp -r /usr/local/elasticsearch root@new-node-ip:/usr/local/ 
  2. 修改新节点配置

    node.name: node-2 # 新节点名称 
    discovery.seed_hosts: ["主节点IP"] # 指向已有集群节点 
  3. 启动新节点

    sudo -u elasticsearch /usr/local/elasticsearch/bin/elasticsearch -d 

六、安全加固(生产必做)

  1. 启用 TLS 加密
    bin/elasticsearch-certutil ca # 生成CA 
    bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 # 签发证书 
  2. 配置 elasticsearch.yml
    xpack.security.enabled: true xpack.security.transport.ssl.enabled: true 

常见问题解决

问题现象解决方案
启动报错 max_map_count确认 sysctl vm.max_map_count ≥262144
节点无法加入集群检查 discovery.seed_hosts IP 及防火墙
磁盘空间不足配置 ILM 策略自动清理旧索引

部署方式对比

  • 单机测试‌:直接解压启动(需关闭安全模块)
  • 生产集群‌:必须配置 TLS、节点角色分离、ILM 策略

💡 ‌关键提示

  • 禁止使用 root 用户运行 ES
  • 数据目录需独占磁盘(避免 IO 争抢)
  • 集群节点需时间同步(NTP 服务)

常用命令解析

一、索引管理命令

  1. 创建索引

    PUT /products # 创建名为products的索引:ml-citation{ref="2,10" data="citationList"} 
    {"settings": {"number_of_shards": 3, # 主分片数(数据分布单元):ml-citation{ref="1,10" data="citationList"}"number_of_replicas": 1 # 每个主分片的副本数(高可用):ml-citation{ref="10" data="citationList"}},"mappings": { # 定义字段类型:ml-citation{ref="10" data="citationList"}"properties": {"name": { "type": "text" },"price": { "type": "double"}}} 
    } 
  2. 删除索引

    DELETE /products # 删除索引及其所有数据:ml-citation{ref="8,10" data="citationList"} 

二、文档操作命令

  1. 插入文档

    POST /products/_doc/1 # 指定ID为1插入文档:ml-citation{ref="2,14" data="citationList"} 
    {"name": "Laptop","price": 999.99,"tags": ["electronics", "tech"] 
    } 
  2. 批量操作

    POST /_bulk # 批量插入/更新文档:ml-citation{ref="14" data="citationList"} 
    { "index": { "_index": "products", "_id": "2" } } 
    { "name": "Phone", "price": 599.99 } 
    { "delete": { "_index": "products", "_id": "1" } } # 批量删除:ml-citation{ref="14" data="citationList"} 

三、查询命令

  1. 简单查询

    GET /products/_search # 查询所有文档:ml-citation{ref="2,7" data="citationList"} { "query": { "match": { "name": "laptop" } # 文本分词匹配:ml-citation{ref="4,5" data="citationList"} }, "sort": [ { "price": "desc" } ], # 按价格降序:ml-citation{ref="14" data="citationList"} "from": 0, # 分页起始位置:ml-citation{ref="14" data="citationList"} "size": 10 # 返回条数:ml-citation{ref="14" data="citationList"} } 
  2. 复合查询

    GET /products/_search 
    {"query": {"bool": {             # 布尔组合查询:ml-citation{ref="4" data="citationList"}"must": [         # AND条件{ "term": { "tags": "tech" } } # 精确匹配(不分词):ml-citation{ref="4" data="citationList"}],"filter": [       # 过滤条件(不计算相关性):ml-citation{ref="4" data="citationList"}{ "range": { "price": { "gte": 500 } }}]}} 
    } 

四、聚合分析命令

GET /products/_search 
{"aggs": {"avg_price": { "avg": { "field": "price" } }, # 计算均价:ml-citation{ref="3,5" data="citationList"}"tags_count": {"terms": { "field": "tags.keyword" } # 按标签分组计数:ml-citation{ref="5" data="citationList"}}},"size": 0 # 不返回原始文档:ml-citation{ref="5" data="citationList"} 
} 

五、集群管理命令

  1. 查看健康状态

    GET /_cat/health?v # 显示集群健康状态(绿/黄/红):ml-citation{ref="7,8" data="citationList"} 
  2. 节点信息

    GET /_cat/nodes?v # 列出所有节点及角色:ml-citation{ref="7,9" data="citationList"} 

六、实用技巧

  1. 高亮搜索结果

    GET /products/_search 
    {"query": { "match": { "name": "laptop" } },"highlight": { # 高亮匹配词:ml-citation{ref="14" data="citationList"}"fields": { "name": {} }} 
    } 
  2. 索引别名

    POST /_aliases # 创建别名实现无缝切换:ml-citation{ref="10" data="citationList"} 
    {"actions": [{ "add": { "index": "products_v1", "alias": "products" } }] 
    } 

命令设计原理

  1. RESTful风格‌:所有操作通过HTTP方法(GET/POST/PUT/DELETE)实现
  2. JSON数据交互‌:请求体与响应均为JSON格式,支持结构化查询
  3. 近实时性‌:文档插入后1秒内可查(由refresh_interval控制)

注:实际使用时需替换localhost:9200为ES服务地址,并添加-u username:password参数(若启用安全认证)

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

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

相关文章

融智学教育观及其数学公式体系凝练汇总

摘要:本文系统阐述了邹晓辉教授的融智学教育观,通过原创数学公式体系构建了人机协同教育模型。核心内容包括:认知本体论(文明智慧当量方程)、方法论(七遍通训练算子)、生态位控制论(…

互联网大厂Java求职面试:AI大模型应用实践中的架构挑战与实战

互联网大厂Java求职面试:AI大模型应用实践中的架构挑战与实战 引言 在当今技术飞速发展的时代,AI大模型已成为企业数字化转型的重要引擎。无论是内容生成、智能客服、个性化推荐,还是知识图谱构建和语义理解,大模型的应用场景正在…

龟兔赛跑算法(Floyd‘s Cycle-Finding Algorithm)寻找重复数

龟兔赛跑算法(Floyd’s Cycle-Finding Algorithm)寻找重复数 问题描述 给定一个长度为 N1 的数组 nums,其中每个元素的值都在 [1, N] 范围内。根据鸽巢原理,至少有一个数字是重复的。请找出这个重复的数字。 要求: …

紫光展锐T8300以创新音频技术重塑感知世界

数字化时代,从语音通话到智能交互,从聆听音乐到创作Vlog,声音已成为隐形的基础措施。日益发展的音频技术正在重构用户感知世界的方式,重塑用户的听觉体验。 T8300是紫光展锐专为全球主流用户打造的5G SoC,采用了紫光展…

写作词汇积累(A):颇有微词、微妙(“微”字的学习理解)

一、颇有微词 1、基本介绍 【颇有微词】指对某人或某事有轻微的批评、不满或不同意见,但表达得含蓄委婉 【颇】表示程度较深,【微词】表示隐晦的批评 【微】表示隐晦的、不直白的,强调批评的委婉性 2、使用实例 1、尽管公司的新考勤制度…

flowable工作流的学习demo

1.spring 部署流程 删除部署 查看历史信息 加载一个默认的配置文件 里面包含用户名和数据库信息 加载自定义的配置文件 flowable.cfg.xml <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance…

XCTF-misc-can_has_stdio?

下载得到一个文件 ┌──(kali㉿kali)-[~] └─$ file misc50 misc50: ASCII text, with very long lines (536)┌──(kali㉿kali)-[~] └─$ cat misc50 …

【编译工具】(自动化)AI 赋能的自动化测试工具:如何让测试效率提升 500% 并实现智能质检?

#『编程工具』提升效率征文挑战赛# 目录 引言&#xff1a;AI 如何重塑自动化测试格局 一、新一代 AI 测试工具核心能力解析 二、实战演示&#xff1a;Testim 智能测试平台 &#xff08;1&#xff09;智能录制测试流程 ① 步骤演示 ② AI 元素定位原理 &#xff08…

毛纪逆向分析

文章目录 毛纪逆向分析前言知识系统整体架构概述模块分析模块0模块1模块2模块3模块4模块5总结毛纪逆向分析 对爬虫、逆向感兴趣的同学可以查看文章,一对一小班教学(系统理论和实战教程)、提供接单兼职渠道:https://blog.csdn.net/weixin_35770067/article/details/142514698…

【力扣 简单 C】141. 环形链表

目录 题目 解法一&#xff1a;哈希 解法二&#xff1a;快慢指针 题目 解法一&#xff1a;哈希 struct node {struct ListNode* val;struct node* next; };struct hashSet {struct node** bucket;int size; };struct hashSet* hashSetInit(int size) {struct hashSet* hashS…

Eureka 服务注册与发现原理和使用

1.Eureka 基础概念 Eureka 是 Netflix 开发的服务注册与发现组件&#xff0c;是 Spring Cloud 微服务架构中的核心模块&#xff0c;用于解决微服务间的自动发现与通信问题。其核心功能包括&#xff1a; 服务注册&#xff1a;服务实例将自身信息&#xff08;IP、端口、健康状态等…

create_react_agent + MCP tools

文章目录 MCP tools 调用结果输出MCP Tool 内容成功返回失败返回 普通工具调用 https://blog.csdn.net/2401_89025022/article/details/148629902 MCP tools 调用 import time import asyncio import json from langgraph.prebuilt import create_react_agent from langch…

提示词Prompts(1)

摘要&#xff1a; 本文介绍了langchain.prompts中基础的提示词模板的用法&#xff0c;包括基础的文本模板、对话模板、小样本模板、以及主要两种样本选择器的用法。 文章目录 1. prompts介绍&#xff1f;2. 提示词模板体系 Prompt Templates2.1 基础文本模板 PromptTemplate2.2…

如何在 Elementary OS 上安装最新版本的 VirtualBox

Elementary OS 是一个基于 Ubuntu Linux 的发行版&#xff0c;它易于使用&#xff0c;对初学者友好&#xff0c;并且在用户中非常受欢迎。如果你是 Elementary OS 的用户&#xff0c;并且想在上面虚拟运行和探索其他操作系统&#xff0c;那么 Oracle VirtualBox 是一个非常不错…

uni-app项目loading显示方案

前情 uni-app是我比较喜欢的跨平台框架&#xff0c;它能开发小程序/H5/APP(安卓/iOS)&#xff0c;重要的是对前端开发友好&#xff0c;自带的IDE可视化的运行和打包也让开发体验也非常棒&#xff0c;公司项目就是主推uni-app&#xff0c;为了用户体验对于耗时操作&#xff0c;…

【Android笔记】记一次 CMake 构建 Filament Android 库的完整排错过程(安卓交叉编译、CMake、Ninja)

写在前面的话&#xff0c;为了保持Sceneform-EQR始终是采用最新的filament&#xff0c;每隔一段时间我都会编译filament&#xff0c;并根据新增内容完善Sceneform-EQR。 现由于更换电脑&#xff0c;环境需重新配置。简单记录下编译出错和解决方式。 Sceneform-EQR 是EQ对谷歌“…

ARM 单片机定义变量绝对地址方法

在ARM单片机中&#xff0c;定义变量到绝对地址通常有以下几种方法&#xff08;以Keil MDK为例&#xff0c;其他工具链原理类似&#xff09;&#xff1a; 方法1&#xff1a;使用指针强制转换&#xff08;通用&#xff09; 直接通过指针访问指定地址&#xff1a; define REGIS…

为何AI推理正推动云计算从集中式向分布式转型

作者简介&#xff1a;Vineeth Varughese是Akamai亚太及日本地区的云产品市场负责人&#xff0c;在云计算、人工智能&#xff08;AI&#xff09;及市场进入策略&#xff08;GTM&#xff09;领域拥有丰富经验。 传统云平台在利用海量数据训练AI模型方面表现出色&#xff0c;但随着…

ar 导航导览技术如何实现的?室内外融合定位与ar渲染技术深度解析

本文面向&#xff1a;移动开发工程师、AR技术研究者、室内外导航系统产品经理&#xff0c;旨在提供核心问题的参考方案&#xff1a;如何实现室内外无缝切换的精准定位&#xff08;GPS蓝牙Beacon&#xff09;虚拟导航路径与实景画面的实时叠加原理。 如需获取ar导航导航技术解决…

电路问题处理:SGMII链路中的AC耦合电容摆放位置

SGMII链路中的AC耦合电容摆放位置 目前是有个板子&#xff0c;其上分别有fpga&#xff0c;fpga的gtx口出sgmii千兆以太网链路&#xff0c;通过高速连接器互联&#xff0c; 通常高速差分链路的AC耦合电容放在靠近接收端位置&#xff0c;如果在同一个板内的话没啥疑惑的直接靠近…