

# 为第三方监控工具配置附加组件
<a name="CloudWatch-NetworkFlowMonitor-agents-kubernetes-eks-third-party"></a>

您可在部署过程中配置网络流量监测仪附加组件，对外暴露 OpenMetrics 服务端。此举可实现与 Prometheus 等第三方监控工具的集成，让您能够在现有监控基础设施中收集并分析网络流指标。[了解有关 OpenMetrics 的更多信息](https://openmetrics.io/)。本功能自附加组件版本 v1.1.0 起可用。

如需启用 OpenMetrics 服务端，需将 OPEN\$1METRICS、OPEN\$1METRICS\$1ADDRESS 和 OPEN\$1METRICS\$1PORT 添加到 EKS 网络流量监测仪附加组件的配置值中。本指南将介绍如何分别通过 CLI 和控制台完成此操作。有关添加配置值的更多详情，请参阅 [Amazon EKS 插件高级配置](https://aws.amazon.com/blogs/containers/amazon-eks-add-ons-advanced-configuration/)。

## CLI 配置
<a name="CloudWatch-NetworkFlowMonitor-agents-kubernetes-eks-third-party-cli"></a>

使用 AWS Command Line Interface时，可将上述配置值作为参数传入：

```
aws eks create-addon \
  --cluster-name my-cluster-name \
  --addon-name aws-network-flow-monitoring-agent \
  --addon-version v1.1.0-eksbuild.1 \
  --configuration-values '{"env":{"OPEN_METRICS":"on","OPEN_METRICS_ADDRESS":"0.0.0.0","OPEN_METRICS_PORT":9109}}'
```

## 控制台配置
<a name="CloudWatch-NetworkFlowMonitor-agents-kubernetes-eks-third-party-console"></a>

使用 Amazon EKS 控制台时，可在可选配置设置下的配置值模块中添加上述配置值。

**示例 JSON：**

```
{
    "env": {
        "OPEN_METRICS": "on",
        "OPEN_METRICS_ADDRESS": "0.0.0.0",
        "OPEN_METRICS_PORT": 9109
    }
}
```

**示例 YAML：**

```
env:
  OPEN_METRICS: "on"
  OPEN_METRICS_ADDRESS: "0.0.0.0"
  OPEN_METRICS_PORT: 9109
```

## EKS 网络流量监测仪附加组件 OpenMetric 参数
<a name="CloudWatch-NetworkFlowMonitor-agents-kubernetes-eks-third-party-parameters"></a>
+ **OPEN\$1METRICS：**
  + 启用或关闭 OpenMetrics 功能。未配置时默认为关闭状态
  + 类型：字符串
  + 值：["on"，"off"]
+ **OPEN\$1METRICS\$1ADDRESS：**
  + OpenMetrics 端点的监听 IP 地址。未配置时默认值为 127.0.0.1
  + 类型：字符串
+ **OPEN\$1METRICS\$1PORT：**
  + OpenMetrics 端点的监听端口。未配置时默认值为 80
  + 类型：整数
  + 取值范围：[0..65535]

**重要提示：**将 OPEN\$1METRICS\$1ADDRESS 配置为 0.0.0.0 时，该指标端点将支持所有网络接口的访问。建议将值设为 127.0.0.1，仅允许本地主机访问；或部署相应的网络安全控制策略，将访问权限仅限授予已授权的监控系统。

## 问题排查
<a name="CloudWatch-NetworkFlowMonitor-agents-kubernetes-eks-third-party-troubleshooting"></a>

若在配置 OpenMetrics 服务端时遇到问题，可通过以下信息诊断并解决常见故障。

### 指标未显示
<a name="CloudWatch-NetworkFlowMonitor-agents-kubernetes-eks-third-party-troubleshooting-metrics-not-displaying"></a>

问题现象：已完成 OpenMetrics 服务端配置，但监控工具中未显示相关指标。

问题排查步骤：

1. 验证附加组件配置中是否已启用 OpenMetrics 服务端：
   + 检查配置值内的 OPEN\$1METRICS 参数是否设为“on”。具体可参阅 [describe-addon](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon.html) 命令说明。
   + 在*配置选定附加组件设置*中，确认附加组件版本为 v1.1.0 或更高版本。

1. 直接测试指标端点的连通性：
   + 通过地址 http://*pod-ip:port*/metrics 访问指标（将 pod-ip 替换为实际的容器组（pod）IP 地址，port 替换为配置的端口）。
   + 若无法访问该端点，需核查网络配置及安全组规则设置。

1. 验证监控工具配置情况。参考所用监控工具的用户指南，完成以下配置检查：
   + 确认监控工具（如 Prometheus）已配置为采集正确的指标端点。
   + 检查指标采集的时间间隔与超时时间配置是否合理。
   + 验证监控工具是否具备访问该容器组（pod）IP 地址的网络权限。

### 特定容器组（pod）指标缺失
<a name="CloudWatch-NetworkFlowMonitor-agents-kubernetes-eks-third-party-troubleshooting-metrics-missing-pods"></a>

问题现象：集群内部分容器组（pod）可采集到指标，其他容器组（pod）的指标无法获取。

问题排查步骤：

网络流量监测仪附加组件不支持启用“hostNetwork: true”的容器组（pod）。若容器组（pod）的配置清单中包含该设置，将无法采集到该容器组（pod）的相关指标。

解决办法：若条件允许，从容器组（pod）配置清单中移除“hostNetwork: true”设置。若应用程序业务必须使用主机网络，则可为这些特定容器组（pod）采用其他监控方案。

### “连接被拒绝”错误
<a name="CloudWatch-NetworkFlowMonitor-agents-kubernetes-eks-third-party-troubleshooting-connection-refused"></a>

问题现象：尝试访问指标端点时，出现“连接被拒绝”错误。

问题排查步骤：

1. 验证 OPEN\$1METRICS\$1ADDRESS 配置：
   + 若该配置设为 127.0.0.1，指标端点仅支持从容器组（pod）内部访问。
   + 若该配置设为 0.0.0.0，集群内其他容器组（pod）应可访问该指标端点。
   + 确认监控工具能够连通已配置的访问地址。

1. 检查 OPEN\$1METRICS\$1PORT 配置：
   + 验证该端口号未被其他服务占用。
   + 确认端口号处于有效取值范围（1-65535）内。
   + 核实所有相关安全组及网络策略均允许该端口的流量通行。

### 验证步骤
<a name="CloudWatch-NetworkFlowMonitor-agents-kubernetes-eks-third-party-troubleshooting-verification"></a>

确认 OpenMetrics 配置正常生效的操作步骤如下：

1. 检查附加组件状态：

   ```
   aws eks describe-addon --cluster-name your-cluster-name --addon-name aws-network-flow-monitoring-agent
   ```

1. 验证容器组（pod）运行状态：

   ```
   kubectl get pods app.kubernetes.io/name=aws-network-flow-monitoring-agent
   ```

1. 从集群内部测试指标端点连通性：

   ```
   kubectl exec add-on-pod-name -- curl localhost:9109/metrics
   ```

   将 9109 替换为配置的端口号，将容器组（pod）名称替换为附加组件对应的容器组（pod）名称。