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 →
8080/metricsMétriques du moteur TAS, Diameter, HLR, OCS et VM ErlangPort 8080 →
9093/esl?module=defaultQualité des médias RTP/RTCP et statistiques d'appelsPort 9093 →

Port 9090 : Métriques système

Métriques d'appels et de sessions

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_synced9090Si 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 octets non mappé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_hblkhd9090Octets dans les régions mappées
freeswitch_memory_usmblks9090Espace total alloué maximum
freeswitch_memory_fsmblks9090Octets libres détenus dans les fastbins
freeswitch_memory_uordblks9090Espace total alloué
freeswitch_memory_fordblks9090Espace total libre
freeswitch_memory_keepcost9090Bloc le plus haut pouvant être libéré

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'enregistrement

Nom de la métriquePortDescription
freeswitch_registrations9090Nombre total d'enregistrements actifs
freeswitch_registration_defails9090Informations d'enregistrement détaillées 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_ping9090Dernière horodatage 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_up9090Si le dernier scrape a été 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 8080 : Métriques du moteur TAS

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

Métriques d'appels d'application

Nom de la métriquePortDescription
call_simulations_total8080Nombre total de simulations d'appels (compteur)
call_attempts_total8080Nombre total de tentatives d'appels (compteur)
call_rejections_total8080Nombre total de rejets d'appels par raison (compteur)
call_param_errors_total8080Nombre total d'erreurs de parsing des paramètres d'appels (compteur)
active_calls8080Nombre d'appels actuellement actifs avec des étiquettes : call_type (mo/mt/emergency)
tracked_call_sessions8080Nombre de sessions d'appels actuellement suivies dans ETS

Métriques du protocole Diameter

Nom de la métriquePortDescription
diameter_peer_state8080État des pairs Diameter (1=up, 0=down) avec des étiquettes : peer_host, peer_realm, application. Pollé toutes les 10s pour chaque pair Ro et Sh configuré.
diameter_requests_total8080Nombre total de requêtes Diameter (compteur) avec des étiquettes : application, command
diameter_responses_total8080Nombre total de réponses Diameter (compteur) avec des étiquettes : application, command, result_code
diameter_response_duration_milliseconds8080Duré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 intermédiaire)
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 intermédiaires échouées soient visibles indépendamment de la mise en place/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_total8080Nombre total de recherches HLR (compteur)
hlr_data_duration_milliseconds8080Durée de la récupération des données HLR en millisecondes (histogramme)
subscriber_data_lookups_total8080Nombre total de recherches de données d'abonnés (compteur)
subscriber_data_duration_milliseconds8080Durée de la récupération des données d'abonnés Sh en millisecondes (histogramme)
ss7_map_operations_total8080Nombre total d'opérations SS7 MAP (compteur)
ss7_map_http_duration_milliseconds8080Durée des requêtes HTTP SS7 MAP en millisecondes (histogramme)
tracked_registrations8080Nombre d'enregistrements SIP actuellement suivis

Métriques du système de recharge en ligne (OCS)

Nom de la métriquePortDescription
ocs_authorization_attempts_total8080Nombre total de tentatives d'autorisation OCS (compteur)
ocs_authorization_duration_milliseconds8080Durée de l'autorisation OCS en millisecondes (histogramme)
online_charging_events_total8080Nombre total d'événements de recharge en ligne (compteur) avec des étiquettes : event_type, result
authorization_decisions_total8080Nombre total de décisions d'autorisation (compteur)
ro_charging_quota_seconds8080Quota 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 de 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é 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 par rapport à 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_total8080Nombre total de requêtes HTTP avec des étiquettes : endpoint, status_code (compteur)
http_dialplan_request_duration_milliseconds8080Durée des requêtes de plan de numérotation HTTP en millisecondes (histogramme)
dialplan_module_duration_milliseconds8080Durée du traitement des modules de plan de numérotation individuels (histogramme)
freeswitch_variable_set_duration_milliseconds8080Durée des opérations de définition de variables (histogramme)

