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
- Port 9090 - Métriques Système
- Port 8080 - Métriques du Moteur TAS
- Métriques d'Appels d'Application
- Métriques du Protocole Diameter
- Métriques des Opérations de Téléphonie
- Métriques du Système de Chargement en Ligne (OCS)
- Métriques de Traitement & de Plan de Numérotation
- Métriques de Socket d'Événements
- Métriques d'Utilisation des Fonctionnalités
- Métriques de Déclenchement SMS
- Métriques de Base de Données Erlang Mnesia
- Métriques de Mémoire de la VM Erlang
- Statistiques de la VM Erlang
- Informations Système de la VM Erlang
- Comptabilité de Micro-État de la VM Erlang (MSACC)
- Allocateurs de la VM Erlang
- Port 9093 - Métriques de Qualité des Médias & des Appels
- Métriques d'Exécution Go
- Métriques de Processus
- Métriques HTTP Prometheus
- Types de Métriques
- Utilisation
- Exemples de Requêtes
- Configuration de l'Unité de Temps des Métriques
- Intégration du Tableau de Bord Grafana
- Exemples d'Alerte
- Dépannage avec les Métriques
- Lignes de Base de Performance
- Meilleures Pratiques
Points de terminaison des métriques
| Port | Point de terminaison | Objectif | Aller à la section |
|---|---|---|---|
| 9090 | /metrics | Métriques système, passerelle et téléphonie de base | Port 9090 → |
| 8080 | /metrics | Métriques moteur TAS, Diameter, HLR, OCS et VM Erlang | Port 8080 → |
| 9093 | /esl?module=default | Qualité des médias RTP/RTCP et statistiques d'appels | Port 9093 → |
Port 9090 - Métriques Système
Métriques d'Appels et de Sessions
| Nom de la métrique | Port | Description |
|---|---|---|
freeswitch_bridged_calls | 9090 | Nombre d'appels en pont actuellement actifs |
freeswitch_detailed_bridged_calls | 9090 | Nombre d'appels en pont détaillés actifs |
freeswitch_current_calls | 9090 | Nombre d'appels actuellement actifs |
freeswitch_detailed_calls | 9090 | Nombre d'appels détaillés actifs |
freeswitch_current_channels | 9090 | Nombre de canaux actuellement actifs |
freeswitch_current_sessions | 9090 | Nombre de sessions actuellement actives |
freeswitch_current_sessions_peak | 9090 | Nombre maximum de sessions depuis le démarrage |
freeswitch_current_sessions_peak_last_5min | 9090 | Nombre maximum de sessions dans les 5 dernières minutes |
freeswitch_sessions_total | 9090 | Nombre total de sessions depuis le démarrage (compteur) |
freeswitch_current_sps | 9090 | Sessions actuelles par seconde |
freeswitch_current_sps_peak | 9090 | Sessions maximales par seconde depuis le démarrage |
freeswitch_current_sps_peak_last_5min | 9090 | Sessions maximales par seconde dans les 5 dernières minutes |
freeswitch_max_sessions | 9090 | Nombre maximum de sessions autorisées |
freeswitch_max_sps | 9090 | Maximum de sessions par seconde autorisées |
Métriques des Ressources Système
| Nom de la métrique | Port | Description |
|---|---|---|
freeswitch_current_idle_cpu | 9090 | Pourcentage actuel de CPU inactif |
freeswitch_min_idle_cpu | 9090 | Pourcentage minimum de CPU inactif enregistré |
freeswitch_uptime_seconds | 9090 | Temps de fonctionnement en secondes |
freeswitch_time_synced | 9090 | 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étrique | Port | Description |
|---|---|---|
freeswitch_memory_arena | 9090 | Total des bytes non mmappés (arène malloc) |
freeswitch_memory_ordblks | 9090 | Nombre de morceaux libres |
freeswitch_memory_smblks | 9090 | Nombre de blocs fastbin libres |
freeswitch_memory_hblks | 9090 | Nombre de régions mappées |
freeswitch_memory_hblkhd | 9090 | Bytes dans les régions mappées |
freeswitch_memory_usmblks | 9090 | Espace total alloué maximum |
freeswitch_memory_fsmblks | 9090 | Bytes libres détenus dans les fastbins |
freeswitch_memory_uordblks | 9090 | Espace total alloué |
freeswitch_memory_fordblks | 9090 | Espace total libre |
freeswitch_memory_keepcost | 9090 | Bloc libérable le plus haut |
Métriques de Statut des Codecs
| Nom de la métrique | Port | Description |
|---|---|---|
freeswitch_codec_status | 9090 | Statut 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 de Statut des Points de Terminaison
| Nom de la métrique | Port | Description |
|---|---|---|
freeswitch_endpoint_status | 9090 | Statut 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 de Statut des Modules
| Nom de la métrique | Port | Description |
|---|---|---|
freeswitch_load_module | 9090 | Statut de chargement du module (1=chargé, 0=non chargé) avec l'é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étrique | Port | Description |
|---|---|---|
freeswitch_registrations | 9090 | Nombre total d'enregistrements actifs |
freeswitch_registration_defails | 9090 | Informations 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étrique | Port | Description |
|---|---|---|
freeswitch_sofia_gateway_status | 9090 | Statut de la passerelle avec des étiquettes : context, name, profile, proxy, scheme, status (UP/DOWN) |
freeswitch_sofia_gateway_call_in | 9090 | Nombre d'appels entrants à travers la passerelle |
freeswitch_sofia_gateway_call_out | 9090 | Nombre d'appels sortants à travers la passerelle |
freeswitch_sofia_gateway_failed_call_in | 9090 | Nombre d'appels entrants échoués |
freeswitch_sofia_gateway_failed_call_out | 9090 | Nombre d'appels sortants échoués |
freeswitch_sofia_gateway_ping | 9090 | Dernière horodatage de ping (époque Unix) |
freeswitch_sofia_gateway_pingtime | 9090 | Dernière durée de ping en millisecondes |
freeswitch_sofia_gateway_pingfreq | 9090 | Fréquence de ping en secondes |
freeswitch_sofia_gateway_pingcount | 9090 | Nombre de pings envoyés |
freeswitch_sofia_gateway_pingmin | 9090 | Durée de ping minimale enregistrée |
freeswitch_sofia_gateway_pingmax | 9090 | Durée de ping maximale enregistrée |
Métriques de Santé de l'Exportateur
| Nom de la métrique | Port | Description |
|---|---|---|
freeswitch_up | 9090 | Si le dernier scrape a été réussi (1=succès, 0=échec) |
freeswitch_exporter_total_scrapes | 9090 | Nombre total de scrapes effectués (compteur) |
freeswitch_exporter_failed_scrapes | 9090 | Nombre total de scrapes échoués (compteur) |
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 la performance de la VM Erlang.
Métriques d'Appels d'Application
| Nom de la métrique | Port | Description |
|---|---|---|
call_simulations_total | 8080 | Nombre total de simulations d'appels (compteur) |
call_attempts_total | 8080 | Nombre total de tentatives d'appels (compteur) |
call_rejections_total | 8080 | Nombre total de rejets d'appels par raison (compteur) |
call_param_errors_total | 8080 | Nombre total d'erreurs de parsing des paramètres d'appel (compteur) |
active_calls | 8080 | Nombre d'appels actuellement actifs avec des étiquettes : call_type (mo/mt/emergency) |
tracked_call_sessions | 8080 | Nombre de sessions d'appels actuellement suivies dans ETS |
Métriques du Protocole Diameter
| Nom de la métrique | Port | Description |
|---|---|---|
diameter_peer_state | 8080 | État des pairs Diameter (1=up, 0=down) avec des étiquettes : peer_host, peer_realm, application |
diameter_requests_total | 8080 | Nombre total de requêtes Diameter (compteur) |
diameter_responses_total | 8080 | Nombre total de réponses Diameter (compteur) |
diameter_response_duration_milliseconds | 8080 | Durée des requêtes Diameter en millisecondes (histogramme) |
Métriques des Opérations de Téléphonie
| Nom de la métrique | Port | Description |
|---|---|---|
hlr_lookups_total | 8080 | Nombre total de recherches HLR (compteur) |
hlr_data_duration_milliseconds | 8080 | Durée de la récupération des données HLR en millisecondes (histogramme) |
subscriber_data_lookups_total | 8080 | Nombre total de recherches de donn��es d'abonnés (compteur) |
subscriber_data_duration_milliseconds | 8080 | Durée de la récupération des données d'abonnés Sh en millisecondes (histogramme) |
ss7_map_operations_total | 8080 | Nombre total d'opérations SS7 MAP (compteur) |
ss7_map_http_duration_milliseconds | 8080 | Durée des requêtes HTTP SS7 MAP en millisecondes (histogramme) |
tracked_registrations | 8080 | Nombre d'enregistrements SIP actuellement suivis |
Métriques du Système de Chargement en Ligne (OCS)
| Nom de la métrique | Port | Description |
|---|---|---|
ocs_authorization_attempts_total | 8080 | Nombre total de tentatives d'autorisation OCS (compteur) |
ocs_authorization_duration_milliseconds | 8080 | Durée de l'autorisation OCS en millisecondes (histogramme) |
online_charging_events_total | 8080 | Nombre total d'événements de chargement en ligne (compteur) |
authorization_decisions_total | 8080 | Nombre total de décisions d'autorisation (compteur) |
Métriques de Traitement & de Plan de Numérotation
| Nom de la métrique | Port | Description |
|---|---|---|
http_requests_total | 8080 | Nombre total de requêtes HTTP avec des étiquettes : endpoint, status_code (compteur) |
http_dialplan_request_duration_milliseconds | 8080 | Durée des requêtes de plan de numérotation HTTP en millisecondes (histogramme) |
dialplan_module_duration_milliseconds | 8080 | Durée du traitement des modules de plan de numérotation individuels (histogramme) |
freeswitch_variable_set_duration_milliseconds | 8080 | Durée des opérations de définition de variables (histogramme) |
Métriques de Socket d'Événements
| Nom de la métrique | Port | Description |
|---|---|---|
event_socket_connected | 8080 | État de la connexion Socket d'Événements (1=connecté, 0=déconnecté) avec l'étiquette : connection_type |
event_socket_reconnections_total | 8080 | Nombre total de tentatives de reconnexion Socket d'Événements (compteur) avec des étiquettes : connection_type, result |
event_socket_commands_total | 8080 | Nombre total de commandes Socket d'Événements exécutées (compteur) avec des étiquettes : command_type, result |
event_socket_command_timeouts_total | 8080 | Nombre total de délais d'attente de commandes Socket d'Événements (compteur) avec l'é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 a été exécuté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étrique | Port | Description |
|---|---|---|
feature_invocations_total | 8080 | Nombre total d'invocations de fonctionnalités TAS (compteur) avec des étiquettes : feature, call_type, result |
feature_data_source_total | 8080 | Nombre 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 inconditionnelcall_forward_not_reachable- Transfert d'appel lorsque l'abonné n'est pas joignablecall_forward_no_reply- Transfert d'appel en cas de non-réponsecall_barring- Blocage d'appels basé 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étrique | Port | Description |
|---|---|---|
sms_trigger_attempts_total | 8080 | Nombre total de tentatives de déclenchement SMS (compteur) avec des étiquettes : trigger_type, result |
sms_trigger_errors_total | 8080 | Nombre total d'erreurs de déclenchement SMS (compteur) avec des étiquettes : trigger_type, error_stage |
smsc_requests_total | 8080 | Nombre 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 Base de Données Erlang Mnesia
| Nom de la métrique | Port | Description |
|---|---|---|
erlang_mnesia_held_locks | 8080 | Nombre de verrous détenus |
erlang_mnesia_lock_queue | 8080 | Nombre de transactions en attente d'un verrou |
erlang_mnesia_transaction_participants | 8080 | Nombre de transactions participantes |
erlang_mnesia_transaction_coordinators | 8080 | Nombre de transactions coordinatrices |
erlang_mnesia_failed_transactions | 8080 | Nombre de transactions échouées (avortées) (compteur) |
erlang_mnesia_committed_transactions | 8080 | Nombre de transactions validées (compteur) |
erlang_mnesia_logged_transactions | 8080 | Nombre de transactions enregistrées (compteur) |
erlang_mnesia_restarted_transactions | 8080 | Nombre total de redémarrages de transactions (compteur) |
erlang_mnesia_memory_usage_bytes | 8080 | Total des bytes alloués par toutes les tables mnesia |
erlang_mnesia_tablewise_memory_usage_bytes | 8080 | Bytes alloués par table mnesia avec l'étiquette : table |
erlang_mnesia_tablewise_size | 8080 | Nombre de lignes par table avec l'étiquette : table |
Métriques de Mémoire de la VM Erlang
| Nom de la métrique | Port | Description |
|---|---|---|
erlang_vm_memory_atom_bytes_total | 8080 | Mémoire allouée pour les atomes avec l'étiquette : usage (used/free) |
erlang_vm_memory_bytes_total | 8080 | Total de mémoire allouée avec l'étiquette : kind (system/processes) |
erlang_vm_memory_dets_tables | 8080 | Nombre de tables DETS |
erlang_vm_memory_ets_tables | 8080 | Nombre de tables ETS |
erlang_vm_memory_processes_bytes_total | 8080 | Mémoire allouée pour les processus avec l'étiquette : usage (used/free) |
erlang_vm_memory_system_bytes_total | 8080 | Mémoire pour l'émulateur (non liée aux processus) avec l'étiquette : usage (atom/binary/code/ets/other) |
Statistiques de la VM Erlang
| Nom de la métrique | Port | Description |
|---|---|---|
erlang_vm_statistics_bytes_output_total | 8080 | Total de bytes sortis vers les ports (compteur) |
erlang_vm_statistics_bytes_received_total | 8080 | Total de bytes reçus à travers les ports (compteur) |
erlang_vm_statistics_context_switches | 8080 | Total des changements de contexte depuis le démarrage (compteur) |
erlang_vm_statistics_dirty_cpu_run_queue_length | 8080 | Longueur de la file d'attente d'exécution CPU sale |
erlang_vm_statistics_dirty_io_run_queue_length | 8080 | Longueur de la file d'attente d'exécution IO sale |
erlang_vm_statistics_garbage_collection_number_of_gcs | 8080 | Nombre de collectes de déchets (compteur) |
erlang_vm_statistics_garbage_collection_bytes_reclaimed | 8080 | Bytes récupérés par le GC (compteur) |
erlang_vm_statistics_garbage_collection_words_reclaimed | 8080 | Mots récupérés par le GC (compteur) |
erlang_vm_statistics_reductions_total | 8080 | Total des réductions (compteur) |
erlang_vm_statistics_run_queues_length | 8080 | Longueur des files d'attente normales |
erlang_vm_statistics_runtime_milliseconds | 8080 | Somme du temps d'exécution pour tous les threads (compteur) |
erlang_vm_statistics_wallclock_time_milliseconds | 8080 | Temps réel mesuré (compteur) |
Informations Système de la VM Erlang
| Nom de la métrique | Port | Description |
|---|---|---|
erlang_vm_dirty_cpu_schedulers | 8080 | Nombre de threads de planificateur CPU sale |
erlang_vm_dirty_cpu_schedulers_online | 8080 | Nombre de planificateurs CPU sale en ligne |
erlang_vm_dirty_io_schedulers | 8080 | Nombre de threads de planificateur I/O sale |
erlang_vm_ets_limit | 8080 | Nombre maximum de tables ETS autorisées |
erlang_vm_logical_processors | 8080 | Nombre de processeurs logiques configurés |
erlang_vm_logical_processors_available | 8080 | Nombre de processeurs logiques disponibles |
erlang_vm_logical_processors_online | 8080 | Nombre de processeurs logiques en ligne |
erlang_vm_port_count | 8080 | Nombre de ports actuellement existants |
erlang_vm_port_limit | 8080 | Nombre maximum de ports autorisés |
erlang_vm_process_count | 8080 | Nombre de processus actuellement existants |
erlang_vm_process_limit | 8080 | Nombre maximum de processus autorisés |
erlang_vm_schedulers | 8080 | Nombre de threads de planificateur |
erlang_vm_schedulers_online | 8080 | Nombre de planificateurs en ligne |
erlang_vm_smp_support | 8080 | 1 si compilé avec support SMP, 0 sinon |
erlang_vm_threads | 8080 | 1 si compilé avec support des threads, 0 sinon |
erlang_vm_thread_pool_size | 8080 | Nombre de threads asynchrones dans le pool |
erlang_vm_time_correction | 8080 | 1 si la correction de temps est activée, 0 sinon |
erlang_vm_wordsize_bytes | 8080 | Taille des mots de termes Erlang en bytes |
erlang_vm_atom_count | 8080 | Nombre d'atomes actuellement existants |
erlang_vm_atom_limit | 8080 | Nombre maximum d'atomes autorisés |
Comptabilité de Micro-État de la VM Erlang (MSACC)
Suivi détaillé du temps pour les activités des planificateurs avec des étiquettes : type, id
| Nom de la métrique | Port | Description |
|---|---|---|
erlang_vm_msacc_aux_seconds_total | 8080 | Temps passé à gérer des tâches auxiliaires (compteur) |
erlang_vm_msacc_check_io_seconds_total | 8080 | Temps passé à vérifier de nouveaux événements I/O (compteur) |
erlang_vm_msacc_emulator_seconds_total | 8080 | Temps passé à exécuter des processus Erlang (compteur) |
erlang_vm_msacc_gc_seconds_total | 8080 | Temps passé en collecte de déchets (compteur) |
erlang_vm_msacc_other_seconds_total | 8080 | Temps passé sur des activités non comptabilisées (compteur) |
erlang_vm_msacc_port_seconds_total | 8080 | Temps passé à exécuter des ports (compteur) |
erlang_vm_msacc_sleep_seconds_total | 8080 | Temps passé à dormir (compteur) |
erlang_vm_msacc_alloc_seconds_total | 8080 | Temps passé à gérer la mémoire (compteur) |
erlang_vm_msacc_bif_seconds_total | 8080 | Temps passé dans les BIFs (compteur) |
erlang_vm_msacc_busy_wait_seconds_total | 8080 | Temps passé à attendre activement (compteur) |
erlang_vm_msacc_ets_seconds_total | 8080 | Temps passé dans les BIFs ETS (compteur) |
erlang_vm_msacc_gc_full_seconds_total | 8080 | Temps passé dans la collecte de déchets complète (compteur) |
erlang_vm_msacc_nif_seconds_total | 8080 | Temps passé dans les NIFs (compteur) |
erlang_vm_msacc_send_seconds_total | 8080 | Temps passé à envoyer des messages (compteur) |
erlang_vm_msacc_timers_seconds_total | 8080 | Temps 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étrique | Port | Description |
|---|---|---|
erlang_vm_allocators | 8080 | Mé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
Port 9093 - Métriques de Qualité des Médias & 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étrique | Port | Description |
|---|---|---|
freeswitch_info | 9093 | Informations système avec l'étiquette : version |
freeswitch_up | 9093 | Statut de préparation (1=prêt, 0=non prêt) |
freeswitch_stack_bytes | 9093 | Taille de la pile en bytes |
freeswitch_session_total | 9093 | Nombre total de sessions |
freeswitch_session_active | 9093 | Nombre actif de sessions |
freeswitch_session_limit | 9093 | Limite de sessions |
rtp_channel_info | 9093 | Informations sur le canal RTP avec des étiquettes pour les détails du canal |
RTP Audio - Compteurs de Bytes
| Nom de la métrique | Port | Description |
|---|---|---|
rtp_audio_in_raw_bytes_total | 9093 | Total de bytes reçus (y compris les en-têtes) |
rtp_audio_out_raw_bytes_total | 9093 | Total de bytes envoyés (y compris les en-têtes) |
rtp_audio_in_media_bytes_total | 9093 | Total de bytes médias reçus (seulement le payload) |
rtp_audio_out_media_bytes_total | 9093 | Total de bytes médias envoyés (seulement le payload) |
RTP Audio - Compteurs de Paquets
| Nom de la métrique | Port | Description |
|---|---|---|
rtp_audio_in_packets_total | 9093 | Total de paquets reçus |
rtp_audio_out_packets_total | 9093 | Total de paquets envoyés |
rtp_audio_in_media_packets_total | 9093 | Total de paquets médias reçus |
rtp_audio_out_media_packets_total | 9093 | Total de paquets médias envoyés |
rtp_audio_in_skip_packets_total | 9093 | Paquets entrants rejetés |
rtp_audio_out_skip_packets_total | 9093 | Paquets sortants rejetés |
RTP Audio - Types de Paquets Spéciaux
| Nom de la métrique | Port | Description |
|---|---|---|
rtp_audio_in_jitter_packets_total | 9093 | Paquets du tampon de jitter reçus |
rtp_audio_in_dtmf_packets_total | 9093 | Paquets DTMF reçus |
rtp_audio_out_dtmf_packets_total | 9093 | Paquets DTMF envoyés |
rtp_audio_in_cng_packets_total | 9093 | Paquets de Génération de Bruit de Confort reçus |
rtp_audio_out_cng_packets_total | 9093 | Paquets de Génération de Bruit de Confort envoyés |
rtp_audio_in_flush_packets_total | 9093 | Paquets vidés (réinitialisations de tampon) |
RTP Audio - Jitter & Métriques de Qualité
| Nom de la métrique | Port | Description |
|---|---|---|
rtp_audio_in_jitter_buffer_bytes_max | 9093 | Taille maximale du tampon de jitter en bytes |
rtp_audio_in_jitter_seconds_min | 9093 | Jitter minimum en secondes |
rtp_audio_in_jitter_seconds_max | 9093 | Jitter maximum en secondes |
rtp_audio_in_jitter_loss_rate | 9093 | Taux de perte de paquets dû au jitter (ratio) |
rtp_audio_in_jitter_burst_rate | 9093 | Taux de rafale de paquets dû au jitter (ratio) |
rtp_audio_in_mean_interval_seconds | 9093 | Intervalle moyen entre les paquets entrants |
rtp_audio_in_flaw_total | 9093 | Total des défauts audio détectés (glitches, artefacts) |
rtp_audio_in_quality_percent | 9093 | Qualité audio en pourcentage (0-100) |
rtp_audio_in_quality_mos | 9093 | Score d'Opinion Moyenne (1-5, où 5 est le meilleur) |
Métriques RTCP
| Nom de la métrique | Port | Description |
|---|---|---|
rtcp_audio_bytes_total | 9093 | Total de bytes RTCP |
rtcp_audio_packets_total | 9093 | Total de paquets RTCP |
Métriques d'Exécution Go
| Nom de la métrique | Port | Description |
|---|---|---|
go_goroutines | 9090 | Nombre de goroutines actuellement en cours d'exécution |
go_threads | 9090 | Nombre de threads OS créés |
go_info | 9090 | Informations sur l'environnement Go (avec l'étiquette de version) |
go_gc_duration_seconds | 9090 | Durée de pause des cycles de collecte de déchets (résumé) |
go_memstats_alloc_bytes | 9090 | Nombre de bytes alloués et encore utilisés |
go_memstats_alloc_bytes_total | 9090 | Nombre total de bytes alloués (compteur) |
go_memstats_heap_alloc_bytes | 9090 | Bytes de tas alloués et encore utilisés |
go_memstats_heap_idle_bytes | 9090 | Bytes de tas en attente d'utilisation |
go_memstats_heap_inuse_bytes | 9090 | Bytes de tas actuellement utilisés |
go_memstats_heap_objects | 9090 | Nombre d'objets de tas alloués |
go_memstats_heap_released_bytes | 9090 | Bytes de tas libérés au système |
go_memstats_heap_sys_bytes | 9090 | Bytes de tas obtenus du système |
go_memstats_sys_bytes | 9090 | Total de bytes obtenus du système |
Métriques de Processus
| Nom de la métrique | Port | Description |
|---|---|---|
process_cpu_seconds_total | 9090 | Temps total CPU utilisateur et système passé (compteur) |
process_max_fds | 9090 | Nombre maximum de descripteurs de fichiers ouverts |
process_open_fds | 9090 | Nombre actuel de descripteurs de fichiers ouverts |
process_resident_memory_bytes | 9090 | Taille de la mémoire résidente en bytes |
process_virtual_memory_bytes | 9090 | Taille de la mémoire virtuelle en bytes |
process_virtual_memory_max_bytes | 9090 | Montant maximum de mémoire virtuelle disponible |
process_start_time_seconds | 9090 | Heure de démarrage du processus depuis l'époque Unix |
Métriques HTTP Prometheus
| Nom de la métrique | Port | Description |
|---|---|---|
promhttp_metric_handler_requests_in_flight | 9090 | Nombre actuel de scrapes en cours |
promhttp_metric_handler_requests_total | 9090 | Nombre total de scrapes par code d'état HTTP (compteur) |
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)
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']
Exemples de Requêtes
Liens Rapides :
- Métriques Générales (Port 9090)
- Métriques de Qualité des Médias (Port 9093)
- Métriques du Moteur TAS (Port 8080)
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 réussite des requêtes Diameter :
rate(diameter_responses_total[5m]) / rate(diameter_requests_total[5m])
Statut 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 de la requête de plan de numérotation HTTP (médiane) :
histogram_quantile(0.5, http_dialplan_request_duration_milliseconds)
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 HTTP du plan de numérotation 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 Réussite
- Taux de réussite des recherches de données d'abonnés
- Taux de réussite des recherches HLR
- Taux de réussite des autorisations OCS
- État des pairs Diameter
Ligne 4 : Qualité des Médias
- Score MOS de qualité des appels (
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
- Statut 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 Réussite 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)
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: "Le 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 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 de {{ $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 refusées de crédit"
Taux de Rejet d'Appels É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'appels supérieur à 5%"
description: "{{ $value | humanizePercentage }} des appels 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 de {{ $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 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 de {{ $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"
Dépannage avec les Métriques
Problème : Les appels sont lents
Étapes d'Investigation :
- 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]))
- 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]))
- 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
- Contention de base de données
- Charge système élevée
Problème : Les appels échouent
Étapes d'Investigation :
- Vérifiez les raisons de rejet d'appels :
sum by (reason) (rate(call_rejections_total[5m]))
- Vérifiez les décisions d'autorisation :
sum by (decision) (rate(authorization_decisions_total[5m]))
- Vérifiez la santé des pairs Diameter :
diameter_peer_state
- Vérifiez la connexion du Socket d'Événements :
event_socket_connected
Problème : Charge élevée
Étapes d'Investigation :
- Vérifiez le volume d'appels :
rate(call_attempts_total[5m])
active_calls
- Vérifiez les ressources de la VM Erlang :
erlang_vm_process_count
erlang_vm_statistics_run_queues_length
erlang_vm_memory_bytes_total
- 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 :
- Vérifiez les scores MOS :
rtp_audio_in_quality_mos
rtp_audio_in_quality_percent
- Vérifiez le jitter :
rtp_audio_in_jitter_seconds_max
rtp_audio_in_jitter_loss_rate
- Vérifiez la perte de paquets :
rtp_audio_in_skip_packets_total
rtp_audio_in_flaw_total
- Vérifiez l'utilisation de la bande passante :
rate(rtp_audio_in_media_bytes_total[1m]) * 8
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 d'abonnés (Sh) : 50-150ms
- Temps de 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 Réussite :
- 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 (ajoutez 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 d'exécution du planificateur constamment >10
Meilleures Pratiques
Stratégie de Surveillance
-
Configurez des tableaux de bord pour différents publics :
- Tableau de bord des opérations : Volume d'appels, taux de réussite, 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
-
Configurez 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 : Suivi dans le système de tickets (problèmes potentiels)
-
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
-
Concentrez-vous sur l'impact utilisateur :
- Priorisez les métriques de latence de bout en bout
- Suivez les taux de réussite plutôt que les compteurs d'erreur individuels
- Surveillez la qualité des médias pour l'expérience utilisateur
Performance des Requêtes
- 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]))
-
Évitez les étiquettes à haute cardinalité dans les requêtes (par exemple, ne regroupez pas par numéro de téléphone)
-
Utilisez des intervalles de taux appropriés :
- Tendances à court terme :
[5m] - Tendances à moyen terme :
[1h] - Tendances à long terme :
[1d]
- Tendances à court terme :
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 des catégories, pas pour des identifiants uniques
- Agrégez les données à haute cardinalité dans des systèmes externes
- Utilisez des règles d'enregistrement pour pré-agréger