Skip to content

Commit

Permalink
Merged monitor doc (#11)
Browse files Browse the repository at this point in the history
* merged monitor doc

* update monitor doc

* update

* update
  • Loading branch information
Emma-Song authored Jul 2, 2020
1 parent e79069c commit e1e7355
Showing 1 changed file with 121 additions and 58 deletions.
179 changes: 121 additions & 58 deletions site/zh-CN/guides/monitor.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,27 +14,24 @@ sidebar_label: Monitoring and Alerting

Milvus 使用 Prometheus 作为监控和性能指标存储方案,使用 Grafana 作为可视化组建进行数据展示。

- Prometheus
#### Prometheus

Prometheus 是一个拥有多维度数据模型、灵活的查询语句的监控报警系统。
Prometheus 是一个拥有多维度数据模型和灵活查询语句的监控报警系统。目前,Milvus 使用了以下 Prometheus 组件:

Prometheus 提供多个组件供用户使用。目前,Milvus 使用了以下组件:
- Prometheus Server:收集和存储时序数据。
- Client 代码库:定制监控指标。
- Alertmanager:实现报警机制。
- Pushgateway:推送指标数据,确保生命周期短且难以被及时提取的监控指标能够被 Prometheus 获取。

- Prometheus Server:用于收集和存储时间序列数据。
- Client 代码库:用于定制程序中需要的 metric。
- Alertmanager:用于实现报警机制。
- Pushgateway:使生命周期短、批量的 metric 能够被 Prometheus 提取。这些 metric 本身是难以及时提取的。
Milvus 会收集监控数据并将其推送到 Pushgateway。同时,Prometheus 服务器会定期从 Pushgateway 中拉取数据并将其保存到它的时序数据库。具体工作流程如下:

其工作流程如下图所示:
![proxy](https://milvus.io/static/3d68d75d595d1af1c1f3acd780cb7044/8c557/monitoring.png)

![1566787785125](../../../assets/monitoring/monitoring.png)
#### Grafana

- Grafana

Grafana 是一个开源的时序数据分析及可视化平台。Milvus 使用 Grafana 来展示各项性能指标:

![prometheus.png](../../../assets/prometheus.png)
Grafana 是一个开源的时序数据分析及可视化平台。Milvus 使用 Grafana 来展示各项性能指标:

![prometheus.png](../../../assets/prometheus.png)

### 需要报警的事件

Expand Down Expand Up @@ -63,100 +60,166 @@ Milvus 会生成详细的关于系统运行状态的时序 metrics。该页面

### 安装 Prometheus

1. 下载 [Prometheus tarball](https://prometheus.io/download/)
1. 下载 [Prometheus 二进制文件的压缩包](https://prometheus.io/download/)

2. 确保 Prometheus 已经成功安装:

```shell
$ prometheus --version
```

> 建议:你可以提取 Prometheus binary 并添加到 `PATH` ,以便在任意 Shell 上都能快速启动 Prometheus。
<div class="alert info">
你可以提取 Prometheus binary 并添加到 <code>PATH</code> ,以便在任意 Shell 上都能快速启动 Prometheus。
</div>

### 配置和启动 Prometheus

1. 启动 Pushgateway:

### 设置 Prometheus
```shell
./pushgateway
```

1. 下载 Milvus [Prometheus 配置文件](https://github.com/milvus-io/docs/blob/v{{var.release_version}}/assets/monitoring/prometheus.yml) 。
<div class="alert note">
必须在启动 Milvus Server 之前启动 Pushgateway 进程。
</div>

2. 在 **server_config.yaml** 中开启 Prometheus 监控,并设置 Pushgateway 的地址和端口号。

```yaml
metric:
enable: true # 将值设为 true 以开启 Prometheus 监控。
address: 127.0.0.1 # 设置 Pushgateway 的 IP 地址。
port: 9091 # 设置 Pushgateway 的端口号。
```

3. 下载 Milvus [Prometheus 配置文件](https://github.com/milvus-io/docs/blob/v{{var.release_version}}/assets/monitoring/prometheus.yml):

```shell
$ wget https://raw.githubusercontent.com/milvus-io/docs/v{{var.release_version}}/assets/monitoring/prometheus.yml \ -O prometheus.yml
```

2. 根据你的需求编辑配置文件。参考 [https://prometheus.io/docs/prometheus/latest/configuration/configuration/](https://prometheus.io/docs/prometheus/latest/configuration/configuration/) 了解更多关于 Prometheus 配置文件的信息。

> 注意:如果你使用了分布式集群,则需要在 `job_name = 'milvus_server'` 下的 `targets` 字段,为集群中的每个节点分布添加相应的 `localhost: <http-port>`

3. 下载 Milvus [报警规则文件](https://github.com/milvus-io/docs/blob/v{{var.release_version}}/assets/monitoring/alert_rules.yml) 到 Prometheus 根目录。
4. 下载 Milvus [报警规则文件](https://github.com/milvus-io/docs/blob/v{{var.release_version}}/assets/monitoring/alert_rules.yml) 到 Prometheus 根目录:

```shell
wget -P rules https://raw.githubusercontent.com/milvus-io/docs/v{{var.release_version}}/assets/monitoring/alert_rules.yml
```

### 启动 Prometheus
5. 根据你的需求编辑 Prometheus 配置文件:

1. 启动 Prometheus 服务, `--config.file` 指向配置文件:
- global:配置 scrape_interval 和 evaluation_interval 等参数。

```shell
$ ./prometheus --config.file=prometheus.yml
```yaml
global:
scrape_interval: 2s # 设置抓取时间间隔为2s.
evaluation_interval: 2s # 设置评估时间间隔为2s.
```

2. 将浏览器指向 `http://<hostname of machine running prometheus>:9090` ,进入 Prometheus 用户交互页面。
- alerting:设置 Alertmanager 的地址和端口。

```yaml
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
```

### 安装并启动 Pushgateway
- rule_files:设置报警规则文件。

参考 [https://github.com/prometheus/pushgateway](https://github.com/prometheus/pushgateway) 了解如何下载和启动 Pushgateway。
```yaml
rule_files:
- "alert_rules.yml"
```

### 使用 Grafana 实现 metrics 可视化展示
- scrape_configs:设置抓取数据的 `job_name` 以及 `targets` 等信息。

1. 使用以下命令安装并运行 Grafana:
```yaml
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
```
$ docker run -i -p 3000:3000 grafana/grafana
- job_name: 'pushgateway'
honor_labels: true
static_configs:
- targets: ['localhost:9091']
```

2. 将浏览器指向 `http://<hostname of machine running grafana>:3000` ,使用默认的用户名/密码,`admin/admin`,登录 Grafana 用户交互页面。你也可以在此创建新的 Grafana 账号。
<div class="alert info">
关于 Prometheus 的高级配置和功能的详细信息请见 <a href="https://prometheus.io/docs/prometheus/latest/configuration/configuration/">配置 Prometheus</a>
</div>

6. 启动 Prometheus:

3. [添加 Prometheus 作为 data source](https://grafana.com/docs/grafana/latest/features/datasources/prometheus/).
```shell
./prometheus --config.file=prometheus.yml
```

4. 对 data source 做如下设置:
### 在 Kubernetes 中配置 Prometheus

| Field | Definition |
| :------ | :----------------------------------------------------- |
| Name | Prometheus |
| Default | True |
| URL | `http://<hostname of machine running prometheus>:9090` |
| Access | Browser |
首先启动 Pushgateway 和 Prometheus,然后将 Kubernetes 集群中需要监控的节点配置文件 **server_config.yaml** 的监控选项打开,并设置 Pushgateway 的 IP 地址和端口号。

5. 下载 [Grafana 配置文件](https://github.com/milvus-io/docs/blob/v{{var.release_version}}/assets/monitoring/dashboard.json) :
```yaml
metric:
enable: true # 将值设为 true 以开启 Prometheus 监控。
address: 127.0.0.1 # 设置 Pushgateway 的 IP 地址。
port: 9091 # 设置 Pushgateway 的端口号。
```

```shell
$ wget https://raw.githubusercontent.com/milvus-io/docs/v{{var.release_version}}/assets/monitoring/dashboard.json
```
### 使用 Grafana 实现监控指标可视化展示

Grafana 是一个开源的时序数据分析及可视化平台。Milvus 使用 Grafana 来展示各项监控指标。

1. 运行 Grafana:

```shell
docker run -i -p 3000:3000 grafana/grafana
```

2. 在浏览器中打开 `http://<提供 Grafana 服务的主机 IP>:3000` 网址,并登录 Grafana 用户交互页面。

6. [将配置文件导入 Grafana](http://docs.grafana.org/reference/export_import/#importing-a-dashboard).
<div class="alert info">
Grafana 的默认用户名和密码都是“admin”。你也可以在此创建新的 Grafana 账号。
</div>

### 使用 Alertmanager 发送通知
3. [在 Prometheus 中添加数据源](https://grafana.com/docs/grafana/latest/features/datasources/add-a-data-source/)。

在 Prometheus 配置,你已经下载了 Milvus 的报警规则文件。现在,你只需要下载、配置并启动 Alertmanager。
4. 在 Grafana 用户交互页面中,点击 **Configuration > Data Sources > Prometheus**,然后设置以下数据源属性:

1. 下载 [最新 Alertmanager tarball](https://prometheus.io/download/#alertmanager) 。
| 名称 ||
| :------ | :------------------------------------------ |
| Name | Prometheus |
| Default | True |
| URL | http://<提供 Prometheus 服务的主机 IP>:9090 |
| Access | Browser |

5. 下载 [Grafana 配置文件](https://github.com/milvus-io/docs/blob/v0.9.1/assets/monitoring/dashboard.json)。

6. [将配置文件导入 Grafana](http://docs.grafana.org/reference/export_import/#importing-a-dashboard)。

### 配置 Alertmanager

1. 下载 [Alertmanager 二进制文件的压缩包](https://prometheus.io/download/#alertmanager)。

2. 确保 Alertmanager 已经成功安装:

```shell
$ alertmanager --version
```

> 建议:你可以提取 Alertmanager binary 并添加到 `PATH` ,以便在任意 Shell 上都能快速启动 Alertmanager。
<div class="alert info">
你可以提取 Alertmanager binary 并添加到 <code>PATH</code> ,以便在任意 Shell 上都能快速启动 Alertmanager。
</div>

3. 创建 [Alertmanager 配置文件](https://prometheus.io/docs/alerting/configuration/) 来指定接受报警通知的邮箱/微信账户,并将配置文件添加到 Alertmanager 根目录下。
3. 根据 [配置 Alertmanager](https://prometheus.io/docs/alerting/configuration/) 创建配置文件 **alertmanager.yml**,指定接受报警通知的邮箱或微信账号,并将配置文件添加到 Alertmanager 根目录下。

4. 启动 Alertmanager 服务, `--config.file` 指向配置文件
4. 启动 Alertmanager 服务并指定配置文件

```shell
alertmanager --config.file=simple.yml
```
```shell
./alertmanager --config.file=alertmanager.yml
```

5. 将浏览器指向 `http://<hostname of machine running alertmanager>:9093` ,进入 Alertmanager 用户交互页面。你可以在此定义 [muting alerts](https://prometheus.io/docs/alerting/alertmanager/#silences) 的条件
5. 通过浏览器登录 `http://<提供 Alertmanager 服务的主机>:9093`,进入 Alertmanager 用户交互页面。你可以在此定义[报警的条件](https://prometheus.io/docs/alerting/alertmanager/#silences)。

## 相关阅读

Expand Down

0 comments on commit e1e7355

Please sign in to comment.