温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何利用ELK Stack进行实时监控

发布时间:2025-11-23 23:22:00 来源:亿速云 阅读:210 作者:小樊 栏目:系统运维

ELK Stack 实时监控实战指南

一 架构与数据流

  • 数据采集:在主机侧使用Filebeat/Logstash/syslog-ng采集日志。Filebeat轻量、资源占用低;Logstash可做复杂处理;syslog-ng具备缓冲、多线程、传输可靠性与过滤/重写/JSON格式化能力,适合集中式日志枢纽。
  • 数据处理:在Logstash中用grok、date、mutate等插件解析非结构化日志,统一为结构化JSON,便于检索与聚合。
  • 存储与检索:将结构化数据写入Elasticsearch,利用其实时搜索与聚合能力支撑近实时分析与可视化。
  • 可视化与告警:在Kibana中通过Discover/Visualize/Dashboard构建实时视图;告警可用Elasticsearch Watcher按条件触发邮件/Webhook。
  • 可选扩展:在Grafana中接入Elasticsearch数据源,构建统一监控大盘与阈值告警。

二 快速落地步骤

  • 步骤1 安装与连通:部署Elasticsearch、Logstash、Kibana,确保集群健康(如访问http://localhost:9200验证ES),Kibana可正常连接ES。
  • 步骤2 采集配置:
    • Filebeat示例(推荐):采集应用日志并直接输出到ES或经Logstash处理。
    • Logstash文件输入示例(实时tail):
      input {
        file {
          path => "/var/log/myapp.log"
          start_position => "beginning"
          sincedb_path => "/dev/null"
          codec => "json_lines"
          mode => "tail"
        }
      }
      filter {
        grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} \[%{DATA:thread}\] %{JAVACLASS:class} - %{GREEDYDATA:message}" } }
      }
      output {
        elasticsearch {
          hosts => ["http://localhost:9200"]
          index => "myapp-%{+YYYY.MM.dd}"
        }
      }
      
    • syslog-ng集中转发:在客户端将日志过滤/重写/JSON化后,以TCP可靠发送到中心Logstash。
  • 步骤3 索引与时间字段:按天创建索引(如myapp-YYYY.MM.dd),确保文档含**@timestamp**或等效时间字段,便于Kibana时间过滤。
  • 步骤4 Kibana可视化:在Kibana创建Index Patterns(如springboot_logs-或myapp-,时间字段选**@timestamp**),构建折线/柱状/饼图并组合为Dashboard实现实时监控。

三 告警与可视化

  • Kibana告警:在Kibana的告警与洞察中创建规则,基于阈值/异常模式对指定索引与时间窗口触发邮件、Webhook、Slack等动作,用于错误率飙升、服务不可用等场景。
  • Elasticsearch Watcher(经典方式):
    • 例:每10秒检查最近10秒是否出现错误日志,若存在则发邮件。
      PUT _watcher/watch/error_count_watch
      {
        "trigger": { "schedule": { "interval": "10s" } },
        "input": {
          "search": {
            "request": {
              "indices": ["logstash-*"],
              "body": {
                "query": {
                  "bool": {
                    "must": [{ "match": { "message": "error" } }],
                    "filter": [{ "range": { "@timestamp": { "gte": "now-10s" } } }]
                  }
                }
              }
            }
          }
        },
        "condition": {
          "compare": { "ctx.payload.hits.total": { "gt": 0 } }
        },
        "actions": {
          "send_email": {
            "email": {
              "to": "admin@example.com",
              "subject": "Error Alert",
              "body": "An error occurred in the system."
            }
          }
        }
      }
      
  • Grafana联动:在Grafana添加Elasticsearch数据源(如索引lucky-access-,时间字段LogTime*),构建访问趋势、Top 10 IP、异常状态码统计、GeoMap等面板,并配置阈值告警(如单IP5分钟请求超过100次触发)。

四 性能与可靠性要点

  • 数据通道:优先使用异步、批量传输;在syslog-ng/Logstash侧启用缓冲与重试,网络抖动时保障不丢不重。
  • 解析优化:在采集端尽量完成结构化(JSON)与字段标准化,减少Logstash计算压力;grok模式复用与预编译。
  • 索引策略:按天/周滚动索引,合理设置副本数与刷新间隔(refresh_interval);冷热架构与ILM管理生命周期。
  • 资源与集群:为Elasticsearch规划足够堆内存与磁盘IO,分片大小与数量适中;监控节点负载、查询延迟、JVM GC。
  • 安全合规:启用TLS传输、RBAC访问控制与审计日志;对敏感字段做脱敏与最小化保留。

五 典型场景配置清单

场景 采集与处理 索引与时间字段 关键图表/指标 告警示例
Linux系统日志 syslog-ng收集并JSON化,经Logstash入ES syslog-/linux-/@timestamp 错误率、服务重启次数、登录失败Top N 5分钟内ERROR数>阈值
Spring Boot应用 Logback输出JSON,Filebeat直传或经Logstash springboot_logs-*/@timestamp HTTP状态码分布、P95/P99延迟、异常堆栈Top N 5xx比例>1%持续3分钟
Nginx访问日志 Filebeat采集,Logstash用grok解析clientip、status、request nginx-*/@timestamp QPS、Top 10 URL、4xx/5xx占比、GeoMap 单IP5分钟请求>100次或5xx激增
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手