# Stack Monitoring

URL: https://caijiao.org/elasticsearch/05.admin/07.monitoring-stack
Source: docs/elasticsearch/05.admin/07.monitoring-stack.md
Description: 本章介绍如何启用 Elasticsearch Stack Monitoring，实现对节点、索引、查询等核心指标的实时可视化监控，提升系统运维效率。

**Stack Monitoring（堆栈监控）** 是 Elastic Stack 提供的一套完整监控方案，用于实时查看 Elasticsearch、Kibana、Logstash 等组件的运行状态、资源消耗与性能趋势，是日常运维与故障排查的利器。

## 1. 支持监控的组件

Stack Monitoring 支持以下组件的监控数据采集和展示：

- Elasticsearch（节点、索引、集群状态等）
- Kibana（性能、用户访问、连接状态）
- Logstash（事件处理速率、Pipeline 状态）
- Beats（如 Filebeat、Metricbeat 等）

## 2. 启用 Stack Monitoring 的方式

### 方法一：使用 Metricbeat（推荐）

**步骤：**

1. 安装 Metricbeat：

```bash
sudo apt install metricbeat
````

2. 启用 Elasticsearch/Kibana 模块：

```bash
metricbeat modules enable elasticsearch kibana
```

3. 配置 Metricbeat 输出到 Elasticsearch，并启用：

```yaml
xpack.monitoring.enabled: true
```

4. 启动 Metricbeat：

```bash
sudo service metricbeat start
```

### 方法二：内部监控（旧版本）

直接在 `elasticsearch.yml` 设置：

```yaml
xpack.monitoring.collection.enabled: true
```

> 自 8.x 起，官方推荐改用 Metricbeat 外部采集。

## 3. 在 Kibana 中查看监控数据

进入：

> **Stack Management → Stack Monitoring**

可以查看：

* 节点 CPU、内存、磁盘使用率
* 查询延迟、段合并、GC 情况
* 索引写入速率、分片状态
* Logstash 管道运行状态
* Beats 日志采集健康状态

## 4. 典型应用场景

* 集群资源使用分析与扩容评估
* 节点异常检测与告警设置
* 监控热点索引或查询瓶颈
* 协调 Kibana、Logstash、Beats 服务状态

## 5. 常见问题排查

| 问题        | 可能原因                 | 解决方案                    |
| --------- | -------------------- | ----------------------- |
| 无法看到监控数据  | Metricbeat 未连接或未启用模块 | 检查模块状态与输出设置             |
| 数据间断或延迟   | 节点负载高、Metricbeat 不稳定 | 优化系统资源或调整周期             |
| 显示空白或权限不足 | 当前用户无监控访问权限          | 分配 `monitoring_user` 角色 |

## 6. 相关参考

* 官方文档：[Monitor the Elastic Stack](https://www.elastic.co/guide/en/observability/current/monitor-elastic.html)
* Metricbeat 模块文档：[Metricbeat modules](https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-modules.html)

通过 Stack Monitoring，你可以全面掌控 Elastic Stack 各个组件的健康状况，实现高效、可视化的运维监控。
