简介
本文档介绍如何在思科SMF中使用Grafana/Prometheus创建自定义查询,以排除呼叫流相关问题。
缩写
SMF |
会话管理功能 |
UDM |
统一数据管理 |
AMF |
访问和移动功能 |
PDU |
协议数据单元 |
为什么自定义查询以排除SMF呼叫流问题?
而内置的控制面板提供有关重要KPI和节点运行状况统计信息的图表,为了充分利用PromQL查询和grafana的潜力对常规问题场景进行故障排除,自定义查询发挥了重要作用。自定义promql查询和图形为隔离特定故障增加了更多功能和便利性。
内置控制面板的优势:
- Grafana提供易于使用的图形界面来浏览SMF统计信息。
- 有内置的grafana控制面板可用于检查大多数KPI和统计信息。
示例:
5G SMF控制面板
- 5G PDU创建失败/成功率
- 4G PDN创建失败/成功率
- 每个过程失败原因百分比。
- 断开原因百分比。
- HTTP请求和相应的响应原因百分比。
要进一步排除故障,请执行以下操作:
- 可用的控制面板和面板主要涉及百分比和KPI。在进一步调查时,可能需要查看细粒度详细信息以确定触发此故障的特定场景和消息。
- 使用特定正则表达式的自定义查询将有助于关联这些统计信息并隔离触发器。
- 这些查询可用于在SMF grafana中或在脱机grafana中绘制图形,其中包含tac-debug包中的度量转储。
- 可以使用与不同服务关联的度量范围,也可以通过标签密钥/值对进行过滤以排除特定场景的故障。
格拉法纳和普罗米修斯
格拉法纳
“Grafana是开源可视化和分析软件。它允许您查询、可视化、提示和探索指标,无论指标存储在何处。”
思科SMF使用内置的grafana绘制来自应用容器的实时统计数据。
普罗米修斯
Prometheus提供了多维数据模型,其中包含通过度量名称和密钥/值对识别的时间序列数据,以及名为PromQL的灵活查询语言来访问这些数据。
Prometheus用于从微服务收集统计信息/计数器。
度量 — 它们是时间系列统计信息的标识符。
标签 — 指标由标签组成。下列哪些是键值对?特定度量的标签组合标识时间序列数据的特定实例
示例:
以绿色突出显示的度量“smf_service_stats”有许多标签,以黄色突出显示。
使用这些标签密钥/值对,可以选择特定系列的数据。
PromQL查询
Prometheus提供一种名为PromQL的功能性查询语言。PromQl中提供内置函数(例如Sum()、by()、count()等允许我们以图形或表格格式选择特定时间系列数据。
示例:
sum(smf_service_stats{status="success"}) by (procedure_type)
此示例按过程类型从smf_service_stats度量中选择数据,其中状态= "success"
sum(计算维上的总和)
by(按标签对输出分组)
可使用标签密钥/值对在和内使用过滤器以进一步过滤图形。
示例 1:
sum(smf_disconnect_stats{namespace="smf-data",reason=~"disc_eutra.*"})by(reason, rat_type)
此处选择了命名空间smf-data,作为原因,应考虑以disk_eutra开头的所有断开原因(即4G断开原因)。
示例 2:
sum(smf_restep_http_msg{namespace="smf-data", api_name=~"sdm_.*"}) by(api_name,message_direction,response_status,response_cause)
此查询应将SMF - UDM sdm订用消息与响应原因一起绘制。
如何创建控制面板和面板?
以添加新控制面板。
步骤1.导航至“创建”>“仪表板”,如下图所示。
要添加新面板 — 添加查询。
步骤2.导航到顶部的“添加面板”选项以添加新面板。
步骤3.选择“添加查询”按钮。
选择查询类型 — Prometheus hi-res。
步骤4.在“查询”下拉列表中选择Prometheus hi-res选项。
步骤5.然后在给定框中添加promql查询。
步骤6.保存面板。
示例:使用自定义查询和图形进行故障排除
PDU会话建立失败 — N1N2响应失败
步骤1. KPI Dip Observation(KPI倾斜观察),并确定PDU会话创建失败。
Query: sum by (procedure_type, pdu_type, status, reason) (smf_service_stats{namespace="smf",procedure_type="pdu_sess_create"})
第二步: 故障原因为“n1n2_transfer_failure_rsp_code”。让我们看看断开原因:
Query: sum(smf_disconnect_stats{namespace=”smf"}) by (reason)
步骤3.断开连接原因“disk_pdusetup_n1n2_transfer_rsp_failure”表示来自AMF对等体的负响应。由于SMF-AMF交互是通过基于HTTP服务的接口进行的,因此需要进一步查看HTTP统计信息(度量:smf_restep_http_msg
HTTP统计信息表明,在故障期间,SMF收到HTTP状态代码401 — 未经AMF授权
Query: sum(smf_restep_http_msg{namespace="smf"}) by(api_name,message_direction,response_status)
排除故障的重要指标:
smf_disconnect_stats
smf_proto_pfcp_msg_total
smf_service_stats
smf_restep_http_msg
smf_n1_message_stats
smf_proto_pfcp_msg_total
nodemgr_msg_stats
nodemgr_gtpc_msg_stats
chf_message_stats
policy_msg_processing_status
procedure_protocol_total
procedure_service_total
有关SMF度量的详细信息:
如这些示例所示,您可以根据特定故障场景的需要绘制自己的自定义图,以关联不同的消息并隔离故障。此类查询可在本地系统中运行,也可在Tac_debug_pkg的度量数据装载到本地grafana上后运行。