소개
이 문서에서는 통화 흐름 관련 문제를 해결하기 위해 Cisco SMF의 Grafana/Prometheus를 사용하여 사용자 정의 쿼리를 생성하는 방법에 대해 설명합니다.
약어
| SMF |
세션 관리 기능 |
| UDM |
통합 데이터 관리 |
| AMF |
액세스 및 모빌리티 기능 |
| PDU |
프로토콜 데이터 유닛 |
SMF 통화 흐름 문제를 트러블슈팅하기 위해 쿼리를 맞춤화하는 이유는 무엇입니까?
내장된 대시보드는 중요한 KPI 및 노드 상태 통계와 관련하여 뛰어난 그래프를 제공하지만, PromQL 쿼리 및 그래프의 잠재력을 최대한 활용하여 일반적인 문제 시나리오를 해결하기 위해서는 사용자 지정 쿼리가 중요한 역할을 합니다. 맞춤형 promql 쿼리 및 그래프는 더욱 다양하고 편리하여 특정 오류를 격리할 수 있습니다.
내장 대시보드의 이점:
- Grafana는 사용하기 쉬운 그래픽 인터페이스를 통해 SMF 통계를 찾아볼 수 있습니다.
- 대부분의 KPI 및 통계를 확인할 수 있는 내장된 grafana 대시보드가 있습니다.
예:
5G SMF 대시보드
- 5G PDU 생성 실패/성공률
- 4G PDN Create Failure/Success Rate


- Per Procedure Failure cause percentage(프로시저당 오류 발생 비율).
- 연결 끊기 이유 백분율
- HTTP 요청 및 해당 응답 원인 백분율

추가 트러블슈팅을 수행하려면
- 사용 가능한 대시보드 및 패널은 대부분 백분율과 KPI에 대한 것입니다. 추가 조사를 수행하는 동안 이 실패를 트리거한 특정 시나리오 및 메시지를 식별하기 위해 세부 정보를 살펴봐야 할 수 있습니다.
- 특정 정규식을 사용하는 사용자 지정 쿼리는 이러한 통계의 상관 관계를 분석하고 트리거를 격리하는 데 도움이 됩니다.
- 이러한 쿼리는 tac-debug 패키지의 메트릭 덤프를 사용하여 SMF 그래프나 오프라인 그래프나에서 그래프를 그리는 데 사용할 수 있습니다.
- 서로 다른 서비스와 관련된 메트릭의 범위를 사용할 수 있으며, 레이블 키/값 쌍을 통해 필터링하여 특정 시나리오를 트러블슈팅할 수도 있습니다.
그라파나와 프로메테우스
그라파나
"Grafana는 오픈 소스 시각화 및 분석 소프트웨어입니다. 이를 통해 저장된 위치에 관계없이 메트릭을 쿼리, 시각화, 경고 및 탐색할 수 있습니다."
Cisco SMF는 내장된 그라파나를 사용하여 애플리케이션 컨테이너의 실시간 통계 데이터를 플롯합니다.
프로메테우스
Prometheus는 메트릭 이름 및 키/값 쌍으로 식별되는 시계열 데이터, 그리고 이러한 데이터에 액세스하기 위해 PromQL이라는 유연한 쿼리 언어가 포함된 다차원 데이터 모델을 제공합니다.
Prometeus는 마이크로서비스에서 통계/카운터를 수집하는 데 사용됩니다.
메트릭 - 시계열 통계의 식별자입니다.
Labels(레이블) - 메트릭은 레이블로 구성됩니다. 기본적으로 키-값 쌍은 무엇입니까? 특정 메트릭에 대한 레이블의 조합은 시계열 데이터의 특정 인스턴스를 식별합니다
예: 
녹색으로 강조 표시된 측정 단위 "smf_service_stats"에는 노란색으로 강조 표시된 많은 레이블이 있습니다.
이러한 레이블 키/값 쌍을 사용하여 특정 일련의 데이터를 선택할 수 있습니다.
PromQL 쿼리
Prometheus는 PromQL이라는 기능적 쿼리 언어를 제공합니다. PromQl(예: Sum(), by(), count() 등을 사용하여 특정 시계열 데이터를 그래픽 또는 표 형식으로 선택할 수 있습니다.
예:
sum(smf_service_stats{status="success"}) by (procedure_type)
이 예에서는 status = "success"인 procedure_type을 기준으로 smf_service_stats 메트릭의 데이터를 선택합니다.
sum(차원에 대한 합계 계산)
by(출력을 레이블로 그룹화)
필터는 Label 키/값 쌍을 사용하여 그래프를 추가로 필터링하여 합계 내에서 사용할 수 있습니다.
예 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-subscription 메시지를 플롯합니다.

대시보드 및 패널을 만드는 방법
새 대시보드를 추가하려면 다음을 수행합니다.
1단계. 이 이미지에 표시된 대로 Create(생성) > Dashboard(대시보드)로 이동합니다.

New Panel(새 패널)을 추가하려면 Query(쿼리)를 추가합니다.
2단계. 새 패널을 추가하려면 상단의 Add Panel(패널 추가) 옵션으로 이동합니다.
3단계. 질의 추가 버튼을 선택합니다.

Query Type(쿼리 유형) - Prometheus hi-res를 선택합니다.
4단계. 쿼리 드롭다운 목록에서 Prometheus hi-res 옵션을 선택합니다.
5단계. 그런 다음 지정된 상자에 promql 질의를 추가합니다.
6단계. 패널을 저장합니다.

예: 맞춤형 쿼리 및 그래프를 사용하여 문제 해결
PDU 세션 설정 실패 - N1N2 응답 실패
1단계. KPI Dip Observation 및 PDU 세션 생성 실패 확인

Query: sum by (procedure_type, pdu_type, status, reason) (smf_service_stats{namespace="smf",procedure_type="pdu_sess_create"})
2단계. 실패 원인은 "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가 AMF에서 인증되지 않은 HTTP 상태 코드 401을 수신했음을 나타냅니다

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의 메트릭 데이터가 로컬 그래프나에 마운트된 후에도 로컬 시스템에서 실행할 수 있습니다.