Contrail 网络分析
概述:分析
分析是瞻博网络云原生 Contrail® 网络™ (CN2) 中的可选功能集。它与 Contrail 网络核心 CNI 组件单独打包。分析也有其自己的安装过程。该软件包由开源软件和瞻博网络开发的软件组成。
分析功能分为以下高级功能领域:
- 指标 — 从 Contrail 网络组件和基本 Kubernetes 系统中收集的统计时间序列数据。
- 流和会话记录 — 从 Contrail 网络虚拟路由器收集的网络流量信息。
- Sandesh 用户可见实体 (UVE) — 记录表示从 Contrail 网络虚拟路由器和控制节点组件收集的外部可见对象的系统范围状态。
- 日志 — 从 Kubernetes Pod 收集的日志消息。
- 内省 — 一种诊断工具,用于浏览 Contrail 网络组件的内部状态。
指标
数据模型
指标信息基于数字时间序列数据模型。一个系列的每个数据点都是定期收集的某个系统状态的示例。将记录一个取样值以及进行收集的时间戳。示例记录还可以包含一组称为标签的可选键值对。标签为指标提供维度功能,其中,相同指标名称的给定标签组合标识该指标的特定维度实例化。例如,名为 api_http_requests_total
的指标可以使用标签来提供 URL 和方法类型级别请求计数的可见性。在以下示例中,示例值 10 的指标记录将包含一组表示请求类型的标签。
api_http_requests_total{method="POST", handler="/messages"} 10
指标数据类型
尽管所有指标示例值都只是数字,但此数字数据模型中存在类型概念。指标被视为以下类型之一:
- 计数器 — 一种累积指标,表示单个单调增加的计数器,其值只能在重新启动时增加或重置为零。
- 衡量指标 — 表示可任意上升和下降的单个数字值的指标。
- 直方图 — 直方图对观察结果(通常是请求持续时间或响应大小等)进行采样,并计算在可配置的桶中。此外,直方图还提供了所有观察到的值的总和。
- 摘要 - 与直方图类似,是观察结果的摘要样本(通常是请求持续时间和响应大小等)。虽然它还提供了观测值的总计数和所有观察值的总和,但摘要会计算一个滑时间窗口内的可配置分位数。
Contrail 网络中的指标功能由 Prometheus 实施。有关指标数据模型的详细信息,请参阅 Prometheus 上的文档。
支持的指标
分析解决方案支持的指标集分类如下:
- Contrail 网络指标列表 — 从 vRouter 和控制节点组件收集的指标。
- Kubernetes 指标列表 — 从各种 Kubernetes 组件(如
apiserver
、etcd
、kubelet
等)收集的指标。 - 群集节点指标列表 — 从 Kubernetes 群集节点收集的主机级别指标。
警报
根据对所收集指标数据的分析生成警报。每个受支持的警报类型都基于包含以下信息的规则定义:
- 警报名称 — 警报类型的唯一字符串标识符。
- 条件表达式 — Prometheus 查询语言表达式,根据收集的指标值进行评估,以确定警报条件是否存在。
- 条件持续时间 — 要生成警报,问题情况必须存在的时间长度。
- 严重性 — 警报级别(严重、主要、警告、信息)。
- 摘要 — 对有问题情况的简短描述。
- 说明 — 对有问题情况的详细说明。
Contrail 网络分析解决方案会安装一组 预定义的警报规则。您还可以定义自己的自定义警报规则。这可以通过在部署分析 Helm 图表的命名空间中创建 PrometheusRule Kubernetes 资源来支持这一点。下面是自定义警报规则的示例。
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: acme-corp-rules spec: groups: - name: acme-corp.rules rules: - alert: HostUnusualNetworkThroughputOut expr: "sum by (instance) (rate(node_network_transmit_bytes_total[2m])) / 1024 / 1024 > 100" labels: severity: warning annotations: summary: "Host unusual network throughput out (instance {{ $labels.instance }})" description: "Host network interfaces are sending too much data (> 100 MB/s)\n VALUE = {{ $value }}"
生成的警报会作为记录存储在 Prometheus 中,可以在 Grafana UI 中查看。AlertManager 组件支持与外部系统集成,例如 PagerDuty、OpsGenie 或用于警报通知的电子邮件。
建筑
如图 1 所示,Prometheus 是指标架构的核心组件。Prometheus 实施以下功能:
- 收集 — 一种定期轮询机制,用于调用针对其他组件(导出方)的 API 调用,以提取一组指标的值。
- 存储 — 一种时间序列数据库,为从导出器收集的指标提供持久性。
- 查询 — 一种支持称为 PromQL(Prometheus 查询语言)的表达式语言的 API,允许从数据库中检索历史指标信息。
- 警报 - 一个框架,用于定义规则,当在收集的指标数据中观察到某些条件时生成警报。

指标架构的其他组件包括:
- Grafana — 提供 Web UI 界面的服务,允许用户在图形中可视化指标数据。
- AlertManager — 一种集成服务,可通知外部系统 Prometheus 生成的警报。
配置
指标功能不需要最终用户进行任何配置。分析的安装负责配置 Prometheus,从提供 支持指标中描述的所有指标的导出器集收集。安装过程还会自动设置一组默认警报规则。但是,管理员可通过安装后的附加配置来扩展此基本功能。例如,可以定义特定于客户的警报规则,并且可以将 AlertManager 配置为与环境中存在的任何受支持的外部系统集成。
Prometheus 和 AlertManager 的配置涉及一个名为 Prometheus Operator 的其他架构组件。如图 2 所示,配置指定为 Kubernetes 自定义资源。操作人员负责将这些资源的内容转换为 Prometheus 组件理解的本机配置,并相应地更新这些组件。然后,只要有特定的配置更改需要重新启动,就要处理组件重启的问题。

Prometheus 操作员 API 可提供运营商支持的全套资源文档。建议客户将其配置限制为与警报规则定义和外部系统集成相关的资源类型的子集。
格拉法纳
查看指标数据和警报的主要 UI 是 Grafana。Grafana 服务在分析安装中设置并自动将 Prometheus 配置为数据源。还会创建一组默认仪表板。
访问 Grafana Web UI: https://<k8sClusterIP>/grafana/login
。默认登录凭据为用户 admin
和密码 prom-operator
。