告警配置

监控告警 #

为 Easysearch 集群构建完整的告警体系,及时发现和处理问题,确保集群的稳定运行。


告警体系概览 #

Easysearch 的告警体系由以下核心组件组成:

┌──────────────────────────────────────────────────────────────┐
│                       告警生命周期                             │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  数据采集  →  指标评估  →  告警触发  →  告警发送  →  告警处理  │
│    │           │          │         │        │              │
│    └───┬───────┴───────────┴─────────┴────────┘             │
│        │                                                    │
│    └─→ INFINI Console 告警管理平台                          │
│                                                              │
└──────────────────────────────────────────────────────────────┘

告警规则体系 #

1. 可用性告警 #

集群的基础可用性监控。

告警规则触发条件建议阈值处理建议
集群不健康_cluster/health 返回 yellow 或 red立即告警检查节点是否掉线,运行 GET _cluster/allocation/explain 诊断未分配分片
节点离线节点掉线或无响应立即告警(超 1 分钟)检查节点进程、网络连通性、磁盘空间
分片未分配存在未分配的主分片或副本分片立即告警检查集群容量、节点约束、路由配置
集群脑裂多个 master 节点并存立即告警紧急处理,可能需要恢复集群

2. 资源告警 #

服务器资源耗尽导致的问题。

告警规则触发条件建议阈值处理建议
磁盘空间即将耗尽磁盘使用率过高75% 警告,85% 严重及时扩容、删除过期数据、启用冷热分层
磁盘空间耗尽磁盘写满85%+紧急扩容,集群会变为 read-only
JVM 堆内存告警JVM 堆使用率过高75% 警告,85% 严重增大堆内存、优化查询、添加节点分摊负载
CPU 使用率过高CPU 长期处于高位80% 警告,90%+ 严重检查慢查询、限流索引、添加计算节点
内存使用率过高系统内存耗尽85% 警告增加系统内存、减少后台任务

3. 性能告警 #

集群查询和写入性能相关的告警。

告警规则触发条件建议阈值处理建议
搜索延迟过高查询平均响应时间升高500ms 警告,1s+ 严重检查慢查询日志、优化查询语句、增加搜索节点
写入延迟过高索引平均响应时间升高100ms 警告,500ms+ 严重减少副本数(临时)、优化 mapping、增加数据节点
Bulk 拒绝写入队列满,请求被拒绝任何拒绝都应告警降低写入速率、增加数据节点、增加 bulk 队列
查询超时查询无法在超时时间内完成连续 5 个以上优化查询、增加超时时间或查询并发数调优

4. 数据一致性告警 #

保证数据完整性和一致性的告警。

告警规则触发条件建议阈值处理建议
副本不一致分片副本与主分片数据不一致立即告警检查分片 recovery 过程、考虑重新分配
快照失败备份任务失败立即告警检查备份仓库连通性、存储空间
索引损坏索引检查失败,数据可能损坏立即告警尝试恢复备份或重建索引

5. 安全告警 #

异常访问和安全事件的告警。

告警规则触发条件建议阈值处理建议
登录失败频繁短时间内大量登录失败5 分钟内 10+ 次失败检查应用配置、防止暴力破解
权限操作异常异常的权限修改或删除操作立即告警审计日志、检查操作人身份
证书即将过期TLS 证书到期时间不足30 天前告警更新证书,避免服务中断

告警通知 #

通知渠道 #

使用 INFINI Console 配置多种通知渠道:

  • 邮件:适合所有级别告警
  • 钉钉:实时群组通知,支持 @群主
  • 企业微信:内部工作群通知,消息已读追踪
  • 短信:紧急告警(收费)
  • Webhook:集成自定义系统(如 PagerDuty、Slack)

通知分级 #

根据告警严重程度,设置不同的通知规则:

严重级别阈值示例通知方式应对时间
P0 - 紧急集群 red、磁盘满、关键节点离线电话/短信/Webhook5 分钟内
P1 - 重要集群 yellow、性能下降 50%、副本告警邮件 + 钉钉15 分钟内
P2 - 普通资源接近限制、无分配分片钉钉/企业微信1 小时内
P3 - 信息定期健康检查、维护窗口提醒邮件次日查看

使用 INFINI Console 配置告警 #

快速开始 #

INFINI Console 提供了直观的告警配置界面。

1. 访问告警管理 #

  • 登录 INFINI Console
  • 导航到 告警管理告警规则

2. 创建告警规则 #

规则名称:集群状态异常
规则类型:Easysearch 集群健康
触发条件:status != 'green' for 1m
告警等级:P1
通知渠道:钉钉 + 邮件
描述:当集群状态为 yellow 或 red 超过 1 分钟时触发

3. 配置通知方式 #

在规则中关联通知渠道:

通知规则:
  - P0 告警:立即发送短信和 Webhook
  - P1 告警:发送钉钉和邮件
  - P2 告警:仅发送企业微信

常用告警模板 #

INFINI Console 内置了多个告警模板,可直接使用:

集群监控模板 #

- 集群变黄告警
- 集群变红告警
- 集群脑裂检测
- 主节点无响应
- 节点离线告警

性能监控模板 #

- 搜索延迟过高
- 写入延迟过高
- Bulk 拒绝告警
- 查询超时告警
- GC 时间过长

