-
项目
-
可观测性具有三大要素:指标、跟踪和日志。 Azure 运营商 5G 核心预览版集合了可观测性工具,以帮助识别、调查和解决问题。 此外,Azure 运营商 5G 核心警报还根据基于指标和日志发出通知。
可观测性概述
以下组件为 Azure 运营商 5G 核心提供可观测性:
可观测性开放源代码组件
Azure 运营商 5G 核心使用以下开放源代码组件实现可观测性功能。
可观测性参数
开放源代码组件
以下链接内容的部分仅适用于具有现行 Affirmed Networks 支持协议的客户。 若要访问内容,必须持有 Affirmed Networks 登录凭据。 如果需要帮助,请联系 Affirmed Networks 支持团队。
记录框架包含以下组件:
-
Fluentd
- Fluentd 是一个开放源代码日志收集器。 Fluentd 允许统一数据收集和使用,以便更好地使用和了解数据。 Fluentd 部署为 Kubernetes 群集中的 DaemonSet。 它会收集每个 K8s 节点中的日志,并将日志流式传输到 Elasticsearch。 请参阅
Fluentd 支持的日志
。
-
Elasticsearch
- Elasticsearch 是一个开放源代码的分布式实时搜索后端。 Elasticsearch 以安全的方式存储日志,并向日志分析提供 HTTP Web 界面。
-
Kibana
- Kibana 用于显示 Elasticsearch 中存储的日志。 Kibana 从 Elasticsearch 中拉取日志。
有关 Elasticsearch 和 Kibana 的详细信息,请参阅
Elastic 文档
。
-
ElastAlert
- ElastAlert 是一个简单的框架,用于针对 Elasticsearch 中数据的异常、峰值或其他感兴趣的模式发出警报。 它的工作原理是将 Elasticsearch 与规则类型和警报这两种类型的组件组合在一起。 Elasticsearch 会被定期查询,数据会传递到规则类型,从而确定找到匹配项的时点。 出现匹配时,会根据匹配触发一个或多个警报。
有关 ElastAlert 的详细信息,请参阅
ElastAlert 文档
。
记录框架具有以下功能:
-
日志收集和流式处理
- Fluentd 收集日志并将其流式传输到 Elasticsearch。
-
审核日志支持
- Fluentd 读取从 Kubernetes 主节点获取的 Kube-Apiserver 审核日志,并将这些日志写入 Elasticsearch。 fed-paas-helpers 中提供的
auditlogEnabled
标志用于启用/禁用对审核日志的读取。 如果 auditlogEnabled 标志设置为 true,则 Fluentd 会部署在主节点和工作器节点上。
-
事件日志
- Fluentd 为特定命名空间的所有事件日志创建单独的 Elasticsearch 索引。 这有助于更好地应用规则和搜索事件日志。 以
fluentd-event
前缀开头的索引。 所有其他常规调试日志都进入单独的 Elasticsearch 索引,索引前缀为
fluentd-*
字符串。
-
日志存储和分析
- Elasticsearch 以安全的方式存储日志,并提供查询语言以搜索和分析日志。
-
日志可视化
- Kibana 从 Elasticsearch 拉取日志并将日志可视化。 Kibana 允许创建仪表板来可视化日志。
-
警报机制
- ElastAlert 提供规查询 Elasticsearch 以获取日志的规则。 出现匹配时将触发警报。
Helm 自定义
Azure 运营商 5G 核心提供了一组可用于部署 EFK 记录框架的默认 Helm 值。 你可以根据需要自定义这些值以提高可伸缩性和性能。
本部分介绍 EFK 记录框架的可观测性功能(仪表板、统计信息、日志和警报)。
支持各种仪表板,包括:
-
Grafana 仪表板(请参阅
记录框架仪表板
)
-
Kibana 仪表板(请参阅
Kibana 仪表板概述
)
-
Grafana Kibana 仪表板(请参阅
Kibana Grafana 仪表板
)
-
Fluentd Operator 仪表板(请参阅
Fluentd Operator Grafana 仪表板
)
-
Elasticsearch Grafana 仪表板(请参阅
Elasticsearch 仪表板
)
有关 EFK 组件支持的统计信息的信息,请参阅:
-
Elasticsearch 统计信息
-
其他 Elasticsearch 统计信息
-
Fluentd Operator 统计信息
有关基于指标的警报的信息,请参阅:
-
Fluentd Operator 基于指标的警报
-
基于指标的弹性警报
有关弹性事件的信息,请参阅
弹性事件
。
日志可视化
框架聚合了 Azure 运营商 5G 核心安装中运行的节点和应用程序的日志。 启用日志记录后,EFK 框架使用 Fluentd 将所有应用程序和节点的事件日志聚合到 Elasticsearch 中。 EFK 框架还提供集中式 Kibana Web UI,用户可以在其中查看日志,或使用聚合数据创建丰富的可视化效果和仪表板。
指标框架由 Prometheus、Grafana 和 AlertManager 组成。
Prometheus(主组件)是一个基于指标的开放源代码监视系统。 它提供数据模型和查询语言,以分析应用程序和基础结构的执行情况。 Prometheus 直接从被检测作业中收集指标,并将所有抓取的样本存储在本地外部存储中。 Prometheus 根据定义的规则聚合和记录现有数据的新时序或生成警报。 AlertManager 通过删除重复数据、分组并将其路由到正确的接收方集成来处理客户端应用程序发送的警报。
Grafana 提供仪表板来显示收集到的数据。
下图显示了指标框架的不同组件如何相互交互。
指标框架的核心组件包括:
-
Prometheus 服务器
- Prometheus 服务器按规定的时间间隔从设定目标处收集指标、评估规则表达式、显示结果并触发警报(如果有条件为 true)。 Azure 运营商 5G 核心支持与现装的 Prometheus 服务器集成,只需少量配置。
-
客户端库
- 客户端库检测应用程序代码。
-
AlertManager
- AlertManager 处理客户端应用程序(例如 Prometheus 服务器)发送的警报。 它负责删除重复数据、分组和将警报路由到正确的接收集成(电子邮件、堆栈等)。 AlertManager 还支持静音和禁止警报。
-
Grafana
- Grafana 提供了一组现装的仪表板,其中包含大量的 3GPP 和其他 KPI,用于查询、显示和了解收集到的数据。
Grafana 审核功能提供的机制能在 Grafana 服务器 Pod 重启时还原或重新创建 Grafana 服务器中的仪表板。 审核功能还能删除 Grafana 服务器中任何过时的仪表板。
指标框架支持以下功能:
-
多维数据模型,时序数据通过指标名称和键值对表示。
-
PromQL 是一种使用多维数据的灵活查询语言。
-
不依赖于分布式存储:单个服务器节点是自治的。
-
对 HTTP 使用拉取模型进行时序收集。
-
通过服务发现或静态配置发现目标。
-
多种支持图形和仪表板的模式。
有关 Prometheus 的详细信息,请参阅
Prometheus 文档
。
有关 Grafana 的详细信息,请参阅
Grafana 开放源代码文档
。
本部分介绍指标框架的可观测性功能(仪表板、统计信息、日志和警报)。
指标框架支持以下仪表板:
-
Grafana 仪表板(请参阅
Grafana 仪表板
)
-
Prometheus Grafana 仪表板(请参阅
Prometheus Grafana 仪表板
)
关于指标框架组件支持的统计信息,请参阅:
-
Grafana 统计信息
-
Prometheus 统计信息
-
Prometheus 服务器错误统计信息
关于基于指标的 Prometheus 警报,请参阅
基于指标的 Prometheus 警报
。
事件/日志
有关指标框架事件的信息,请参阅:
-
Prometheus 事件
-
基础结构事件
网络/HTTP 故障的指标警报
如果系统中检测到 HTTP/网络故障,Prometheus 警报规则将生成警报。 网络故障会生成以下警报。
应用程序级别的全局警报:
-
IstioGlobalHTTP5xxRatePercentageHigh
- Istio 服务网格中的应用程序响应 5xx 错误,错误率百分比大于 <configured_value> 的 %
-
IstioGlobalHTTP4xxRatePercentageHigh
- 应用程序响应 4xx 错误,错误率百分比大于 <configured_value> 的 %。
IstioHTTPRequestLatencyTooHigh:请求花费的时间超过 <configured_value> 的秒数。
Pod 和容器级别警报:
-
HTTPServerError5xxPercentageTooHigh
- HTTP 服务器响应 5xx 错误,错误百分比大于 <configured_value> 的 %。
-
HTTPServerError4xxPercentageTooHigh
- HTTP 服务器响应 4xx 错误,错误百分比大于 <configured_value> 的 %。
-
HTTPServerRequestRateTooHigh
- HTTP 服务器收到的请求总数超过 <configured_value>。
-
HTTPClientRespRcvd5xxPercentageTooHigh
- HTTP 客户端响应收到 5xx 错误,收到的错误百分比大于 <configured_value> 的 %。
-
HTTPClientRespRcvd4xxPercentageTooHigh
- HTTP 客户端响应收到 4xx 错误,收到的错误百分比大于 <configured_value> 的 %。
使用 OpenTelemetry 协议进行 Jaeger 跟踪
Azure 运营商 5G 核心在 Jaeger 跟踪中使用 OpenTelemetry 协议 (OTLP)。 OTLP 取代了 fed-paas-helpers 中的 Jaeger 代理。 Azure 运营商 5G 核心部署 fed-otel_collector 联合身份验证。 OpenTelemetry (OTEL) 收集器作为 fed-otel_collector 命名空间的一部分运行:
Jaeger 跟踪遵守以下工作流:
-
具有 OTLP 客户端库的应用程序将跟踪发送到 OTLP GRPC 协议上的 OTEL 收集器。 OTEL 收集器有三个组件:接收器、处理器和导出器。
-
OTA 收集器中的 OTLP GRPC 接收器接收跟踪并将其发送到 Jaeger 导出器。
-
Jaeger 导出器将跟踪发送到作为 fed-jaeger 的一部分运行的 Jaeger 收集器。
-
Jaeger 收集器将跟踪存储在弹性后端存储 (fed-elastic) 中。
-
什么是 Azure 运营商 5G 核心预览版?
-
快速入门:在 Azure Kubernetes 服务 (AKS) 上部署 Azure 运营商 5G 核心的可观测性(预览版)
[def]: