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

【监控与可观测性】03-ELK日志体系搭建:从采集到告警的完整闭环

ELK 日志体系搭建:从采集到告警的完整闭环

专栏:监控 & 可观测性
难度:进阶
标签:ELKElasticsearchLogstashKibanaFilebeat日志


前言

分散在各服务器上的日志,在出问题时根本来不及一台台查。ELK 日志平台把所有日志集中管理,是运维的眼睛。


一、架构选型

应用服务器 ↓ Filebeat(轻量采集,推荐) Kafka(消息队列,流量削峰) ↓ Logstash(清洗、转换、过滤) Elasticsearch(存储、索引) ↓ Kibana(查询、可视化) ↓ Watcher 告警规则 钉钉/企微通知

为什么加 Kafka?日志量高峰期 Logstash 处理不过来,Kafka 做缓冲,防止数据丢失。


二、Docker Compose 快速搭建

# docker-compose.ymlversion:'3.8'services:elasticsearch:image:elasticsearch:8.8.0environment:-discovery.type=single-node-ES_JAVA_OPTS=-Xms2g-Xmx2g-xpack.security.enabled=falseports:-"9200:9200"volumes:-es_data:/usr/share/elasticsearch/datakibana:image:kibana:8.8.0ports:-"5601:5601"environment:-ELASTICSEARCH_HOSTS=http://elasticsearch:9200depends_on:-elasticsearchlogstash:image:logstash:8.8.0volumes:-./logstash.conf:/usr/share/logstash/pipeline/logstash.confdepends_on:-elasticsearchvolumes:es_data:

三、Filebeat 配置(部署在应用服务器)

# /etc/filebeat/filebeat.ymlfilebeat.inputs:-type:logenabled:truepaths:-/var/log/nginx/access.logfields:service:nginxenv:productionmultiline:# 处理Java异常的多行日志pattern:'^\d{4}-\d{2}-\d{2}'negate:truematch:after-type:logpaths:-/opt/app/logs/*.logfields:service:myappoutput.kafka:hosts:["kafka:9092"]topic:"logs-%{[fields.service]}"codec.json:pretty:false

四、Logstash 处理管道

# logstash.confinput{kafka{bootstrap_servers=>"kafka:9092"topics_pattern=>"logs-.*"group_id=>"logstash"codec=>json}}filter{# 解析Nginx access logif[fields][service]=="nginx"{grok{match=>{"message"=>'%{IPORHOST:remote_ip} - %{DATA:user} \[%{HTTPDATE:time}\] "%{WORD:method} %{DATA:url} HTTP/%{NUMBER:http_version}" %{NUMBER:response_code} %{NUMBER:bytes} "%{DATA:referrer}" "%{DATA:agent}" %{NUMBER:request_time}'}}mutate{convert=>{"response_code"=>"integer""bytes"=>"integer""request_time"=>"float"}}}# 慢请求标记if[request_time]and[request_time]>1.0{mutate{add_tag=>["slow_request"]}}# 解析时间戳date{match=>["time","dd/MMM/yyyy:HH:mm:ss Z"]target=>"@timestamp"}}output{elasticsearch{hosts=>["elasticsearch:9200"]index=>"logs-%{[fields][service]}-%{+YYYY.MM.dd}"}}

五、Elasticsearch 索引模板

# 创建索引模板,避免字段映射冲突curl-XPUT"http://localhost:9200/_index_template/logs"-H'Content-Type: application/json'-d' { "index_patterns": ["logs-*"], "template": { "settings": { "number_of_shards": 2, "number_of_replicas": 1, "index.lifecycle.name": "logs-policy" }, "mappings": { "properties": { "@timestamp": {"type": "date"}, "response_code": {"type": "integer"}, "request_time": {"type": "float"}, "remote_ip": {"type": "ip"} } } } }'

六、ILM 索引生命周期管理(自动清理)

# 配置策略:7天转到warm,30天删除curl-XPUT"http://localhost:9200/_ilm/policy/logs-policy"-H'Content-Type: application/json'-d' { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size": "10GB", "max_age": "1d" } } }, "warm": { "min_age": "7d", "actions": { "readonly": {}, "shrink": {"number_of_shards": 1}, "forcemerge": {"max_num_segments": 1} } }, "delete": { "min_age": "30d", "actions": {"delete": {}} } } } }'

七、Kibana 日志查询技巧

# 查询Nginx 5xx错误 response_code >= 500 AND fields.service: "nginx" # 查询慢请求 tags: slow_request AND request_time > 2 # 查询特定IP remote_ip: "192.168.1.100" # 时间范围+关键字 @timestamp:[now-1h TO now] AND message: "OutOfMemoryError"

结语:ELK平台的核心价值是把日志变成可搜索、可告警的数据资产。Filebeat轻量采集,Kafka削峰,Logstash清洗,ES存储,Kibana展示,五个组件各司其职。

http://www.gsyq.cn/news/1631250.html

相关文章:

  • Codex 卡在 Reconnecting 5/5?手把手带您排查修复
  • Prompt Engineering进阶指南:从提示词工程到AI Agent工作流编排
  • 7自由度开源机械臂OpenArm 2.0:从实验室到生产环境的完整实战指南
  • 电子合同选型7大盲区,企业必看避坑指南
  • 智慧农业技术深耕:从单点赋能到全产业链升级,重构农业生产底层模式
  • 2FA 方案的认证架构对比:本地存储、云同步、端到端加密
  • 国际化办公必备:一站式多语言实时会议转写工具解析
  • AUTOSAR CP Watchdog 原理与运行机制
  • 三、03 OTA-BootLoader前置-flash擦除写入-跳转函数编写
  • 从“能用”到“稳准快”:ChatGPT自定义指令的4阶成熟度模型(附27个真实业务场景指令模板库)
  • Selenium自动化测试与数据采集:从环境搭建到实战应用
  • ComfyUI ControlNet Aux模型下载失败:终极解决方案与深度优化指南
  • 程序员如何选对AI编程助手:四维评估与场景化选型指南
  • 从零构建UI自动化测试框架:分层架构设计与Python实战
  • 用 symlink 管好 Claude Code 规则,多项目协作不用到处复制粘贴
  • 终极解决方案:用d2dx让经典暗黑2在现代PC上焕然一新![特殊字符]
  • 运维踩坑实录:服务器 WAF 完好无损,官网却被植入黑产脚本,我找到了被忽略的攻击入口
  • 第一章 多相流基础(三)---连续介质假设
  • HCI 功能规范【3. Overview of commands and events】
  • 把设计规范写成代码格式,是所有 AI 工具的上游约束方法论
  • 青拔申报全套服务丨文案逻辑梳理+高端PPT设计
  • unity-子状态机
  • Linux---动静态库的加载与链接
  • 教培机构小程序开发工具测评:餐宝盈/BBWEYY/比文云/Typedream/Notion Sites(2026年7月更新)含零代码SAAS、AI编程、源码定制交付
  • 近期Gmail账户劫持攻击高发!广告主需及时完成安全加固
  • 把 CLAUDE.md 当成项目里的第二份 README
  • TREZOR硬件钱包安全漏洞修复与主动防御实战指南
  • 【安全架构师必修】拒绝纸上谈兵!六大网络安全模型深度拆解与2026实战落地指南
  • 300V 高压直流电源调试 48V/72V 低压电机:完整安全规范与实操要点
  • 大白话说一说C++指针的非法访问