监控告警 #
为 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、磁盘满、关键节点离线 | 电话/短信/Webhook | 5 分钟内 |
| 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:频繁告警(告警轰炸) #
原因:
- 阈值设置过低
- 集群确实存在持续问题
- 网络抖动导致频繁变化
处理:
- 临时调高阈值,避免轰炸
- 分析告警趋势,找出根本原因
- 采取长期解决方案(扩容、优化等)
问题 2:告警延迟 #
原因:
- 指标采集间隔过大
- 通知渠道堵塞
处理:
- 缩短采集间隔(通常 30 秒)
- 测试通知渠道连通性
- 优先使用低延迟通知方式(Webhook)
问题 3:误告警 #
原因:
- 瞬间的资源尖峰
- 维护期间未关闭告警
处理:
- 使用滑动窗口平均值,避免单点尖峰
- 在维护前关闭相关告警
- 设置告警压制规则
监控与告警的联动 #
INFINI Console 集成监控和告警 #
INFINI Console 将监控和告警完整结合:
实时监控面板
- 集群、节点、索引多维度监控
- 实时告警在面板上高亮显示
- 一键查看告警详情
告警关联分析
- 自动关联相关告警
- 展示告警的历史趋势
- 建议可能的根本原因
告警历史和统计
- 告警发生时间、持续时间
- 告警解决时间(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 拒绝告警
- 慢查询监控
可靠性告警 #
- 快照失败告警
- 副本同步失败告警
- 索引损坏告警
安全告警 #
- 登录失败告警
- 权限操作告警
- 证书过期提醒
通知配置 #
- 邮件配置完成
- 钉钉/企业微信配置完成
- 通知渠道测试通过
- 告警分级和分配完成
相关文档 #
- 监控指标详解:详细的监控指标和采集方法
- 故障排查:告警后的诊断和处理
- INFINI Console 文档:告警配置详细指南
- 集群 API 参考:健康检查等相关 API
总结 #
一个完整的告警体系应该包括:
- 合理的告警规则:覆盖可用性、性能、资源、数据一致性和安全
- 多渠道通知:邮件、短信、即时通讯、Webhook 等
- 智能聚合和去重:避免告警轰炸
- 规范的处理流程:快速响应和根因分析
- 持续改进:根据告警效果调整阈值和规则
建议使用 INFINI Console 作为告警管理平台,它提供了完整的告警生命周期管理功能,帮助您构建一个高效的告警体系。