---
title: "告警配置"
date: 0001-01-01
description: "告警规则、通知渠道、告警处理、聚合去重。"
summary: "监控告警 #  为 Easysearch 集群构建完整的告警体系，及时发现和处理问题，确保集群的稳定运行。
 告警体系概览 #  Easysearch 的告警体系由以下核心组件组成：
┌──────────────────────────────────────────────────────────────┐ │ 告警生命周期 │ ├──────────────────────────────────────────────────────────────┤ │ │ │ 数据采集 → 指标评估 → 告警触发 → 告警发送 → 告警处理 │ │ │ │ │ │ │ │ │ └───┬───────┴───────────┴─────────┴────────┘ │ │ │ │ │ └─→ INFINI Console 告警管理平台 │ │ │ └──────────────────────────────────────────────────────────────┘  告警规则体系 #  1. 可用性告警 #  集群的基础可用性监控。
   告警规则 触发条件 建议阈值 处理建议     集群不健康 _cluster/health 返回 yellow 或 red 立即告警 检查节点是否掉线，运行 GET _cluster/allocation/explain 诊断未分配分片   节点离线 节点掉线或无响应 立即告警（超 1 分钟） 检查节点进程、网络连通性、磁盘空间   分片未分配 存在未分配的主分片或副本分片 立即告警 检查集群容量、节点约束、路由配置   集群脑裂 多个 master 节点并存 立即告警 紧急处理，可能需要恢复集群    2."
---


# 监控告警

为 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：频繁告警（告警轰炸）

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

**处理**：
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 指标：

```yaml
# 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 拒绝告警
- [ ] 慢查询监控

### 可靠性告警

- [ ] 快照失败告警
- [ ] 副本同步失败告警
- [ ] 索引损坏告警

### 安全告警

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

### 通知配置

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

---

## 相关文档

- [监控指标详解]({{< relref "./monitoring" >}})：详细的监控指标和采集方法
- [故障排查]({{< relref "./troubleshooting" >}})：告警后的诊断和处理
- [INFINI Console 文档](https://docs.infinilabs.com/console/)：告警配置详细指南
- [集群 API 参考]({{< relref "/docs/operations/cluster-admin/cluster" >}})：健康检查等相关 API

---

## 总结

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

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

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

