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

ELKStack高效部署与架构解析

ELK Stack 部署与架构一、架构总览┌──────────────────────────────────────────────────────────────┐ │ 数据采集层 │ │ Node1(nginx) ─── Filebeat 6.7.2 ─── 采集 /var/log/nginx/* │ │ Apache ──────── Logstash 6.7.2 ──── 采集 httpd 日志 │ └────────────────────────┬─────────────────────────────────────┘ │ (5044 / beats 协议) ▼ ┌──────────────────────────────────────────────────────────────┐ │ 数据处理层 │ │ Apache ──────── Logstash ─── parse / filter / route │ │ (host: 192.168.110.130:5044) │ └────────────────────────┬─────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────┐ │ 数据存储层 │ │ Node1 (192.168.110.130:9200) ─── ES 6.7.2 ─── my-elk-cluster│ │ Node2 (192.168.110.129:9200) ─── ES 6.7.2 │ │ Index: nginx_access-2024.05.23 │ └────────────────────────┬─────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────┐ │ 可视化层 │ │ Node1 (192.168.110.130:5601) ─── Kibana 6.7.2 │ │ Index Pattern, Discover, Dashboard │ └──────────────────────────────────────────────────────────────┘节点角色与 IP 规划节点IP部署组件角色Node1192.168.110.130ES Kibana Filebeat(Nginx)ES 数据节点, 可视化Node2192.168.110.129ESES 数据节点Apache—Apache Logstash日志源, 数据处理Filebeat节点192.168.110.130Filebeat → Logstash轻量采集 转发二、各组件核心配置2.1 Elasticsearch双节点集群关键配置文件/etc/elasticsearch/elasticsearch.yml# 集群与节点 cluster.name: my-elk-cluster node.name: node1 # node2 为 node2 ​ # 数据与日志路径 path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch ​ # 网络 network.host: 0.0.0.0 http.port: 9200 ​ # 内存锁防止 swap bootstrap.memory_lock: true ​ # 集群发现6.x 用 unicast discovery.zen.ping.unicast.hosts: [node1, node2] ​ # 跨域elasticsearch-head 需要 http.cors.enabled: true http.cors.allow-origin: *启动与状态检查操作命令/URL启动systemctl start elasticsearch开机自启systemctl enable elasticsearch查看节点http://IP:9200集群健康http://IP:9200/_cluster/health?pretty集群状态http://IP:9200/_cluster/state?pretty集群健康三色含义颜色含义green所有主分片和副本都正常分配yellow主分片正常部分副本未分配red有主分片未分配数据不完整2.2 elasticsearch-head可视化管理依赖Node.jsv8.2.1 PhantomJS端口9100启动npm run start 在/opt/elasticsearch-head/下访问http://IP:9100/2.3 Logstash数据采集 处理角色接收 Filebeat 推送 直接读 Apache/Nginx 日志写入 ES。配置文件结构三部分input → 定义数据源文件、beats、stdin 等 filter → 数据处理grok、date、mutate 等 output → 定义输出目标ES、stdout 等核心配置示例接收 Filebeat 写入 ES# /etc/logstash/conf.d/filebeat.conf input { beats { port 5044 # 监听 Filebeat 推送 } } ​ output { elasticsearch { hosts [192.168.110.130:9200, 192.168.110.129:9200] index %{[fields][service_name]}-%{yyyy.MM.dd} } }按日志类型分流示例Apacheinput { 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.110.130:9200] index apache_access-%{yyyy.MM.dd} } } if [type] error { elasticsearch { hosts [192.168.110.130:9200] index apache_error-%{yyyy.MM.dd} } } }关键参数速查参数含义path日志文件路径支持通配符/var/log/*.logtypeEvent 类型字段output 中可据此分流start_positionbeginning从头读end从尾部读hostsES 集群地址数组格式index写入的索引名支持%{yyyy.MM.dd}日期变量常用生命周期命令# 命令行测试stdin → stdout logstash -e input { stdin{} } output { stdout{ codecrubydebug } } ​ # 指定配置文件运行 logstash -f /etc/logstash/conf.d/filebeat.conf ​ # 后台运行 nohup logstash -f filebeat.conf --log.level error /dev/null 21 ​ # 清理锁文件进程异常退出后 rm -f /var/lib/logstash/.lock2.4 Filebeat轻量日志收集配置文件/usr/local/filebeat/filebeat.ymlfilebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/access.log - /var/log/*.log tags: [filebeat] fields: service_name: nginx log_type: access from: 192.168.110.130 ​ output.logstash: hosts: [192.168.110.130:5044]后台启动nohup ./filebeat -e -c filebeat.yml filebeat.out 21 关键配置项配置说明paths日志路径支持通配符fields自定义字段会随日志发送output 中%{[fields][xxx]}引用tags标签用于筛选output.logstash发送到 Logstash注释掉 output.elasticsearch2.5 Kibana可视化平台配置文件/etc/kibana/kibana.ymlserver.port: 5601 server.host: 0.0.0.0 elasticsearch.hosts: [http://192.168.110.130:9200, http://192.168.110.129:9200] kibana.index: .kibana启动systemctl start kibana首次使用流程访问http://192.168.110.130:5601Management → Index Pattern → Create index pattern输入nginx_access-*或apache_access-*选择timestamp作为时间字段进入 Discover 查看日志三、数据流向总图┌──────────┐ 采集 ┌──────────┐ 处理路由 ┌──────────────┐ 展示 ┌─────────┐ │ Filebeat │ ──5044──→ │ Logstash │ ──9200──→ │ Elasticsearch │ ──5601──→ │ Kibana │ │ (Nginx) │ (beats) │ (Apache) │ (ES写入) │ (双节点集群) │ │ │ └──────────┘ └──────────┘ └──────────────┘ └─────────┘ │ │ │ 也可直接读本地日志 │ Index 命名规则 │ /var/log/xxx │ 服务名-YYYY.MM.DD ▼ ▼ Apache access_log nginx_access-2024.05.23 Apache error_log nginx_error-2024.05.23四、ES 索引管理CRUD# 创建索引 curl -XPUT localhost:9200/index-demo # 查看索引设置 curl -XGET localhost:9200/index-demo/_settings # 修改副本数 curl -XPUT localhost:9200/index-demo/_settings \ -H Content-Type: application/json \ -d {number_of_replicas: 2} # 创建别名 curl -XPOST localhost:9200/_aliases \ -H Content-Type: application/json \ -d {actions:[{add:{index:index-demo,alias:user_info_alicas}}]} # 删除别名 curl -XPOST localhost:9200/_aliases \ -H Content-Type: application/json \ -d {actions:[{remove:{index:index-demo,alias:user_info_alicas}}]} # 删除单个索引 curl -XDELETE localhost:9200/index-demo # 删除多个索引 curl -XDELETE localhost:9200/index-demo,index-demo2五、常见故障场景速查故障现象排查方向ES 集群无法发现status: red, 各节点孤立检查discovery.zen.ping.unicast.hosts主机名是否可解析etchosts 或 DNS集群 yellow副本未分配查看是否有足够节点承载副本单节点集群必然 yellowLogstash BOM 报错启动失败配置文件编码确保是 UTF-8 without BOMLogstash 锁文件无法启动rm -f /var/lib/logstash/.locknpm install 卡住安装超时切换国内镜像npm config set registry https://registry.npmmirror.com内存不足ES 启动失败配置bootstrap.memory_lock: true 调整 JVM 堆内存Filebeat 不采集数据为空检查start_position: beginning或日志文件 read 权限
http://www.zskr.cn/news/1386992.html

相关文章:

  • 为什么苏州工厂老板都会选择响课教育做GEO优化?一文深度解读!
  • Claude Code 全栈提示词:前端/Java/UI/测试一册通
  • ARM调试状态核心机制与PSTATE处理详解
  • 告别手动选点:cam_lidar_calibration如何用VOQ自动筛选最优标定位姿?
  • 你的图片安全吗?聊聊LSB隐写的‘易碎性’和那些年我们踩过的坑
  • FlashAttention V3 前瞻:下一代Attention优化方向
  • 考研复习 Day 40 | 密码学--第四章 分组密码(中)
  • Linux运维之磁盘分区与挂载详解
  • TVA在电子元器件领域的创新应用(9)
  • 终极指南:如何在Mac上使用Topit实现300%效率提升的窗口置顶
  • 利用Taotoken模型广场为智能CRM选择合适的大模型
  • 技术美术入门必懂:用OpenGL知识反推Unity Shader与渲染管线(实战解析)
  • 低延迟可解释AI模型在实时决策系统中的应用
  • 现代视角下的《周易》浅谈
  • 别再只用ARIMA了!当数据少得可怜时,试试灰色预测GM(1,1)模型(附Python/R代码对比)
  • 避坑指南:Unity 2018/2019 WebGL透明背景设置全流程,解决PostProcess颜色异常
  • Oracle EBS中库存事务是如何影响成本计算的?
  • 2026年4月优秀的冷库设备企业推荐,冷库/冷库机组/冷库制冷设备/冷库安装/保鲜冷库/速冻冷库,冷库设备品牌推荐 - 品牌推荐师
  • YOLOv8传送带缺陷识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)
  • JavaSSM框架从入门到精通!第六天(Spring篇 一)
  • DeepSeek技术方案生成:从“能跑通”到“可交付”的5级成熟度跃迁路径(含Gartner对标矩阵)
  • Cortex-M3/M4调试架构与多节点SWD技术解析
  • ROS1 Action通信避坑指南:手把手教你配置CMakeLists.txt和解决常见编译错误
  • 合肥工商注册代理技术解析及合规服务机构盘点:合肥小规模纳税人代账/合肥注册公司名称核准/合肥注册公司地址挂靠/合肥注册公司材料/选择指南 - 优质品牌商家
  • 别再浪费磁盘空间了!手把手教你用LVM精简卷(Thin Provisioning)给服务器‘瘦身’
  • 合肥代理记账权威机构判定维度与合规服务解析:合肥工商注册代理/合肥注册公司名称核准/合肥注册公司地址挂靠/合肥注册公司材料/选择指南 - 优质品牌商家
  • 怎么知道机械臂该怎么动
  • 低延迟可解释AI模型架构设计与边缘计算优化
  • 保姆级避坑指南:在Ubuntu 20.04上搞定VINS-Fusion环境与手机数据采集(含源码修改细节)
  • 从 for 循环到 yield:一文彻底吃透 Python 迭代器与生成器