Guide des métriques et de la surveillance Prometheus
Aperçu
OmniTAS exporte des métriques opérationnelles complètes au format Prometheus pour la surveillance, l'alerte et l'observabilité. Ce guide couvre toutes les métriques disponibles, leur utilisation, le dépannage et les meilleures pratiques de surveillance.
Point de terminaison des métriques
Toutes les métriques sont exposées à : http://<tas-ip>:8080/metrics
Référence complète des métriques
Métriques Diameter
diameter_response_duration_milliseconds
Type : Histogramme
Étiquettes : application (ro, sh), command (ccr, cca, etc), result (success, error, timeout)
Seaux : 10, 50, 100, 250, 500, 1000, 2500, 5000, 10000 ms
Description : Durée des requêtes Diameter en millisecondes
Utilisation :
# Temps de réponse moyen de Diameter
rate(diameter_response_duration_milliseconds_sum[5m]) /
rate(diameter_response_duration_milliseconds_count[5m])
# Latence P95 de Diameter
histogram_quantile(0.95, rate(diameter_response_duration_milliseconds_bucket[5m]))
Alerte lorsque :
- P95 > 1000ms - Réponses Diameter lentes
diameter_requests_total
Type : Compteur
Étiquettes : application (ro, sh), command (ccr, udr, etc)
Description : Nombre total de requêtes Diameter envoyées
Utilisation :
# Taux de requêtes
rate(diameter_requests_total[5m])
diameter_responses_total
Type : Compteur
Étiquettes : application (ro, sh), command (ccr, udr, etc), result_code (2001, 3002, 5xxx, etc)
Description : Nombre total de réponses Diameter reçues
Utilisation :
# Taux de succès
rate(diameter_responses_total{result_code="2001"}[5m]) /
rate(diameter_responses_total[5m]) * 100
diameter_peer_state
Type : Jauge
Étiquettes : peer_host, peer_realm, application (ro, sh)
Description : État des pairs Diameter (1=up, 0=down)
Intervalle de mise à jour : Toutes les 10 secondes
Utilisation :
# Vérifier les pairs hors ligne
diameter_peer_state == 0
Alerte lorsque :
- Un pair est hors ligne pendant > 1 minute
Métriques de génération de plan de numérotation
1. Métriques de requêtes HTTP
http_dialplan_request_duration_milliseconds
Type : Histogramme
Étiquettes : call_type (mt, mo, emergency, unknown)
Description : Durée de la requête HTTP de bout en bout depuis la réception de la requête HTTP du plan de numérotation jusqu'à l'envoi de la réponse. Cela inclut tout le traitement : analyse des paramètres, autorisation, recherches Diameter (Sh/Ro), recherches HLR (SS7 MAP) et génération XML.
Utilisation :
# Temps moyen de requête HTTP de bout en bout
rate(http_dialplan_request_duration_milliseconds_sum[5m]) /
rate(http_dialplan_request_duration_milliseconds_count[5m])
# P95 par type d'appel
histogram_quantile(0.95,
rate(http_dialplan_request_duration_milliseconds_bucket[5m])
) by (call_type)
# Comparer les performances MT vs MO
histogram_quantile(0.95,
rate(http_dialplan_request_duration_milliseconds_bucket{call_type="mt"}[5m])
)
vs
histogram_quantile(0.95,
rate(http_dialplan_request_duration_milliseconds_bucket{call_type="mo"}[5m])
)
Alerte lorsque :
- P95 > 2000ms - Temps de réponse HTTP lents
- P95 > 3000ms - Problème de performance critique
- P99 > 5000ms - Dégradation sévère de la performance
- Toute requête affichant
call_type="unknown"- Échec de la détection du type d'appel
Aperçus :
- C'est la métrique la plus importante pour comprendre la latence côté utilisateur
- Valeurs typiques : P50 : 100-500ms, P95 : 500-2000ms, P99 : 1000-3000ms
- Inclut tous les temps des composants (Sh + HLR + OCS + traitement)
- Si cela est lent, approfondir les métriques des composants (subscriber_data, hlr_data, ocs_authorization)
- Plage attendue : 100ms (appels locaux rapides) à 5000ms (lents avec réessais/délai d'attente)
Notes importantes :
- Remplace l'ancienne métrique
dialplan_generation_duration_millisecondsqui mesurait uniquement la génération XML - Reflète avec précision ce que FreeSWITCH/SBC expérimente
- Utilisez ceci pour la surveillance SLA et la planification de capacité
2. Métriques de données d'abonnés
subscriber_data_duration_milliseconds
Type : Histogramme
Étiquettes : result (success, error)
Description : Temps nécessaire pour récupérer les données de l'abonné depuis l'interface Sh (HSS)
Utilisation :
# Temps moyen de recherche Sh
rate(subscriber_data_duration_milliseconds_sum[5m]) /
rate(subscriber_data_duration_milliseconds_count[5m])
# Temps de recherche Sh au 95e percentile
histogram_quantile(0.95,
rate(subscriber_data_duration_milliseconds_bucket[5m])
)
Alerte lorsque :
- P95 > 100ms - Réponses HSS lentes
- P95 > 500ms - Problème de performance critique HSS
subscriber_data_lookups_total
Type : Compteur
Étiquettes : result (success, error)
Description : Nombre total de recherches de données d'abonnés
Utilisation :
# Taux de recherche Sh
rate(subscriber_data_lookups_total[5m])
# Taux d'erreur Sh
rate(subscriber_data_lookups_total{result="error"}[5m])
# Pourcentage de taux de succès Sh
(rate(subscriber_data_lookups_total{result="success"}[5m]) /
rate(subscriber_data_lookups_total[5m])) * 100
Alerte lorsque :
- Taux d'erreur > 5% - Problèmes de connectivité HSS
- Taux d'erreur > 20% - Échec critique HSS
2. Métriques de données HLR
hlr_data_duration_milliseconds
Type : Histogramme
Étiquettes : result (success, error)
Description : Temps nécessaire pour récupérer les données HLR via SS7 MAP
Utilisation :
# Temps moyen de recherche HLR
rate(hlr_data_duration_milliseconds_sum[5m]) /
rate(hlr_data_duration_milliseconds_count[5m])
# Temps de recherche HLR au 95e percentile
histogram_quantile(0.95,
rate(hlr_data_duration_milliseconds_bucket[5m])
)
Alerte lorsque :
- P95 > 500ms - Réponses SS7 MAP lentes
- P95 > 2000ms - Problème critique SS7 MAP
hlr_lookups_total
Type : Compteur
Étiquettes : result_type (msrn, forwarding, error, unknown)
Description : Nombre total de recherches HLR par type de résultat
Utilisation :
# Taux de recherche HLR par type
rate(hlr_lookups_total[5m])
# Taux de découverte MSRN (abonnés en itinérance)
rate(hlr_lookups_total{result_type="msrn"}[5m])
# Taux de découverte de renvoi d'appel
rate(hlr_lookups_total{result_type="forwarding"}[5m])
# Taux d'erreur HLR
rate(hlr_lookups_total{result_type="error"}[5m])
Alerte lorsque :
- Taux d'erreur > 10% - Problèmes SS7 MAP
- Chute soudaine du taux MSRN - Problème d'itinérance possible
Aperçus :
- Un taux MSRN élevé indique de nombreux abonnés en itinérance
- Un taux de renvoi élevé indique de nombreux appels renvoyés
- Comparer au volume d'appels pour le pourcentage d'itinérance
3. Métriques d'autorisation OCS
ocs_authorization_duration_milliseconds
Type : Histogramme
Étiquettes : result (success, error)
Description : Temps nécessaire pour l'autorisation OCS
Utilisation :
# Temps moyen d'authentification OCS
rate(ocs_authorization_duration_milliseconds_sum[5m]) /
rate(ocs_authorization_duration_milliseconds_count[5m])
# Temps d'authentification OCS au 95e percentile
histogram_quantile(0.95,
rate(ocs_authorization_duration_milliseconds_bucket[5m])
)
Alerte lorsque :
- P95 > 1000ms - Réponses OCS lentes
- P95 > 5000ms - Problème de performance critique OCS
ocs_authorization_attempts_total
Type : Compteur
Étiquettes : result (success, error), skipped (yes, no)
Description : Nombre total de tentatives d'autorisation OCS
Utilisation :
# Taux d'autorisation OCS
rate(ocs_authorization_attempts_total{skipped="no"}[5m])
# Taux d'erreur OCS
rate(ocs_authorization_attempts_total{result="error",skipped="no"}[5m])
# Taux de saut OCS (urgence, messagerie vocale, etc.)
rate(ocs_authorization_attempts_total{skipped="yes"}[5m])
# Pourcentage de taux de succès OCS
(rate(ocs_authorization_attempts_total{result="success",skipped="no"}[5m]) /
rate(ocs_authorization_attempts_total{skipped="no"}[5m])) * 100
Alerte lorsque :
- Taux d'erreur > 5% - Problèmes de connectivité OCS
- Taux de succès < 95% - OCS refusant trop d'appels
Aperçus :
- Un taux de saut élevé indique de nombreux appels d'urgence/gratuits
- Les pics de taux d'erreur indiquent des pannes OCS
- Comparer le taux de succès aux attentes commerciales
4. Métriques de traitement des appels
call_param_errors_total
Type : Compteur
Étiquettes : error_type (parse_failed, missing_required_params)
Description : Erreurs de parsing des paramètres d'appel
Utilisation :
# Taux d'erreurs de paramètres
rate(call_param_errors_total[5m])
# Erreurs par type
rate(call_param_errors_total[5m]) by (error_type)
Alerte lorsque :
- Toute erreur > 0 - Indique des requêtes de paramètres d'appel mal formées
- Erreurs > 1% du volume d'appels - Problème critique
authorization_decisions_total
Type : Compteur
Étiquettes : disposition (mt, mo, emergency, unauthorized), result (success, error)
Description : Décisions d'autorisation par type d'appel
Utilisation :
# Taux d'autorisation par disposition
rate(authorization_decisions_total[5m]) by (disposition)
# Taux d'appels MT
rate(authorization_decisions_total{disposition="mt"}[5m])
# Taux d'appels MO
rate(authorization_decisions_total{disposition="mo"}[5m])
# Taux d'appels d'urgence
rate(authorization_decisions_total{disposition="emergency"}[5m])
# Taux d'appels non autorisés
rate(authorization_decisions_total{disposition="unauthorized"}[5m])
Alerte lorsque :
- Taux non autorisé > 1% - Possible attaque ou mauvaise configuration
- Pic soudain d'appels d'urgence - Événement d'urgence possible
- Changement inattendu dans le ratio MT/MO - Problème possible
Aperçus :
- Le ratio MT/MO indique les modèles de trafic
- Le taux d'appels d'urgence indique l'utilisation du service
- Le taux non autorisé indique la posture de sécurité
freeswitch_variable_set_duration_milliseconds
Type : Histogramme
Étiquettes : batch_size (1, 5, 10, 25, 50, 100)
Description : Temps pour définir les variables de plan de numérotation
Utilisation :
# Temps moyen de définition des variables
rate(freeswitch_variable_set_duration_milliseconds_sum[5m]) /
rate(freeswitch_variable_set_duration_milliseconds_count[5m])
# Temps de définition des variables par taille de lot
histogram_quantile(0.95,
rate(freeswitch_variable_set_duration_milliseconds_bucket[5m])
) by (batch_size)
Alerte lorsque :
- P95 > 100ms - Performance de définition des variables lente
- Tendance croissante - Problème de performance système possible
5. Métriques de traitement des modules
dialplan_module_duration_milliseconds
Type : Histogramme
Étiquettes : module (MT, MO, Urgence, CallParams, etc.), call_type
Description : Temps de traitement pour chaque module de plan de numérotation
Utilisation :
# Temps de traitement par module
histogram_quantile(0.95,
rate(dialplan_module_duration_milliseconds_bucket[5m])
) by (module)
# Temps de traitement du module MT
histogram_quantile(0.95,
rate(dialplan_module_duration_milliseconds_bucket{module="MT"}[5m])
)
Alerte lorsque :
- Tout module P95 > 500ms - Problème de performance
- Tendance croissante dans n'importe quel module - Fuite ou problème potentiel
Aperçus :
- Identifier quel module est le plus lent
- Optimiser d'abord les modules les plus lents
- Comparer les temps des modules selon les types d'appels
6. Métriques de volume d'appels
call_attempts_total
Type : Compteur
Étiquettes : call_type (mt, mo, emergency, unauthorized), result (success, rejected)
Description : Nombre total de tentatives d'appels
Utilisation :
# Taux de tentatives d'appels
rate(call_attempts_total[5m])
# Taux de succès par type d'appel
(rate(call_attempts_total{result="success"}[5m]) /
rate(call_attempts_total[5m])) * 100 by (call_type)
# Taux d'appels rejetés
rate(call_attempts_total{result="rejected"}[5m])
Alerte lorsque :
- Taux rejeté > 5% - Problème possible
- Chute soudaine du volume d'appels - Panne de service
- Pic soudain du volume d'appels - Possible attaque
active_calls
Type : Jauge
Étiquettes : call_type (mt, mo, emergency)
Description : Appels actuellement actifs
Utilisation :
# Appels actifs actuels
active_calls
# Appels actifs par type
active_calls by (call_type)
# Pic d'appels actifs (dernière heure)
max_over_time(active_calls[1h])
Alerte lorsque :
- Appels actifs > capacité - Surcharge
- Appels actifs = 0 pendant une période prolongée - Service hors ligne
7. Métriques de simulation
call_simulations_total
Type : Compteur
Étiquettes : call_type (mt, mo, emergency, unauthorized), source (web, api)
Description : Simulations d'appels exécutées
Utilisation :
# Taux de simulation
rate(call_simulations_total[5m])
# Simulations par type
rate(call_simulations_total[5m]) by (call_type)
Aperçus :
- Suivre l'utilisation des outils de diagnostic
- Identifier les utilisateurs lourds
- Corréler avec l'activité de dépannage
8. Métriques SS7 MAP
ss7_map_http_duration_milliseconds
Type : Histogramme
Étiquettes : operation (sri, prn), result (success, error, timeout)
Seaux : 10, 50, 100, 250, 500, 1000, 2500, 5000, 10000 ms
Description : Durée des requêtes HTTP SS7 MAP en millisecondes
Utilisation :
# Taux d'erreur SS7 MAP
rate(ss7_map_operations_total{result="error"}[5m]) /
rate(ss7_map_operations_total[5m]) * 100
Alerte lorsque :
- P95 > 500ms - Réponses SS7 MAP lentes
- Taux d'erreur > 50% - Problème critique SS7 MAP
ss7_map_operations_total
Type : Compteur
Étiquettes : operation (sri, prn), result (success, error)
Description : Nombre total d'opérations SS7 MAP
9. Métriques de facturation en ligne
online_charging_events_total
Type : Compteur
Étiquettes : event_type (authorize, answer, reauth, hangup), result (success, nocredit, error, timeout)
Description : Nombre total d'événements de facturation en ligne
Utilisation :
# Échecs de crédit OCS
rate(online_charging_events_total{result="nocredit"}[5m])
Alerte lorsque :
- Taux élevé d'échecs de crédit
10. Métriques d'état du système
tracked_registrations
Type : Jauge
Description : Nombre d'enregistrements SIP actuellement actifs (à partir de la base de données d'enregistrement Sofia de FreeSWITCH)
Intervalle de mise à jour : Toutes les 10 secondes
Notes :
- Se décrémente automatiquement lorsque les enregistrements expirent (FreeSWITCH gère l'expiration)
tracked_call_sessions
Type : Jauge
Description : Nombre de sessions d'appels actuellement suivies dans ETS
Intervalle de mise à jour : Toutes les 10 secondes
11. Métriques de requêtes HTTP
http_requests_total
Type : Compteur
Étiquettes : endpoint (dialplan, call_event, directory, voicemail, sms_ccr, metrics), status_code (200, 400, 500, etc)
Description : Nombre total de requêtes HTTP par point de terminaison
Utilisation :
# Taux d'erreur HTTP
rate(http_requests_total{status_code=~"5.."}[5m]) /
rate(http_requests_total[5m]) * 100
Alerte lorsque :
- Taux d'erreur HTTP 5xx > 10%
12. Métriques de rejet d'appels
call_rejections_total
Type : Compteur
Étiquettes : call_type (mo, mt, emergency, unknown), reason (nocredit, unauthorized, parse_failed, missing_params, hlr_error, etc)
Description : Nombre total de rejets d'appels par raison
Utilisation :
# Taux de rejet d'appels par raison
sum by (reason) (rate(call_rejections_total[5m]))
Alerte lorsque :
- Taux de rejet > 1/sec - Enquête nécessaire
13. Métriques de connexion de socket d'événements
event_socket_connected
Type : Jauge
Étiquettes : connection_type (main, log_listener)
Description : État de la connexion Socket d'événements (1=connecté, 0=déconnecté)
Intervalle de mise à jour : Temps réel sur les changements d'état de connexion
Utilisation :
# Statut de connexion Socket d'événements
event_socket_connected
Alerte lorsque :
- Connexion hors ligne pendant > 30 secondes
event_socket_reconnections_total
Type : Compteur
Étiquettes : connection_type (main, log_listener), result (attempting, success, failed)
Description : Nombre total de tentatives de reconnexion Socket d'événements
Intégration du tableau de bord Grafana
Les métriques peuvent être visualisées dans Grafana en utilisant la source de données Prometheus. Panneaux recommandés :
Tableau de bord 1 : Volume d'appels
- Jauge des appels actifs
- Taux de tentatives d'appels par type (MO/MT/Urgent)
- Taux de rejet d'appels
Tableau de bord 2 : Performance Diameter
- Carte thermique du temps de réponse
- Taux de requêtes/réponses
- Tableau d'état des pairs
- Taux d'erreur par code de résultat
Tableau de bord 3 : Santé de la facturation en ligne
- Taux de succès d'autorisation de crédit
- Taux d'événements "Pas de crédit"
- Taux de délai d'attente OCS
Tableau de bord 4 : Performance du système
- Latence de génération de plan de numérotation (P50/P95/P99)
- Temps de réponse SS7 MAP
- Disponibilité globale du système
Mise en page recommandée du tableau de bord Grafana
Ligne 1 : Volume d'appels
- Taux de tentatives d'appels (par type)
- Jauge des appels actifs
- Pourcentage de taux de succès
Ligne 2 : Performance
- Temps de requête HTTP P95 du plan de numérotation (par type d'appel) - MÉTRIQUE PRINCIPALE
- Temps de recherche Sh P95
- Temps de recherche HLR P95
- Temps d'autorisation OCS P95
- Temps de traitement du module de plan de numérotation P95 (par module)
Ligne 3 : Taux de succès
- Taux de succès de recherche Sh
- Taux de succès de recherche HLR
- Taux de succès d'autorisation OCS
- Taux de succès des tentatives d'appels
Ligne 4 : Performance des modules
- Temps de traitement P95 par module
- Comptes d'appels par module
Ligne 5 : Erreurs
- Erreurs de paramètres
- Tentatives non autorisées
- Erreurs Sh
- Erreurs HLR
- Erreurs OCS
Alertes critiques
Priorité 1 (Page immédiatement) :
# Plan de numérotation complètement hors ligne
rate(call_attempts_total[5m]) == 0
# HSS complètement hors ligne
rate(subscriber_data_lookups_total{result="error"}[5m]) /
rate(subscriber_data_lookups_total[5m]) > 0.9
# OCS complètement hors ligne
rate(ocs_authorization_attempts_total{result="error"}[5m]) /
rate(ocs_authorization_attempts_total[5m]) > 0.9
Priorité 2 (Alerte) :
# Génération de plan de numérotation lente
histogram_quantile(0.95,
rate(dialplan_generation_duration_milliseconds_bucket[5m])
) > 1000
# Taux d'erreur HSS élevé
rate(subscriber_data_lookups_total{result="error"}[5m]) /
rate(subscriber_data_lookups_total[5m]) > 0.2
# Taux d'erreur OCS élevé
rate(ocs_authorization_attempts_total{result="error"}[5m]) /
rate(ocs_authorization_attempts_total[5m]) > 0.1
Priorité 3 (Avertissement) :
# Latence HSS élevée
histogram_quantile(0.95,
rate(subscriber_data_duration_milliseconds_bucket[5m])
) > 100
# Latence OCS élevée
histogram_quantile(0.95,
rate(ocs_authorization_duration_milliseconds_bucket[5m])
) > 1000
# Taux d'erreur modéré
rate(call_attempts_total{result="rejected"}[5m]) /
rate(call_attempts_total[5m]) > 0.05
Exemples d'alerte
Pair Diameter hors ligne
alert: DiameterPeerDown
expr: diameter_peer_state == 0
for: 1m
annotations:
summary: "Le pair Diameter {{ $labels.peer_host }} est hors ligne"
Latence Diameter élevée
alert: HighDiameterLatency
expr: histogram_quantile(0.95, rate(diameter_response_duration_milliseconds_bucket[5m])) > 1000
for: 5m
annotations:
summary: "Latence P95 Diameter au-dessus de 1s"
Échecs de crédit OCS
alert: HighOCSCreditFailures
expr: rate(online_charging_events_total{result="nocredit"}[5m]) > 0.1
for: 2m
annotations:
summary: "Taux élevé d'échecs de crédit OCS"
Erreurs de passerelle SS7 MAP
alert: SS7MapErrors
expr: rate(ss7_map_operations_total{result="error"}[5m]) / rate(ss7_map_operations_total[5m]) > 0.5
for: 3m
annotations:
summary: "Taux d'erreur SS7 MAP au-dessus de 50%"
Socket d'événements déconnecté
alert: EventSocketDown
expr: event_socket_connected == 0
for: 30s
annotations:
summary: "Socket d'événements {{ $labels.connection_type }} déconnecté"
Taux de rejet d'appels élevé
alert: HighCallRejectionRate
expr: rate(call_rejections_total[5m]) > 1
for: 2m
annotations:
summary: "Taux de rejet d'appels élevé : {{ $value }} rejets/sec"
Taux d'erreur HTTP élevé
alert: HighHTTPErrorRate
expr: rate(http_requests_total{status_code=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.1
for: 3m
annotations:
summary: "Taux d'erreur HTTP 5xx au-dessus de 10%"
Dépannage avec les métriques
Problème : Type d'appel affiché comme "inconnu"
Symptômes :
- Toutes les métriques affichent
call_type="unknown"au lieu demt,moouemergency - Impossible de différencier la performance entre les types d'appels
Cause racine : L'extraction du type d'appel échoue ou n'est pas correctement transmise à travers le pipeline de traitement.
Enquête :
- Vérifiez les journaux pour les messages "requête HTTP de plan de numérotation" - ils devraient montrer le bon type d'appel
- Passez en revue les journaux système pour les erreurs de traitement du type d'appel
Résolution : Contactez le support si la détection du type d'appel continue d'échouer.
Problème : Les appels sont lents
Enquête :
- Vérifiez P95 de
http_dialplan_request_duration_milliseconds- COMMENCEZ ICI - Si élevé, vérifiez les temps des composants :
- Vérifiez
subscriber_data_duration_millisecondspour les retards Sh - Vérifiez
hlr_data_duration_millisecondspour les retards HLR - Vérifiez
ocs_authorization_duration_millisecondspour les retards OCS - Vérifiez
dialplan_module_duration_millisecondspour les retards spécifiques aux modules
- Vérifiez
- Vérifiez si
call_type="unknown"- indique un échec de détection du type d'appel - Comparez les temps de traitement MT vs MO vs Urgence
- Corrélez avec les journaux système pour des messages d'erreur détaillés
Résolution : Optimisez le composant le plus lent
Problème : Les appels échouent
Enquête :
- Vérifiez le taux de
call_attempts_total{result="rejected"} - Vérifiez
subscriber_data_lookups_total{result="error"}pour les problèmes Sh - Vérifiez
hlr_lookups_total{result_type="error"}pour les problèmes HLR - Vérifiez
ocs_authorization_attempts_total{result="error"}pour les problèmes OCS - Vérifiez
authorization_decisions_total{disposition="unauthorized"}pour les problèmes d'authentification
Résolution : Réparez le composant défaillant
Problème : Charge élevée
Enquête :
- Vérifiez la valeur actuelle de
active_calls - Vérifiez le taux de
call_attempts_total - Vérifiez si le taux correspond au trafic attendu
- Comparez le ratio MT/MO
- Vérifiez les modèles inhabituels (pics, croissance stable)
Résolution : Augmentez ou enquêtez sur un trafic inhabituel
Problème : Problèmes d'itinérance
Enquête :
- Vérifiez le taux de
hlr_lookups_total{result_type="msrn"} - Vérifiez
hlr_data_duration_millisecondspour les retards - Utilisez l'outil de recherche HLR pour des abonnés spécifiques
- Vérifiez si MSRN est récupéré correctement
Résolution : Réparez la connectivité ou la configuration HLR
Bases de référence de performance
Valeurs typiques (système bien réglé)
- Requête de plan de numérotation HTTP (de bout en bout) : P50 : 100-500ms, P95 : 500-2000ms, P99 : 1000-3000ms
- Temps de recherche Sh : P50 : 15ms, P95 : 50ms, P99 : 100ms
- Temps de recherche HLR : P50 : 100ms, P95 : 300ms, P99 : 800ms
- Temps d'authentification OCS : P50 : 150ms, P95 : 500ms, P99 : 1500ms
- Traitement du module de plan de numérotation : P50 : 1-5ms, P95 : 10-25ms, P99 : 50ms
- Taux de succès Sh : > 99%
- Taux de succès HLR : > 95% (plus bas est normal en raison des abonnés hors ligne)
- Taux de succès OCS : > 98%
- Taux de succès des appels : > 99%
Remarque : Le temps de requête HTTP du plan de numérotation est la somme de tous les temps des composants plus les frais généraux. Il devrait être approximativement égal à : recherche Sh + recherche HLR + authentification OCS + traitement du module de plan de numérotation + frais généraux réseau/analyse. Le temps minimum attendu est d'environ 100ms (lorsque seule la recherche Sh est nécessaire), le temps maximum typique est d'environ 2000ms (avec toutes les recherches et réessais).
Planification de capacité
Surveillez ces tendances :
- Croissance du taux de
call_attempts_total - Croissance du pic d'
active_calls - Latences P95 stables ou améliorées
- Taux de succès stables ou améliorés
Planifiez l'échelle lorsque :
- Les appels actifs approchent 80% de la capacité
- Les latences P95 augmentent malgré une charge stable
- Les taux de succès diminuent malgré des systèmes externes stables
Intégration avec la journalisation
Corrélez les métriques avec les journaux :
- Taux d'erreur élevé dans les métriques → Recherchez les messages d'ERREUR dans les journaux
- Temps de réponse lents → Recherchez les messages d'AVERTISSEMENT dans les journaux concernant les délais d'attente
- Problèmes d'appels spécifiques → Recherchez dans les journaux par ID d'appel ou numéro de téléphone
- Utilisez l'outil de simulation pour reproduire et déboguer
Meilleures pratiques
- Configurez les tableaux de bord avant que les problèmes ne surviennent
- Définissez les seuils d'alerte en fonction de votre base de référence
- Testez les alertes en utilisant le simulateur d'appels
- Examinez les métriques chaque semaine pour identifier les tendances
- Corrélez les métriques avec des événements commerciaux (campagnes, pannes, etc.)
- Utilisez les métriques pour justifier les investissements en infrastructure
- Partagez les tableaux de bord avec l'équipe des opérations
- Documentez vos procédures de réponse aux alertes
Configuration
La collecte des métriques est automatiquement activée lorsque l'application démarre. Le point de terminaison des métriques est exposé sur le même port que l'API (par défaut : 8080).
Pour configurer Prometheus afin de récupérer les métriques, ajoutez ce travail à votre prometheus.yml :
scrape_configs:
- job_name: 'omnitas'
static_configs:
- targets: ['<tas-ip>:8080']
metrics_path: '/metrics'
scrape_interval: 10s
Cardinalité des métriques
Les métriques sont conçues avec une cardinalité contrôlée pour éviter de submerger Prometheus :
- Étiquettes de pair : Limitées uniquement aux pairs configurés
- Types d'appels : Ensemble fixe (mo, mt, emergency, unauthorized)
- Codes de résultat : Limité aux codes de résultat Diameter/OCS réellement reçus
- Opérations : Ensemble fixe par interface (sri/prn pour MAP, ccr/cca pour Diameter)
Total estimé de séries temporelles : ~200-500 en fonction du nombre de pairs configurés et de codes de résultat actifs.
Rétention des métriques
Périodes de rétention recommandées :
- Métriques brutes : 30 jours (haute résolution)
- Agrégats de 5 minutes : 90 jours
- Agrégats d'une heure : 1 an
- Agrégats quotidiens : 5 ans
Cela soutient :
- Dépannage en temps réel (métriques brutes)
- Analyse hebdomadaire/mensuelle (agrégats de 5 min/1 heure)
- Planification de capacité (agrégats quotidiens)
- Comparaison historique (agrégats annuels)