Métriques de socket d'événements

Nom de la métriquePortDescription
event_socket_connected8080État de la connexion de socket d'événements (1=connecté, 0=déconnecté) avec étiquette : connection_type
event_socket_reconnections_total8080Nombre total de tentatives de reconnexion de socket d'événements (compteur) avec des étiquettes : connection_type, result
event_socket_commands_total8080Nombre total de commandes de socket d'événements exécutées (compteur) avec des étiquettes : command_type, result
event_socket_command_timeouts_total8080Nombre total de délais d'attente de commandes de socket d'événements (compteur) avec étiquette : command_type

Types de commandes suivis :

  • 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_total8080Nombre total d'invocations de fonctionnalités TAS (compteur) avec des étiquettes : feature, call_type, result
feature_data_source_total8080Nombre 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 - Interdiction d'appel basée sur l'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_total8080Nombre total de tentatives de déclenchement SMS (compteur) avec des étiquettes : trigger_type, result
sms_trigger_errors_total8080Nombre total d'erreurs de déclenchement SMS (compteur) avec des étiquettes : trigger_type, error_stage
smsc_requests_total8080Nombre 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 expiré ou a échoué afin que les conditions de sous-comptage et de messages manquants puissent être alertées plutôt que tolérées silencieusement.

Nom de la métriquePortDescription
voicemail_cluster_fanout_errors_total8080Échecs de propagation de 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_locks8080Nombre de verrous détenus
erlang_mnesia_lock_queue8080Nombre de transactions en attente d'un verrou
erlang_mnesia_transaction_participants8080Nombre de transactions participantes
erlang_mnesia_transaction_coordinators8080Nombre de transactions de coordinateurs
erlang_mnesia_failed_transactions8080Nombre de transactions échouées (avortées) (compteur)
erlang_mnesia_committed_transactions8080Nombre de transactions validées (compteur)
erlang_mnesia_logged_transactions8080Nombre de transactions enregistrées (compteur)
erlang_mnesia_restarted_transactions8080Nombre total de redémarrages de transactions (compteur)
erlang_mnesia_memory_usage_bytes8080Total des octets alloués par toutes les tables mnesia
erlang_mnesia_tablewise_memory_usage_bytes8080Octets alloués par table mnesia avec étiquette : table
erlang_mnesia_tablewise_size8080Nombre 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_total8080Mémoire allouée pour les atomes avec étiquette : usage (used/free)
erlang_vm_memory_bytes_total8080Total de la mémoire allouée avec étiquette : kind (system/processes)
erlang_vm_memory_dets_tables8080Nombre de tables DETS
erlang_vm_memory_ets_tables8080Nombre de tables ETS
erlang_vm_memory_processes_bytes_total8080Mémoire allouée pour les processus avec étiquette : usage (used/free)
erlang_vm_memory_system_bytes_total8080Mé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_total8080Total des octets sortants vers les ports (compteur)
erlang_vm_statistics_bytes_received_total8080Total des octets reçus via les ports (compteur)
erlang_vm_statistics_context_switches8080Total des changements de contexte depuis le démarrage (compteur)
erlang_vm_statistics_dirty_cpu_run_queue_length8080Longueur de la file d'attente d'exécution CPU sale
erlang_vm_statistics_dirty_io_run_queue_length8080Longueur de la file d'attente d'exécution IO sale
erlang_vm_statistics_garbage_collection_number_of_gcs8080Nombre de collectes de déchets (compteur)
erlang_vm_statistics_garbage_collection_bytes_reclaimed8080Octets récupérés par le GC (compteur)
erlang_vm_statistics_garbage_collection_words_reclaimed8080Mots récupérés par le GC (compteur)
erlang_vm_statistics_reductions_total8080Total des réductions (compteur)
erlang_vm_statistics_run_queues_length8080Longueur des files d'attente normales
erlang_vm_statistics_runtime_milliseconds8080Somme du temps d'exécution pour tous les threads (compteur)
erlang_vm_statistics_wallclock_time_milliseconds8080Temps réel mesuré (compteur)