资源监控模板 #

- 磁盘使用率告警
- 内存使用率告警
- CPU 使用率告警
- 堆内存告警
- 热点线程检测

数据一致性模板 #

- 副本不一致告警
- 快照失败告警
- 索引损坏告警

告警聚合和去重 #

在 INFINI Console 中配置告警聚合规则,避免告警轰炸:

聚合策略使用场景配置示例
按规则去重同一规则在短时间内重复触发10 分钟内同一规则只发送 1 条
按标签分组相关告警统一发送将磁盘、内存、CPU 告警分为一组
告警压制维护期间暂停非关键告警定时维护期间关闭 P2、P3 告警
告警关联多个告警可能来自同一根因GC 过长 + 堆内存告警同时出现

告警处理最佳实践 #

1. 告警阈值设置 #

原则:设置合理的阈值,避免频繁告警或漏掉真实问题。

# 示例:磁盘告警
- 使用率 > 75%:P2 警告,提醒关注
- 使用率 > 85%:P1 重要,需要立即扩容
- 使用率 > 95%:P0 紧急,可能导致集群变为 read-only

# 示例:JVM 堆内存告警
- 使用率 > 75%:P2 警告
- 使用率 > 85%:P1 重要,可能导致 GC 风暴
- 使用率 > 95%:P0 紧急,立即处理

2. 告警响应流程 #

告警触发
   ↓
告警通知(邮件/短信/Webhook)
   ↓
收到通知 → 查看告警详情
   ↓
确认告警真实性 → 检查历史趋势
   ↓
执行处理动作
   ├─ 临时措施(如降低写入)
   ├─ 根本原因诊断
   └─ 长期解决方案(如扩容)
   ↓
更新告警状态 → 关闭告警

3. 常见问题处理 #

问题 1:频繁告警(告警轰炸) #

原因

  • 阈值设置过低
  • 集群确实存在持续问题
  • 网络抖动导致频繁变化

处理

  1. 临时调高阈值,避免轰炸
  2. 分析告警趋势,找出根本原因
  3. 采取长期解决方案(扩容、优化等)

问题 2:告警延迟 #

原因

  • 指标采集间隔过大
  • 通知渠道堵塞

处理

  1. 缩短采集间隔(通常 30 秒)
  2. 测试通知渠道连通性
  3. 优先使用低延迟通知方式(Webhook)

问题 3:误告警 #

原因

  • 瞬间的资源尖峰
  • 维护期间未关闭告警

处理

  1. 使用滑动窗口平均值,避免单点尖峰
  2. 在维护前关闭相关告警
  3. 设置告警压制规则

监控与告警的联动 #

INFINI Console 集成监控和告警 #

INFINI Console 将监控和告警完整结合:

  1. 实时监控面板

    • 集群、节点、索引多维度监控
    • 实时告警在面板上高亮显示
    • 一键查看告警详情
  2. 告警关联分析

    • 自动关联相关告警
    • 展示告警的历史趋势
    • 建议可能的根本原因
  3. 告警历史和统计

    • 告警发生时间、持续时间
    • 告警解决时间(MTTR)
    • 告警频率统计

其他监控工具的告警集成 #

Prometheus + Alertmanager #

如果使用 Prometheus 采集 Easysearch 指标:

# prometheus.yml - 配置 Easysearch exporter
scrape_configs:
  - job_name: 'easysearch'
    static_configs:
      - targets: ['localhost:9114']  # Elasticsearch Exporter

# alerting_rules.yml
groups:
  - name: easysearch
    rules:
      - alert: EasysearchClusterRed
        expr: elasticsearch_cluster_health_status{color="red"} == 1
        for: 1m
        annotations:
          summary: "Easysearch 集群变红"

Elasticsearch 原生告警(Agent) #

Easysearch 兼容 Elasticsearch Stack,可使用 Elastic Stack 的告警功能。


告警检查清单 #

在完成告警体系建设时,确保涵盖以下内容:

基础告警 #

  • 集群健康状态告警(green/yellow/red)
  • 节点离线告警
  • 磁盘使用率告警(75%、85%)
  • JVM 堆内存告警(75%、85%)
  • CPU 使用率告警

性能告警 #

  • 搜索延迟告警
  • 写入延迟告警
  • Bulk 拒绝告警
  • 慢查询监控

可靠性告警 #

  • 快照失败告警
  • 副本同步失败告警
  • 索引损坏告警

安全告警 #

  • 登录失败告警
  • 权限操作告警
  • 证书过期提醒

通知配置 #

  • 邮件配置完成
  • 钉钉/企业微信配置完成
  • 通知渠道测试通过
  • 告警分级和分配完成

相关文档 #


总结 #

一个完整的告警体系应该包括:

  1. 合理的告警规则:覆盖可用性、性能、资源、数据一致性和安全
  2. 多渠道通知:邮件、短信、即时通讯、Webhook 等
  3. 智能聚合和去重:避免告警轰炸
  4. 规范的处理流程:快速响应和根因分析
  5. 持续改进:根据告警效果调整阈值和规则

建议使用 INFINI Console 作为告警管理平台,它提供了完整的告警生命周期管理功能,帮助您构建一个高效的告警体系。