Aller au contenu principal

Documentation des Métriques

Ce document décrit les métriques Prometheus exposées par les composants du serveur d'applications IMS.

Table des Matières​

Points de Terminaison des Métriques​

PortPoint de TerminaisonObjectifAccéder à la Section
9090/metricsMétriques système, passerelle et téléphonie de basePort 9090 →
9094/metricsMétriques moteur TAS, Diameter, HLR, OCS et VM ErlangPort 9094 →
9093/esl?module=defaultQualité des médias RTP/RTCP et statistiques d'appelPort 9093 →

Port 9090 : Métriques Système​

Métriques d'Appel et de Session​

Nom de la MétriquePortDescription
freeswitch_bridged_calls9090Nombre d'appels en pont actuellement actifs
freeswitch_detailed_bridged_calls9090Nombre d'appels en pont détaillés actifs
freeswitch_current_calls9090Nombre d'appels actuellement actifs
freeswitch_detailed_calls9090Nombre d'appels détaillés actifs
freeswitch_current_channels9090Nombre de canaux actuellement actifs
freeswitch_current_sessions9090Nombre de sessions actuellement actives
freeswitch_current_sessions_peak9090Nombre maximal de sessions depuis le démarrage
freeswitch_current_sessions_peak_last_5min9090Nombre maximal de sessions au cours des 5 dernières minutes
freeswitch_sessions_total9090Nombre total de sessions depuis le démarrage (compteur)
freeswitch_current_sps9090Sessions actuelles par seconde
freeswitch_current_sps_peak9090Sessions maximales par seconde depuis le démarrage
freeswitch_current_sps_peak_last_5min9090Sessions maximales par seconde au cours des 5 dernières minutes
freeswitch_max_sessions9090Nombre maximal de sessions autorisées
freeswitch_max_sps9090Nombre maximal de sessions par seconde autorisées

Métriques des Ressources Système​

Nom de la MétriquePortDescription
freeswitch_current_idle_cpu9090Pourcentage actuel de CPU inactif
freeswitch_min_idle_cpu9090Pourcentage minimum de CPU inactif enregistré
freeswitch_uptime_seconds9090Temps de fonctionnement en secondes
freeswitch_time_synced9090Indique si l'heure système est synchronisée avec l'heure de l'hôte exportateur (1=synchronisé, 0=non synchronisé)

Métriques de Mémoire​

Nom de la MétriquePortDescription
freeswitch_memory_arena9090Total des bytes non mmappés (arène malloc)
freeswitch_memory_ordblks9090Nombre de morceaux libres
freeswitch_memory_smblks9090Nombre de blocs fastbin libres
freeswitch_memory_hblks9090Nombre de régions mappées
freeswitch_memory_hblkhd9090Bytes dans les régions mappées
freeswitch_memory_usmblks9090Espace total alloué maximum
freeswitch_memory_fsmblks9090Bytes libres détenus dans les fastbins
freeswitch_memory_uordblks9090Espace total alloué
freeswitch_memory_fordblks9090Espace total libre
freeswitch_memory_keepcost9090Bloc le plus haut libérable

Métriques d'État des Codecs​

Nom de la MétriquePortDescription
freeswitch_codec_status9090État du codec avec des étiquettes : ikey (module), name (nom du codec), type (codec). Valeur=1 indique que le codec est disponible

Les Codecs Disponibles Incluent :

  • G.711 alaw/ulaw
  • PROXY PASS-THROUGH
  • PROXY VIDEO PASS-THROUGH
  • RAW Signed Linear (16 bit)
  • Speex
  • VP8/VP9 Video
  • Variantes AMR
  • B64
  • G.723.1, G.729, G.722, G.726 variantes
  • OPUS
  • MP3
  • ADPCM, GSM, LPC-10

Métriques d'État des Points de Terminaison​

Nom de la MétriquePortDescription
freeswitch_endpoint_status9090État du point de terminaison avec des étiquettes : ikey (module), name (nom du point de terminaison), type (point de terminaison). Valeur=1 indique que le point de terminaison est disponible

Les Points de Terminaison Disponibles Incluent :

  • error, group, pickup, user (mod_dptools)
  • loopback, null (mod_loopback)
  • rtc (mod_rtc)
  • rtp, sofia (mod_sofia)
  • modem (mod_spandsp)

Métriques d'État des Modules​

Nom de la MétriquePortDescription
freeswitch_load_module9090État de chargement du module (1=chargé, 0=non chargé) avec étiquette : module

Modules Clés Surveillés :

  • mod_sofia (SIP)
  • mod_conference, mod_conference_ims
  • mod_opus, mod_g729, mod_amr, etc.
  • mod_event_socket
  • mod_dptools
  • mod_python3
  • mod_rtc
  • Et bien d'autres...

Métriques d'Inscription​

Nom de la MétriquePortDescription
freeswitch_registrations9090Nombre total d'inscriptions actives
freeswitch_registration_defails9090Informations détaillées sur l'inscription avec des étiquettes : expires, hostname, network_ip, network_port, network_proto, realm, reg_user, token, url

Métriques de la Passerelle Sofia​

Nom de la MétriquePortDescription
freeswitch_sofia_gateway_status9090État de la passerelle avec des étiquettes : context, name, profile, proxy, scheme, status (UP/DOWN)
freeswitch_sofia_gateway_call_in9090Nombre d'appels entrants via la passerelle
freeswitch_sofia_gateway_call_out9090Nombre d'appels sortants via la passerelle
freeswitch_sofia_gateway_failed_call_in9090Nombre d'appels entrants échoués
freeswitch_sofia_gateway_failed_call_out9090Nombre d'appels sortants échoués
freeswitch_sofia_gateway_ping9090Dernier timestamp de ping (époque Unix)
freeswitch_sofia_gateway_pingtime9090Dernier temps de ping en millisecondes
freeswitch_sofia_gateway_pingfreq9090Fréquence de ping en secondes
freeswitch_sofia_gateway_pingcount9090Nombre de pings envoyés
freeswitch_sofia_gateway_pingmin9090Temps de ping minimum enregistré
freeswitch_sofia_gateway_pingmax9090Temps de ping maximum enregistré

