1. Kibana Alerting 基础概念Kibana Alerting 是 Elastic Stack 内置的告警系统它允许你基于数据变化自动触发通知。想象一下你正在监控服务器集群当某台服务器的 CPU 使用率超过 90% 时系统能自动发送邮件提醒你——这就是 Kibana Alerting 的典型应用场景。这个系统由三个核心组件构成规则Rules定义要检测的条件和触发动作连接器Connectors配置通知渠道如邮件、Slack 等警报Alerts条件满足时产生的具体告警实例我刚开始使用时最常混淆规则和警报的关系。简单来说规则是当 CPU 90% 时发邮件这样的逻辑定义而警报是实际检测到服务器A的CPU95%这个具体事件。2. 准备工作与环境配置在开始创建警报前我们需要确保环境就绪。以下是具体步骤2.1 系统要求检查确认你的 Elastic Stack 版本至少是 7.13推荐使用最新稳定版。可以通过 Kibana 的Management Stack Monitoring查看版本信息。2.2 必要的权限配置在kibana.yml中添加以下配置后重启服务xpack.encryptedSavedObjects.encryptionKey: 至少32位的随机字符串 xpack.alerting.enabled: true提示可以使用bin/kibana-encryption-keys generate命令生成加密密钥2.3 测试数据准备我们以监控服务器 CPU 为例先确保有系统指标数据流入启用 Metricbeat 的 system 模块metricbeat modules enable system确认数据已在 Kibana 中可见打开Stack Management Index Patterns确认存在metricbeat-*索引模式在 Discover 中应能看到system.cpu.user.pct等指标3. 创建第一个警报规则3.1 选择规则类型进入Stack Management Alerting点击 Create alert rule。对于 CPU 监控我们选择 Index threshold 类型索引模式metricbeat-*时间字段timestamp聚合类型Average选择system.cpu.user.pct字段3.2 条件配置设置触发条件为阈值 0.9即 CPU 使用率超过 90%时间窗口5 minutes检查过去5分钟的平均值分组监控按host.name字段分组这样每台服务器会独立判断3.3 调度设置建议根据业务需求平衡及时性和系统负载检查频率1 minute生产环境可适当延长通知间隔5 minutes避免短时间重复报警4. 配置告警动作4.1 创建邮件连接器进入Connectors标签页选择 Email 类型配置 SMTP 服务器信息Host你的邮件服务器地址Port465SSL认证信息填写有效邮箱账号4.2 绑定动作到规则在规则创建页的 Actions 部分选择刚创建的邮件连接器设置邮件内容模板主题紧急{{host.name}} CPU 使用率过高 正文 服务器 {{host.name}} 的 CPU 使用率已达到 {{context.value}} 时间{{context.date}} 建议立即检查注意变量使用双花括号语法可用字段会在编辑框右侧显示5. 高级配置技巧5.1 多条件组合通过 Add condition 可以设置复合条件例如条件1CPU 90%条件2内存使用 85%逻辑关系AND/OR5.2 告警抑制策略在频繁报警的场景下可以设置throttle间隔如30分钟配置mute all临时静音使用alert lifecycle标记已处理5.3 动态阈值通过Elasticsearch query规则类型可以实现基于历史数据的动态阈值{ query: { bool: { must: [ { range: { timestamp: { gte: now-7d/d }}}, { term: { host.name: {{host.name}} }} ] } }, aggs: { avg_cpu: { avg: { field: system.cpu.user.pct }}, std_dev: { extended_stats: { field: system.cpu.user.pct }} } }然后在条件中设置当前值 (avg_cpu 2*std_dev)作为阈值。6. 实战服务器监控完整方案6.1 监控指标清单建议监控这些关键指标指标建议阈值检测频率CPU使用率90%1分钟内存使用率85%5分钟磁盘空间90%15分钟系统负载CPU核心数5分钟6.2 分级别告警策略Warning级邮件通知Critical级邮件Slack短信恢复通知配置单独的恢复动作6.3 报警聚合对于大规模集群建议按业务分组设置规则使用 Kibana 的Alert Summarization功能配置每日摘要报告7. 常见问题排查问题1规则未触发检查Stack Management Alerting Rule details中的最后执行时间确认索引模式包含最新数据查看任务日志GET _tasks?actions*alert*问题2动作执行失败测试连接器是否正常工作检查kibana.log中的错误信息确认接收邮箱未将通知误判为垃圾邮件问题3性能影响避免设置过多高频规则考虑使用transform预处理数据监控 Kibana 节点的 CPU/内存使用情况我在实际项目中曾遇到一个典型问题某客户设置了每分钟检查100台服务器的规则导致 Kibana 节点负载过高。解决方案是将规则拆分为10个每个监控10台服务器并将检查频率调整为5分钟。
Kibana Alerting:从规则创建到实战配置的完整指南
发布时间:2026/7/16 14:56:20
1. Kibana Alerting 基础概念Kibana Alerting 是 Elastic Stack 内置的告警系统它允许你基于数据变化自动触发通知。想象一下你正在监控服务器集群当某台服务器的 CPU 使用率超过 90% 时系统能自动发送邮件提醒你——这就是 Kibana Alerting 的典型应用场景。这个系统由三个核心组件构成规则Rules定义要检测的条件和触发动作连接器Connectors配置通知渠道如邮件、Slack 等警报Alerts条件满足时产生的具体告警实例我刚开始使用时最常混淆规则和警报的关系。简单来说规则是当 CPU 90% 时发邮件这样的逻辑定义而警报是实际检测到服务器A的CPU95%这个具体事件。2. 准备工作与环境配置在开始创建警报前我们需要确保环境就绪。以下是具体步骤2.1 系统要求检查确认你的 Elastic Stack 版本至少是 7.13推荐使用最新稳定版。可以通过 Kibana 的Management Stack Monitoring查看版本信息。2.2 必要的权限配置在kibana.yml中添加以下配置后重启服务xpack.encryptedSavedObjects.encryptionKey: 至少32位的随机字符串 xpack.alerting.enabled: true提示可以使用bin/kibana-encryption-keys generate命令生成加密密钥2.3 测试数据准备我们以监控服务器 CPU 为例先确保有系统指标数据流入启用 Metricbeat 的 system 模块metricbeat modules enable system确认数据已在 Kibana 中可见打开Stack Management Index Patterns确认存在metricbeat-*索引模式在 Discover 中应能看到system.cpu.user.pct等指标3. 创建第一个警报规则3.1 选择规则类型进入Stack Management Alerting点击 Create alert rule。对于 CPU 监控我们选择 Index threshold 类型索引模式metricbeat-*时间字段timestamp聚合类型Average选择system.cpu.user.pct字段3.2 条件配置设置触发条件为阈值 0.9即 CPU 使用率超过 90%时间窗口5 minutes检查过去5分钟的平均值分组监控按host.name字段分组这样每台服务器会独立判断3.3 调度设置建议根据业务需求平衡及时性和系统负载检查频率1 minute生产环境可适当延长通知间隔5 minutes避免短时间重复报警4. 配置告警动作4.1 创建邮件连接器进入Connectors标签页选择 Email 类型配置 SMTP 服务器信息Host你的邮件服务器地址Port465SSL认证信息填写有效邮箱账号4.2 绑定动作到规则在规则创建页的 Actions 部分选择刚创建的邮件连接器设置邮件内容模板主题紧急{{host.name}} CPU 使用率过高 正文 服务器 {{host.name}} 的 CPU 使用率已达到 {{context.value}} 时间{{context.date}} 建议立即检查注意变量使用双花括号语法可用字段会在编辑框右侧显示5. 高级配置技巧5.1 多条件组合通过 Add condition 可以设置复合条件例如条件1CPU 90%条件2内存使用 85%逻辑关系AND/OR5.2 告警抑制策略在频繁报警的场景下可以设置throttle间隔如30分钟配置mute all临时静音使用alert lifecycle标记已处理5.3 动态阈值通过Elasticsearch query规则类型可以实现基于历史数据的动态阈值{ query: { bool: { must: [ { range: { timestamp: { gte: now-7d/d }}}, { term: { host.name: {{host.name}} }} ] } }, aggs: { avg_cpu: { avg: { field: system.cpu.user.pct }}, std_dev: { extended_stats: { field: system.cpu.user.pct }} } }然后在条件中设置当前值 (avg_cpu 2*std_dev)作为阈值。6. 实战服务器监控完整方案6.1 监控指标清单建议监控这些关键指标指标建议阈值检测频率CPU使用率90%1分钟内存使用率85%5分钟磁盘空间90%15分钟系统负载CPU核心数5分钟6.2 分级别告警策略Warning级邮件通知Critical级邮件Slack短信恢复通知配置单独的恢复动作6.3 报警聚合对于大规模集群建议按业务分组设置规则使用 Kibana 的Alert Summarization功能配置每日摘要报告7. 常见问题排查问题1规则未触发检查Stack Management Alerting Rule details中的最后执行时间确认索引模式包含最新数据查看任务日志GET _tasks?actions*alert*问题2动作执行失败测试连接器是否正常工作检查kibana.log中的错误信息确认接收邮箱未将通知误判为垃圾邮件问题3性能影响避免设置过多高频规则考虑使用transform预处理数据监控 Kibana 节点的 CPU/内存使用情况我在实际项目中曾遇到一个典型问题某客户设置了每分钟检查100台服务器的规则导致 Kibana 节点负载过高。解决方案是将规则拆分为10个每个监控10台服务器并将检查频率调整为5分钟。