Informations système de la VM Erlang

Nom de la métriquePortDescription
erlang_vm_dirty_cpu_schedulers8080Nombre de threads de planification CPU sale
erlang_vm_dirty_cpu_schedulers_online8080Nombre de planificateurs CPU sales en ligne
erlang_vm_dirty_io_schedulers8080Nombre de threads de planification I/O sale
erlang_vm_ets_limit8080Nombre maximal de tables ETS autorisées
erlang_vm_logical_processors8080Nombre de processeurs logiques configurés
erlang_vm_logical_processors_available8080Nombre de processeurs logiques disponibles
erlang_vm_logical_processors_online8080Nombre de processeurs logiques en ligne
erlang_vm_port_count8080Nombre de ports actuellement existants
erlang_vm_port_limit8080Nombre maximal de ports autorisés
erlang_vm_process_count8080Nombre de processus actuellement existants
erlang_vm_process_limit8080Nombre maximal de processus autorisés
erlang_vm_schedulers8080Nombre de threads de planification
erlang_vm_schedulers_online8080Nombre de planificateurs en ligne
erlang_vm_smp_support80801 si compilé avec support SMP, 0 sinon
erlang_vm_threads80801 si compilé avec support des threads, 0 sinon
erlang_vm_thread_pool_size8080Nombre de threads asynchrones dans le pool
erlang_vm_time_correction80801 si la correction de l'heure est activée, 0 sinon
erlang_vm_wordsize_bytes8080Taille des mots de termes Erlang en octets
erlang_vm_atom_count8080Nombre d'atomes actuellement existants
erlang_vm_atom_limit8080Nombre 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_total8080Temps passé à gérer des travaux auxiliaires (compteur)
erlang_vm_msacc_check_io_seconds_total8080Temps passé à vérifier les nouveaux événements I/O (compteur)
erlang_vm_msacc_emulator_seconds_total8080Temps passé à exécuter des processus Erlang (compteur)
erlang_vm_msacc_gc_seconds_total8080Temps passé en collecte de déchets (compteur)
erlang_vm_msacc_other_seconds_total8080Temps passé sur des activités non comptabilisées (compteur)
erlang_vm_msacc_port_seconds_total8080Temps passé à exécuter des ports (compteur)
erlang_vm_msacc_sleep_seconds_total8080Temps passé à dormir (compteur)
erlang_vm_msacc_alloc_seconds_total8080Temps passé à gérer la mémoire (compteur)
erlang_vm_msacc_bif_seconds_total8080Temps passé dans les BIFs (compteur)
erlang_vm_msacc_busy_wait_seconds_total8080Temps passé à attendre activement (compteur)
erlang_vm_msacc_ets_seconds_total8080Temps passé dans les BIFs ETS (compteur)
erlang_vm_msacc_gc_full_seconds_total8080Temps passé dans le GC fullsweep (compteur)
erlang_vm_msacc_nif_seconds_total8080Temps passé dans les NIFs (compteur)
erlang_vm_msacc_send_seconds_total8080Temps passé à envoyer des messages (compteur)
erlang_vm_msacc_timers_seconds_total8080Temps passé à gérer des minuteries (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_allocators8080Mé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 octets
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 des octets reçus (y compris les en-têtes)
rtp_audio_out_raw_bytes_total9093Total des octets envoyés (y compris les en-têtes)
rtp_audio_in_media_bytes_total9093Total des octets médias reçus (charge utile uniquement)
rtp_audio_out_media_bytes_total9093Total des octets médias envoyés (charge utile uniquement)

RTP Audio : Compteurs de paquets

Nom de la métriquePortDescription
rtp_audio_in_packets_total9093Total des paquets reçus
rtp_audio_out_packets_total9093Total des paquets envoyés
rtp_audio_in_media_packets_total9093Total des paquets médias reçus
rtp_audio_out_media_packets_total9093Total des 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 du 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 octets
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 (glitch, artefacts)
rtp_audio_in_quality_percent9093Qualité audio en pourcentage (0-100)
rtp_audio_in_quality_mos9093Score d'opinion moyen (1-5, où 5 est le meilleur)

Métriques RTCP

Nom de la métriquePortDescription
rtcp_audio_bytes_total9093Total des octets RTCP
rtcp_audio_packets_total9093Total des 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 (synthèse)
go_memstats_alloc_bytes9090Nombre d'octets alloués et encore utilisés
go_memstats_alloc_bytes_total9090Nombre total d'octets alloués (compteur)
go_memstats_heap_alloc_bytes9090Octets de tas alloués et encore utilisés
go_memstats_heap_idle_bytes9090Octets de tas en attente d'utilisation
go_memstats_heap_inuse_bytes9090Octets de tas actuellement utilisés
go_memstats_heap_objects9090Nombre d'objets de tas alloués
go_memstats_heap_released_bytes9090Octets de tas libérés au système
go_memstats_heap_sys_bytes9090Octets de tas obtenus du système
go_memstats_sys_bytes9090Nombre total d'octets 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 octets
process_virtual_memory_bytes9090Taille de la mémoire virtuelle en octets
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:8080']
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é des appels (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 tentatives d'appels :

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 de CCR par type de requête (détecter les pics dans les mises à jour intermédiaires) :

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 d'un 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 connexion du socket d'événements :

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 des requêtes 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 de recherche de données d'abonnés
  • Taux de succès de recherche HLR
  • Taux de succès d'autorisation 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'appels
  • Échecs d'autorisation
  • État de connexion du socket d'événements
  • É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 ligne - 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 ligne - aucune tentative d'appel"
description: "Aucune tentative d'appel détectée pendant 2 minutes"

Pair Diameter hors ligne :

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

Socket d'événements déconnecté :

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

Alertes de haute gravité

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"

Mauvaise qualité des médias :

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

Alertes d'avertissement

Utilisation de la mémoire élevée :

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 de la file d'attente d'exécution du planificateur élevée :

alert: HighSchedulerRunQueue
expr: erlang_vm_statistics_run_queues_length > 10
for: 5m
labels:
severity: warning
annotations:
summary: "Longueur de la file d'attente d'exécution du planificateur élevée"
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 retards 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
  • Conflit 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 des appels :
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 du socket d'événements :
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 : Mauvaise qualité des médias

É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

Lignes de base de performance

Valeurs typiques (système bien réglé)

Latence (P95) :

  • Temps de requête de plan de numérotation HTTP : 200-500ms
  • Temps de recherche de données (Sh) d'abonnés : 50-150ms
  • Temps de recherche de données HLR : 100-300ms
  • Temps d'autorisation OCS : 100-250ms
  • Requêtes Diameter : 50-200ms
  • Temps de 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 constamment >70% de la capacité
  • Nombre de processus Erlang >70% de la limite
  • Latence P95 se dégrade
  • Files d'attente de planificateur constamment >10

↑ Retour en haut

Meilleures pratiques

Stratégie de surveillance

  1. Configurer 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. Configurer des alertes à plusieurs niveaux :

    • Critique : Page en cas d'appel (système hors ligne, panne majeure)
    • Élevé : Alerte pendant les heures de bureau (performance dégradée)
    • Avertissement : Suivre dans le système de tickets (problèmes potentiels)
  3. Utiliser des plages horaires 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. Se concentrer sur l'impact utilisateur :

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

Performance des requêtes

  1. Utiliser 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. Éviter les étiquettes à haute cardinalité dans les requêtes (par exemple, ne pas grouper par numéro de téléphone)

  2. Utiliser des intervalles de taux appropriés :

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

Cardinalité des métriques

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

# Vérifier 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, IDs d'appels)
  • Valeurs d'étiquettes non bornées
  • Étiquettes avec >1000 valeurs uniques

Solution :

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

↑ Retour en haut