Métriques de Santé de l'Exportateur​

Nom de la MétriquePortDescription
freeswitch_up9090Indique si le dernier scrape a réussi (1=succès, 0=échec)
freeswitch_exporter_total_scrapes9090Nombre total de scrapes effectués (compteur)
freeswitch_exporter_failed_scrapes9090Nombre total de scrapes échoués (compteur)

↑ Retour en haut

Port 9094 : Métriques du Moteur TAS​

Ces métriques sont exposées par le moteur du serveur d'applications de téléphonie et fournissent un aperçu du traitement des appels, des opérations de base de données et des performances de la VM Erlang.

Port : 9094 par défaut. C'est l'écouteur de l'API HTTP OmniTAS, qui sert également l'API REST et les points de terminaison fsapi_dialplan/fsapi_directory appelés par FreeSWITCH. Remplacez-le par config :tas, api_port: <port> dans runtime.exs (si vous le changez, les URL de la passerelle xml_curl de FreeSWITCH et la cible de scrape Prometheus doivent être mises à jour pour correspondre).

Métriques d'Appel d'Application​

Nom de la MétriquePortDescription
call_simulations_total9094Nombre total de simulations d'appels (compteur)
call_attempts_total9094Nombre total de tentatives d'appels (compteur)
call_rejections_total9094Nombre total de rejets d'appels par raison (compteur)
call_param_errors_total9094Nombre total d'erreurs de parsing des paramètres d'appel (compteur)
active_calls9094Nombre d'appels actuellement actifs avec des étiquettes : call_type (mo/mt/emergency)
tracked_call_sessions9094Nombre de sessions d'appels actuellement suivies dans ETS

Métriques du Protocole Diameter​

Nom de la MétriquePortDescription
diameter_peer_state9094État des pairs Diameter (1=up, 0=down) avec des étiquettes : peer_host, peer_realm, application. Interrogé toutes les 10s pour chaque pair Ro et Sh configuré.
diameter_requests_total9094Nombre total de requêtes Diameter (compteur) avec des étiquettes : application, command
diameter_responses_total9094Nombre total de réponses Diameter (compteur) avec des étiquettes : application, command, result_code
diameter_response_duration_milliseconds9094Durée des requêtes Diameter en millisecondes (histogramme) avec des étiquettes : application, command, result

Valeurs des étiquettes application / command :

applicationcommandInterface
roccr_iCredit-Control-Request, INITIAL (mise en place de l'appel)
roccr_uCredit-Control-Request, UPDATE (réautorisation intérimaire)
roccr_tCredit-Control-Request, TERMINATION (fin d'appel)
shudrUser-Data-Request

Remarque : Les métriques de contrôle de crédit Ro sont divisées par type de requête (ccr_i/ccr_u/ccr_t) afin que les pics dans, par exemple, les mises à jour intérimaires échouées soient visibles indépendamment de la mise en place/de la fin. Le chemin Sh udr enregistre le nombre de requêtes et la latence (diameter_requests_total / diameter_response_duration_milliseconds) en plus des codes de réponse, correspondant au chemin Ro. result_code porte le code de résultat Diameter (par exemple, 2001) ; 0 désigne un délai d'attente ou une réponse non analysable. L'étiquette result sur l'histogramme de durée est l'une de success, nocredit, error, plus unknown_user / no_reply pour Sh.

Métriques des Opérations de Téléphonie​

Nom de la MétriquePortDescription
hlr_lookups_total9094Nombre total de recherches HLR (compteur)
hlr_data_duration_milliseconds9094Durée de la récupération des données HLR en millisecondes (histogramme)
subscriber_data_lookups_total9094Nombre total de recherches de données d'abonnés (compteur)
subscriber_data_duration_milliseconds9094Durée de la récupération des données d'abonnés Sh en millisecondes (histogramme)
ss7_map_operations_total9094Nombre total d'opérations SS7 MAP (compteur)
ss7_map_http_duration_milliseconds9094Durée des requêtes HTTP SS7 MAP en millisecondes (histogramme)
tracked_registrations9094Nombre d'inscriptions SIP actuellement suivies

Métriques du Système de Facturation en Ligne (OCS)​

Nom de la MétriquePortDescription
ocs_authorization_attempts_total9094Nombre total de tentatives d'autorisation OCS (compteur)
ocs_authorization_duration_milliseconds9094Durée de l'autorisation OCS en millisecondes (histogramme)
online_charging_events_total9094Nombre total d'événements de facturation en ligne (compteur) avec des étiquettes : event_type, result
authorization_decisions_total9094Nombre total de décisions d'autorisation (compteur)
ro_charging_quota_seconds9094Quota de contrôle de crédit Ro en secondes (histogramme) avec des étiquettes : request_type (ccr_i/ccr_u/ccr_t), kind (requested/granted/used)

Étiquettes online_charging_events_total :

  • event_type : authorize, answer, reauth, hangup, credit_exhaustion_hangup, hangup_rescheduled
  • result : success, nocredit, timeout, error, triggered

ro_charging_quota_seconds : quota observée sur chaque CCR :

  • kind="requested" : réservation demandée sur CCR-I/CCR-U (Requested-Service-Unit CC-Time)
  • kind="granted" : quota que l'OCS a approuvé dans le CCA (Granted-Service-Unit CC-Time ; 0 = pas de crédit)
  • kind="used" : unités rapportées comme consommées sur CCR-T (Used-Service-Unit CC-Time)

Comparer granted contre used expose une sur- ou sous-réservation et est le principal signal de correction de facturation pour l'interface Ro.

Métriques de Plan de Numérotation et de Traitement​

Nom de la MétriquePortDescription
http_requests_total9094Nombre total de requêtes HTTP avec des étiquettes : endpoint, status_code (compteur)
http_dialplan_request_duration_milliseconds9094Durée des requêtes de plan de numérotation HTTP en millisecondes (histogramme)
dialplan_module_duration_milliseconds9094Durée du traitement des modules de plan de numérotation individuels (histogramme)
freeswitch_variable_set_duration_milliseconds9094Durée des opérations de définition de variables (histogramme)

Métriques de Socket d'Événement​

Nom de la MétriquePortDescription
event_socket_connected9094État de la connexion Socket d'Événement (1=connecté, 0=déconnecté) avec étiquette : connection_type
event_socket_reconnections_total9094Nombre total de tentatives de reconnexion Socket d'Événement (compteur) avec des étiquettes : connection_type, result
event_socket_commands_total9094Nombre total de commandes Socket d'Événement exécutées (compteur) avec des étiquettes : command_type, result
event_socket_command_timeouts_total9094Nombre total de délais d'attente de commandes Socket d'Événement (compteur) avec étiquette : command_type

Types de Commandes Suivies :

  • uuid_setvar, uuid_dump, uuid_kill, uuid_transfer
  • uuid_set_media_stats
  • sched_hangup, sched_transfer
  • vm_boxcount
  • status, echo, show, sofia

Valeurs de Résultat :

  • success : La commande s'est terminée avec succès
  • timeout : La commande a dépassé le seuil de délai d'attente
  • error : La commande a renvoyé une réponse inattendue

Métriques d'Utilisation des Fonctionnalités​

Nom de la MétriquePortDescription
feature_invocations_total9094Nombre total d'invocations de fonctionnalités TAS (compteur) avec des étiquettes : feature, call_type, result
feature_data_source_total9094Nombre total d'utilisations de sources de données de fonctionnalités (compteur) avec des étiquettes : feature, source

Fonctionnalités :

  • call_forward_all - Transfert d'appel inconditionnel
  • call_forward_not_reachable - Transfert d'appel lorsque l'abonné n'est pas joignable
  • call_forward_no_reply - Transfert d'appel en cas de non-réponse
  • call_barring - Blocage d'appel basé sur OCS (crédit insuffisant)
  • cli_withheld - Confidentialité/sélection CLI

Types d'Appels : mo, mt

Sources de Données : sh_interface, hlr, config_fallback

Valeurs de Résultat : success, error, skipped

Métriques de Déclenchement SMS​

Nom de la MétriquePortDescription
sms_trigger_attempts_total9094Nombre total de tentatives de déclenchement SMS (compteur) avec des étiquettes : trigger_type, result
sms_trigger_errors_total9094Nombre total d'erreurs de déclenchement SMS (compteur) avec des étiquettes : trigger_type, error_stage
smsc_requests_total9094Nombre total de requêtes HTTP SMSC (compteur) avec des étiquettes : message_type, result

Types de Déclencheurs : voicemail_deposit, voicemail_clear

Étapes d'Erreur : vm_boxcount, template_render, smsc_request

Types de Messages : notification, mwi

Valeurs de Résultat : success, error

Métriques de Cluster de Messagerie Vocale​

Émis uniquement lorsque le clustering de messagerie vocale multi-TAS est configuré (config :tas, voicemail: %{cluster: ...}). Dans un cluster, une demande de boîte aux lettres se propage à chaque TAS pair ; ce compteur enregistre un pair qui a dépassé le délai ou a rencontré une erreur afin que les conditions de sous-comptage et de message manquant puissent être alertées plutôt que tolérées silencieusement.

Nom de la MétriquePortDescription
voicemail_cluster_fanout_errors_total9094Échecs de propagation des pairs de cluster de messagerie vocale (compteur) avec étiquette : operation

Opérations : count, messages, media, greeting, mark_read, delete, clear_greeting, clear_mailbox

Utilisation :

# Taux d'erreur de propagation de cluster par opération
sum by (operation) (rate(voicemail_cluster_fanout_errors_total[5m]))

Alerte Lorsque :

  • Erreurs soutenues > 0 : un TAS pair est inaccessible, donc les vues de boîte aux lettres inter-nœuds peuvent être incomplètes

Métriques de Base de Données Erlang Mnesia​

Nom de la MétriquePortDescription
erlang_mnesia_held_locks9094Nombre de verrous détenus
erlang_mnesia_lock_queue9094Nombre de transactions attendant un verrou
erlang_mnesia_transaction_participants9094Nombre de transactions participantes
erlang_mnesia_transaction_coordinators9094Nombre de transactions de coordinateurs
erlang_mnesia_failed_transactions9094Nombre de transactions échouées (avortées) (compteur)
erlang_mnesia_committed_transactions9094Nombre de transactions validées (compteur)
erlang_mnesia_logged_transactions9094Nombre de transactions enregistrées (compteur)
erlang_mnesia_restarted_transactions9094Nombre total de redémarrages de transactions (compteur)
erlang_mnesia_memory_usage_bytes9094Total des bytes alloués par toutes les tables mnesia
erlang_mnesia_tablewise_memory_usage_bytes9094Bytes alloués par table mnesia avec étiquette : table
erlang_mnesia_tablewise_size9094Nombre de lignes par table avec étiquette : table

Métriques de Mémoire de la VM Erlang​

Nom de la MétriquePortDescription
erlang_vm_memory_atom_bytes_total9094Mémoire allouée pour les atomes avec étiquette : usage (used/free)
erlang_vm_memory_bytes_total9094Total de la mémoire allouée avec étiquette : kind (system/processes)
erlang_vm_memory_dets_tables9094Nombre de tables DETS
erlang_vm_memory_ets_tables9094Nombre de tables ETS
erlang_vm_memory_processes_bytes_total9094Mémoire allouée pour les processus avec étiquette : usage (used/free)
erlang_vm_memory_system_bytes_total9094Mémoire pour l'émulateur (non liée aux processus) avec étiquette : usage (atom/binary/code/ets/other)

Statistiques de la VM Erlang​

Nom de la MétriquePortDescription
erlang_vm_statistics_bytes_output_total9094Total de bytes sortis vers les ports (compteur)
erlang_vm_statistics_bytes_received_total9094Total de bytes reçus à travers les ports (compteur)
erlang_vm_statistics_context_switches9094Total des changements de contexte depuis le démarrage (compteur)
erlang_vm_statistics_dirty_cpu_run_queue_length9094Longueur de la file d'attente d'exécution CPU sale
erlang_vm_statistics_dirty_io_run_queue_length9094Longueur de la file d'attente d'exécution IO sale
erlang_vm_statistics_garbage_collection_number_of_gcs9094Nombre de collectes de déchets (compteur)
erlang_vm_statistics_garbage_collection_bytes_reclaimed9094Bytes récupérés par GC (compteur)
erlang_vm_statistics_garbage_collection_words_reclaimed9094Mots récupérés par GC (compteur)
erlang_vm_statistics_reductions_total9094Total des réductions (compteur)
erlang_vm_statistics_run_queues_length9094Longueur des files d'attente normales
erlang_vm_statistics_runtime_milliseconds9094Somme du temps d'exécution pour tous les threads (compteur)
erlang_vm_statistics_wallclock_time_milliseconds9094Temps réel mesuré (compteur)

Informations Système de la VM Erlang​

Nom de la MétriquePortDescription
erlang_vm_dirty_cpu_schedulers9094Nombre de threads de planification CPU sale
erlang_vm_dirty_cpu_schedulers_online9094Nombre de planificateurs CPU sale en ligne
erlang_vm_dirty_io_schedulers9094Nombre de threads de planification I/O sale
erlang_vm_ets_limit9094Nombre maximal de tables ETS autorisées
erlang_vm_logical_processors9094Nombre de processeurs logiques configurés
erlang_vm_logical_processors_available9094Nombre de processeurs logiques disponibles
erlang_vm_logical_processors_online9094Nombre de processeurs logiques en ligne
erlang_vm_port_count9094Nombre de ports actuellement existants
erlang_vm_port_limit9094Nombre maximal de ports autorisés
erlang_vm_process_count9094Nombre de processus actuellement existants
erlang_vm_process_limit9094Nombre maximal de processus autorisés
erlang_vm_schedulers9094Nombre de threads de planification
erlang_vm_schedulers_online9094Nombre de planificateurs en ligne
erlang_vm_smp_support90941 si compilé avec le support SMP, 0 sinon
erlang_vm_threads90941 si compilé avec le support des threads, 0 sinon
erlang_vm_thread_pool_size9094Nombre de threads asynchrones dans le pool
erlang_vm_time_correction90941 si la correction de temps est activée, 0 sinon
erlang_vm_wordsize_bytes9094Taille des mots de termes Erlang en bytes
erlang_vm_atom_count9094Nombre d'atomes actuellement existants
erlang_vm_atom_limit9094Nombre maximal d'atomes autorisés

Comptabilité des Micro-États de la VM Erlang (MSACC)​

Suivi détaillé du temps pour les activités de planification avec des étiquettes : type, id

Nom de la MétriquePortDescription
erlang_vm_msacc_aux_seconds_total9094Temps passé à gérer des travaux auxiliaires (compteur)
erlang_vm_msacc_check_io_seconds_total9094Temps passé à vérifier de nouveaux événements I/O (compteur)
erlang_vm_msacc_emulator_seconds_total9094Temps passé à exécuter des processus Erlang (compteur)
erlang_vm_msacc_gc_seconds_total9094Temps passé en collecte de déchets (compteur)
erlang_vm_msacc_other_seconds_total9094Temps passé sur des activités non comptabilisées (compteur)
erlang_vm_msacc_port_seconds_total9094Temps passé à exécuter des ports (compteur)
erlang_vm_msacc_sleep_seconds_total9094Temps passé à dormir (compteur)
erlang_vm_msacc_alloc_seconds_total9094Temps passé à gérer la mémoire (compteur)
erlang_vm_msacc_bif_seconds_total9094Temps passé dans les BIFs (compteur)
erlang_vm_msacc_busy_wait_seconds_total9094Temps passé à attendre activement (compteur)
erlang_vm_msacc_ets_seconds_total9094Temps passé dans les BIFs ETS (compteur)
erlang_vm_msacc_gc_full_seconds_total9094Temps passé en GC fullsweep (compteur)
erlang_vm_msacc_nif_seconds_total9094Temps passé dans les NIFs (compteur)
erlang_vm_msacc_send_seconds_total9094Temps passé à envoyer des messages (compteur)
erlang_vm_msacc_timers_seconds_total9094Temps passé à gérer des temporisateurs (compteur)

Allocateurs de la VM Erlang​

Métriques détaillées des allocateurs de mémoire avec des étiquettes : alloc, instance_no, kind, usage

Nom de la MétriquePortDescription
erlang_vm_allocators9094Mémoire allouée (carriers_size) et utilisée (blocks_size) pour différents allocateurs. Voir erts_alloc(3).

Les types d'allocateurs incluent : temp_alloc, sl_alloc, std_alloc, ll_alloc, eheap_alloc, ets_alloc, fix_alloc, literal_alloc, binary_alloc, driver_alloc


↑ Retour en haut

Port 9093 : Métriques de Qualité des Médias et des Appels​

Ces métriques fournissent des statistiques RTP/RTCP en temps réel et des informations sur la qualité des appels par canal.

Nom de la MétriquePortDescription
freeswitch_info9093Informations système avec étiquette : version
freeswitch_up9093État prêt (1=prêt, 0=non prêt)
freeswitch_stack_bytes9093Taille de la pile en bytes
freeswitch_session_total9093Nombre total de sessions
freeswitch_session_active9093Nombre actif de sessions
freeswitch_session_limit9093Limite de session
rtp_channel_info9093Informations sur le canal RTP avec des étiquettes pour les détails du canal

RTP Audio : Compteurs de Bytes​

Nom de la MétriquePortDescription
rtp_audio_in_raw_bytes_total9093Total de bytes reçus (y compris les en-têtes)
rtp_audio_out_raw_bytes_total9093Total de bytes envoyés (y compris les en-têtes)
rtp_audio_in_media_bytes_total9093Total de bytes médias reçus (charge utile uniquement)
rtp_audio_out_media_bytes_total9093Total de bytes médias envoyés (charge utile uniquement)

RTP Audio : Compteurs de Paquets​

Nom de la MétriquePortDescription
rtp_audio_in_packets_total9093Total de paquets reçus
rtp_audio_out_packets_total9093Total de paquets envoyés
rtp_audio_in_media_packets_total9093Total de paquets médias reçus
rtp_audio_out_media_packets_total9093Total de paquets médias envoyés
rtp_audio_in_skip_packets_total9093Paquets entrants rejetés
rtp_audio_out_skip_packets_total9093Paquets sortants rejetés

RTP Audio : Types de Paquets Spéciaux​

Nom de la MétriquePortDescription
rtp_audio_in_jitter_packets_total9093Paquets de tampon de jitter reçus
rtp_audio_in_dtmf_packets_total9093Paquets DTMF reçus
rtp_audio_out_dtmf_packets_total9093Paquets DTMF envoyés
rtp_audio_in_cng_packets_total9093Paquets de génération de bruit de confort reçus
rtp_audio_out_cng_packets_total9093Paquets de génération de bruit de confort envoyés
rtp_audio_in_flush_packets_total9093Paquets vidés (réinitialisations de tampon)

RTP Audio : Jitter et Métriques de Qualité​

Nom de la MétriquePortDescription
rtp_audio_in_jitter_buffer_bytes_max9093Plus grande taille de tampon de jitter en bytes
rtp_audio_in_jitter_seconds_min9093Jitter minimum en secondes
rtp_audio_in_jitter_seconds_max9093Jitter maximum en secondes
rtp_audio_in_jitter_loss_rate9093Taux de perte de paquets dû au jitter (ratio)
rtp_audio_in_jitter_burst_rate9093Taux de rafale de paquets dû au jitter (ratio)
rtp_audio_in_mean_interval_seconds9093Intervalle moyen entre les paquets entrants
rtp_audio_in_flaw_total9093Total des défauts audio détectés (glitches, artefacts)
rtp_audio_in_quality_percent9093Qualité audio en pourcentage (0-100)
rtp_audio_in_quality_mos9093Score d'Opinion Moyenne (1-5, où 5 est le meilleur)

Métriques RTCP​

Nom de la MétriquePortDescription
rtcp_audio_bytes_total9093Total de bytes RTCP
rtcp_audio_packets_total9093Total de paquets RTCP

Métriques d'Exécution Go​

Nom de la MétriquePortDescription
go_goroutines9090Nombre de goroutines actuellement en cours d'exécution
go_threads9090Nombre de threads OS créés
go_info9090Informations sur l'environnement Go (avec étiquette de version)
go_gc_duration_seconds9090Durée de pause des cycles de collecte de déchets (résumé)
go_memstats_alloc_bytes9090Nombre de bytes alloués et encore utilisés
go_memstats_alloc_bytes_total9090Nombre total de bytes alloués (compteur)
go_memstats_heap_alloc_bytes9090Bytes de tas alloués et encore utilisés
go_memstats_heap_idle_bytes9090Bytes de tas en attente d'utilisation
go_memstats_heap_inuse_bytes9090Bytes de tas actuellement utilisés
go_memstats_heap_objects9090Nombre d'objets de tas alloués
go_memstats_heap_released_bytes9090Bytes de tas libérés au système
go_memstats_heap_sys_bytes9090Bytes de tas obtenus du système
go_memstats_sys_bytes9090Total de bytes obtenus du système

Métriques de Processus​

Nom de la MétriquePortDescription
process_cpu_seconds_total9090Temps total CPU utilisateur et système dépensé (compteur)
process_max_fds9090Nombre maximal de descripteurs de fichiers ouverts
process_open_fds9090Nombre actuel de descripteurs de fichiers ouverts
process_resident_memory_bytes9090Taille de la mémoire résidente en bytes
process_virtual_memory_bytes9090Taille de la mémoire virtuelle en bytes
process_virtual_memory_max_bytes9090Montant maximal de mémoire virtuelle disponible
process_start_time_seconds9090Heure de démarrage du processus depuis l'époque Unix

Métriques HTTP Prometheus​

Nom de la MétriquePortDescription
promhttp_metric_handler_requests_in_flight9090Nombre actuel de scrapes en cours
promhttp_metric_handler_requests_total9090Nombre total de scrapes par code d'état HTTP (compteur)

↑ Retour en haut

Types de Métriques​

  • gauge : Une métrique qui peut augmenter ou diminuer (par exemple, current_calls, cpu_idle)
  • counter : Une métrique qui n'augmente que (par exemple, sessions_total, failed_scrapes)
  • summary : Une métrique qui suit les quantiles sur une fenêtre de temps glissante (par exemple, gc_duration_seconds)

↑ Retour en haut

Utilisation​

Pour scrapper ces métriques, configurez votre serveur Prometheus pour scrapper les trois points de terminaison :

scrape_configs:
- job_name: 'ims_as_system'
static_configs:
- targets: ['localhost:9090']

- job_name: 'ims_as_engine'
static_configs:
- targets: ['localhost:9094']
metrics_path: '/metrics'

- job_name: 'ims_as_media'
static_configs:
- targets: ['localhost:9093']
metrics_path: '/esl'
params:
module: ['default']

↑ Retour en haut

Exemples de Requêtes​

Liens Rapides :

Métriques Générales​

Volume d'appels actuel :

freeswitch_current_calls

Santé de la passerelle :

freeswitch_sofia_gateway_status{status="UP"}

Temps de ping moyen vers les passerelles :

avg(freeswitch_sofia_gateway_pingtime)

Taux de sessions par seconde :

freeswitch_current_sps

Utilisation de la mémoire :

freeswitch_memory_uordblks

Métriques de Qualité des Médias​

Qualité d'appel (score MOS) :

rtp_audio_in_quality_mos

Pourcentage de qualité audio :

rtp_audio_in_quality_percent

Taux de jitter :

rate(rtp_audio_in_jitter_packets_total[5m])

Taux de perte de paquets :

rtp_audio_in_jitter_loss_rate

Jitter moyen :

avg(rtp_audio_in_jitter_seconds_max - rtp_audio_in_jitter_seconds_min)

Bande passante RTP (entrant) :

rate(rtp_audio_in_media_bytes_total[1m]) * 8

Défauts audio détectés :

increase(rtp_audio_in_flaw_total[5m])

Métriques du Moteur TAS​

Appels actifs par type :

active_calls

Santé des pairs Diameter :

diameter_peer_state{application="sh"}

Taux de tentative d'appel :

rate(call_attempts_total[5m])

Latence de recherche HLR (95e percentile) :

histogram_quantile(0.95, hlr_data_duration_milliseconds)

Latence d'autorisation OCS :

histogram_quantile(0.99, ocs_authorization_duration_milliseconds)

Taux de recherche de données d'abonnés :

rate(subscriber_data_lookups_total[5m])

Taux de succès des requêtes Diameter :

rate(diameter_responses_total[5m]) / rate(diameter_requests_total[5m])

Taux CCR par type de requête (détecter les pics dans les mises à jour intérimaires) :

sum by (command) (rate(diameter_requests_total{application="ro"}[5m]))

Taux d'erreur CCR, par type de requête :

sum by (command) (rate(diameter_responses_total{application="ro", result_code!="2001"}[5m]))

Latence P95 Sh (UDR) :

histogram_quantile(0.95, rate(diameter_response_duration_milliseconds_bucket{application="sh"}[5m]))

Quota de contrôle de crédit accordé médian lors de la mise en place de l'appel :

histogram_quantile(0.5, rate(ro_charging_quota_seconds_bucket{request_type="ccr_i", kind="granted"}[5m]))

Accords sans crédit (allocations de zéro seconde) par seconde :

rate(ro_charging_quota_seconds_bucket{kind="granted", le="0"}[5m])

État de la connexion Socket d'Événement :

event_socket_connected

Performance des transactions Mnesia :

rate(erlang_mnesia_committed_transactions[5m])

Taux de transactions échouées Mnesia :

rate(erlang_mnesia_failed_transactions[5m])

Nombre de processus de la VM Erlang :

erlang_vm_process_count

Utilisation de la mémoire de la VM Erlang :

erlang_vm_memory_bytes_total

Taux de collecte des déchets :

rate(erlang_vm_statistics_garbage_collection_number_of_gcs[5m])

Longueur de la file d'attente d'exécution du planificateur :

erlang_vm_statistics_run_queues_length

Nombre de tables ETS :

erlang_vm_memory_ets_tables

Durée de la requête de plan de numérotation HTTP (médiane) :

histogram_quantile(0.5, http_dialplan_request_duration_milliseconds)

↑ Retour en haut

Intégration du Tableau de Bord Grafana​

Les métriques peuvent être visualisées dans Grafana en utilisant la source de données Prometheus.

Mise en Page Recommandée du Tableau de Bord​

Ligne 1 : Volume d'Appels & Santé

  • Jauge des appels actifs (active_calls)
  • Taux de tentatives d'appels par type (rate(call_attempts_total[5m]))
  • Taux de rejet d'appels (rate(call_rejections_total[5m]))
  • Santé de la passerelle (freeswitch_sofia_gateway_status)

Ligne 2 : Performance (Percentiles de Latence)

  • Temps de requête de plan de numérotation HTTP P95 par type d'appel
  • Temps de recherche de données d'abonnés Sh P95
  • Temps de recherche HLR P95
  • Temps d'autorisation OCS P95
  • Temps de réponse Diameter P95 par application

Ligne 3 : Taux de Succès

  • Taux de succès des recherches de données d'abonnés
  • Taux de succès des recherches HLR
  • Taux de succès des autorisations OCS
  • État des pairs Diameter

Ligne 4 : Qualité des Médias

  • Score MOS de qualité d'appel (rtp_audio_in_quality_mos)
  • Pourcentage de qualité audio (rtp_audio_in_quality_percent)
  • Statistiques de jitter
  • Taux de perte de paquets

Ligne 5 : Ressources Système

  • Nombre de processus de la VM Erlang
  • Utilisation de la mémoire de la VM Erlang
  • Nombre de tables ETS
  • Longueur de la file d'attente d'exécution du planificateur
  • Taux de collecte des déchets

Ligne 6 : Suivi des Erreurs

  • Erreurs de paramètres d'appel
  • Échecs d'autorisation
  • État de connexion Socket d'Événement
  • Échecs de transactions Mnesia

Exemples de Requêtes de Panneau​

Appels Actifs par Type :

sum by (call_type) (active_calls)

Latence de Génération de Plan de Numérotation P95 :

histogram_quantile(0.95,
rate(http_dialplan_request_duration_milliseconds_bucket[5m])
)

Taux de Succès Diameter :

rate(diameter_responses_total{result="success"}[5m]) /
rate(diameter_requests_total[5m]) * 100

Qualité des Médias - MOS Moyen :

avg(rtp_audio_in_quality_mos)

↑ Retour en haut

Exemples d'Alerte​

Alertes Critiques (Page Immédiatement)​

Système Hors Service - Aucune Tentative d'Appel :

alert: SystemDown
expr: rate(call_attempts_total[5m]) == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Le système TAS semble hors service - aucune tentative d'appel"
description: "Aucune tentative d'appel détectée pendant 2 minutes"

Pair Diameter Hors Service :

alert: DiameterPeerDown
expr: diameter_peer_state == 0
for: 1m
labels:
severity: critical
annotations:
summary: "Le pair Diameter {{ $labels.peer_host }} est hors service"
description: "Pair pour l'application {{ $labels.application }} est indisponible"

Socket d'Événement Déconnecté :

alert: EventSocketDisconnected
expr: event_socket_connected == 0
for: 30s
labels:
severity: critical
annotations:
summary: "Socket d'Événement {{ $labels.connection_type }} déconnecté"
description: "Canal de communication critique hors service"

Alertes de Haute Sévérité​

Latence Diameter Élevée :

alert: HighDiameterLatency
expr: |
histogram_quantile(0.95,
rate(diameter_response_duration_milliseconds_bucket[5m])
) > 1000
for: 5m
labels:
severity: high
annotations:
summary: "Latence Diameter élevée détectée"
description: "La latence P95 est {{ $value }}ms"

Échecs d'Autorisation OCS :

alert: OCSAuthFailures
expr: |
rate(ocs_authorization_attempts_total{result="no_credit"}[5m]) /
rate(ocs_authorization_attempts_total[5m]) > 0.1
for: 5m
labels:
severity: high
annotations:
summary: "Taux élevé de réponses OCS sans crédit"
description: "{{ $value | humanizePercentage }} des demandes ont été refusées de crédit"

Taux de Rejet d'Appel Élevé :

alert: HighCallRejectionRate
expr: |
rate(call_rejections_total[5m]) /
rate(call_attempts_total[5m]) > 0.05
for: 5m
labels:
severity: high
annotations:
summary: "Taux de rejet d'appel supérieur à 5%"
description: "{{ $value | humanizePercentage }} des appels ont été rejetés"

Qualité des Médias Pauvre :

alert: PoorMediaQuality
expr: avg(rtp_audio_in_quality_mos) < 3.5
for: 3m
labels:
severity: high
annotations:
summary: "Qualité d'appel pauvre détectée"
description: "Le score MOS moyen est {{ $value }}"

Alertes d'Avertissement​

Utilisation Élevée de la Mémoire :

alert: HighMemoryUsage
expr: |
erlang_vm_memory_bytes_total{kind="processes"} /
(erlang_vm_process_limit * 1000000) > 0.8
for: 10m
labels:
severity: warning
annotations:
summary: "Utilisation de la mémoire de la VM Erlang élevée"
description: "Mémoire des processus à {{ $value | humanizePercentage }}"

Longueur Élevée de la File d'Attente du Planificateur :

alert: HighSchedulerRunQueue
expr: erlang_vm_statistics_run_queues_length > 10
for: 5m
labels:
severity: warning
annotations:
summary: "Longueur élevée de la file d'attente du planificateur"
description: "Longueur de la file d'attente est {{ $value }}"

Échecs de Transactions Mnesia :

alert: MnesiaTransactionFailures
expr: rate(erlang_mnesia_failed_transactions[5m]) > 1
for: 5m
labels:
severity: warning
annotations:
summary: "Échecs de transactions Mnesia détectés"
description: "{{ $value }} échecs par seconde"

↑ Retour en haut

Dépannage avec les Métriques​

Problème : Les appels sont lents​

Étapes d'Investigation :

  1. Vérifiez le temps de génération global du plan de numérotation :
histogram_quantile(0.95, rate(http_dialplan_request_duration_milliseconds_bucket[5m]))
  1. Décomposez par composant :
# Recherche de données d'abonnés
histogram_quantile(0.95, rate(subscriber_data_duration_milliseconds_bucket[5m]))

# Recherche HLR
histogram_quantile(0.95, rate(hlr_data_duration_milliseconds_bucket[5m]))

# Autorisation OCS
histogram_quantile(0.95, rate(ocs_authorization_duration_milliseconds_bucket[5m]))
  1. Vérifiez les délais spécifiques aux modules :
histogram_quantile(0.95,
rate(dialplan_module_duration_milliseconds_bucket[5m])
) by (module)

Causes Courantes :

  • Latence des systèmes externes (HSS, HLR, OCS)
  • Problèmes de réseau
  • Concurrence de base de données
  • Charge système élevée

Problème : Les appels échouent​

Étapes d'Investigation :

  1. Vérifiez les raisons de rejet d'appel :
sum by (reason) (rate(call_rejections_total[5m]))
  1. Vérifiez les décisions d'autorisation :
sum by (decision) (rate(authorization_decisions_total[5m]))
  1. Vérifiez la santé des pairs Diameter :
diameter_peer_state
  1. Vérifiez la connexion Socket d'Événement :
event_socket_connected

Problème : Charge élevée​

Étapes d'Investigation :

  1. Vérifiez le volume d'appels :
rate(call_attempts_total[5m])
active_calls
  1. Vérifiez les ressources de la VM Erlang :
erlang_vm_process_count
erlang_vm_statistics_run_queues_length
erlang_vm_memory_bytes_total
  1. Vérifiez la collecte des déchets :
rate(erlang_vm_statistics_garbage_collection_number_of_gcs[5m])

Problème : Qualité des Médias Pauvre​

Étapes d'Investigation :

  1. Vérifiez les scores MOS :
rtp_audio_in_quality_mos
rtp_audio_in_quality_percent
  1. Vérifiez le jitter :
rtp_audio_in_jitter_seconds_max
rtp_audio_in_jitter_loss_rate
  1. Vérifiez la perte de paquets :
rtp_audio_in_skip_packets_total
rtp_audio_in_flaw_total
  1. Vérifiez l'utilisation de la bande passante :
rate(rtp_audio_in_media_bytes_total[1m]) * 8

↑ Retour en haut

Bases de Référence de Performance​

Valeurs Typiques (Système Bien Réglé)​

Latence (P95) :

  • Temps de requête de plan de numérotation HTTP : 200-500ms
  • Recherche de données d'abonnés (Sh) : 50-150ms
  • Recherche de données HLR : 100-300ms
  • Autorisation OCS : 100-250ms
  • Requêtes Diameter : 50-200ms
  • Traitement des modules de plan de numérotation : 10-50ms par module

Taux de Succès :

  • Achèvement des appels : >95%
  • Recherches de données d'abonnés : >99%
  • Recherches HLR : >98%
  • Autorisations OCS : >99% (hors crédits légitimes sans)
  • Disponibilité des pairs Diameter : >99.9%

Qualité des Médias :

  • Score MOS : >4.0
  • Pourcentage de qualité audio : >80%
  • Jitter : <30ms
  • Taux de perte de paquets : <1%

Ressources Système :

  • Nombre de processus Erlang : <50% de la limite
  • Utilisation de la mémoire Erlang : <70% de disponible
  • File d'attente d'exécution du planificateur : <5
  • Tables ETS : <1000

Planification de Capacité​

Capacité par Serveur (maximums recommandés) :

  • Appels simultanés : 500-1000 (dépend du matériel)
  • Appels par seconde : 20-50 CPS
  • Abonnés enregistrés : 10,000-50,000

Indicateurs de Mise à l'Échelle (ajouter de la capacité lorsque) :

  • Appels actifs >70% de la capacité de manière constante
  • Nombre de processus Erlang >70% de la limite
  • Latence P95 se dégrade
  • Files d'attente de planificateur >10 de manière constante

↑ Retour en haut

Meilleures Pratiques​

Stratégie de Surveillance​

  1. Mettez en place des tableaux de bord pour différents publics :

    • Tableau de bord des opérations : Volume d'appels, taux de succès, santé du système
    • Tableau de bord d'ingénierie : Percentiles de latence, taux d'erreur, utilisation des ressources
    • Tableau de bord exécutif : KPI de haut niveau, disponibilité, métriques de coût
  2. Configurez des alertes à plusieurs niveaux :

    • Critique : Page l'appelant (système hors service, panne majeure)
    • Élevé : Alerte pendant les heures de bureau (performance dégradée)
    • Avertissement : Suivi dans le système de tickets (problèmes potentiels)
  3. Utilisez des plages de temps appropriées :

    • Surveillance en temps réel : fenêtres de 5 minutes
    • Dépannage : fenêtres de 15 minutes à 1 heure
    • Planification de capacité : agrégats quotidiens/hebdomadaires
  4. Concentrez-vous sur l'impact utilisateur :

    • Priorisez les métriques de latence de bout en bout
    • Suivez les taux de succès plutôt que les compteurs d'erreur individuels
    • Surveillez la qualité des médias pour l'expérience utilisateur

Performance des Requêtes​

  1. Utilisez des règles d'enregistrement pour les requêtes fréquemment utilisées :
groups:
- name: ims_as_aggregations
interval: 30s
rules:
- record: job:call_attempts:rate5m
expr: rate(call_attempts_total[5m])

- record: job:dialplan_latency:p95
expr: histogram_quantile(0.95, rate(http_dialplan_request_duration_milliseconds_bucket[5m]))
  1. Évitez les étiquettes à haute cardinalité dans les requêtes (par exemple, ne regroupez pas par numéro de téléphone)

  2. Utilisez des intervalles de taux appropriés :

    • Tendances à court terme : [5m]
    • Tendances à moyen terme : [1h]
    • Tendances à long terme : [1d]

Cardinalité des Métriques​

Surveillez la cardinalité pour éviter les problèmes de performance de Prometheus :

# Vérifiez la cardinalité des métriques
count by (__name__) ({__name__=~".+"})

Risques de haute cardinalité :

  • Étiquettes avec des valeurs uniques par appel (numéros de téléphone, ID d'appel)
  • Valeurs d'étiquettes non bornées
  • Étiquettes avec >1000 valeurs uniques

Solution :

  • Utilisez des étiquettes pour les catégories, pas pour les identifiants uniques
  • Agrégez les données à haute cardinalité dans des systèmes externes
  • Utilisez des règles d'enregistrement pour pré-agréger

↑ Retour en haut