Documentation des Métriques
Ce document décrit les métriques Prometheus exposées par les composants du serveur d'application 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'Appel d'Application
- Métriques du Protocole Diameter
- Métriques des Opérations de Téléphonie
- Métriques du Système de Facturation en Ligne (OCS)
- Métriques de Dialplan & Traitement
- 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é des Microétats 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
- Types de 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 | But | Accéder à 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'Appel et de Session
| 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 maximal de sessions depuis le démarrage |
freeswitch_current_sessions_peak_last_5min | 9090 | Nombre maximal de sessions au cours des 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 au cours des 5 dernières minutes |
freeswitch_max_sessions | 9090 | Nombre maximal de sessions autorisées |
freeswitch_max_sps | 9090 | Nombre maximal 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 le plus haut relâchable |
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 Vidéo
- 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 é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étaillées sur l'enregistrement 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 via la passerelle |
freeswitch_sofia_gateway_call_out | 9090 | Nombre d'appels sortants via 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 | Temps de ping minimum enregistré |
freeswitch_sofia_gateway_pingmax | 9090 | Temps de ping maximum enregistré |
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'application 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'Appel 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'appel 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 Facturation 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 facturation en ligne (compteur) |
authorization_decisions_total | 8080 | Nombre total de décisions d'autorisation (compteur) |
Métriques de Dialplan & Traitement
| 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 dialplan HTTP en millisecondes (histogramme) |
dialplan_module_duration_milliseconds | 8080 | Durée du traitement des modules de dialplan 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 é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 timeouts de commandes Socket d'Événements (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 : Commande terminée avec succès
- timeout : Commande dépassée le seuil de timeout
- error : Commande a retourné 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'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é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 de coordinateurs |
erlang_mnesia_failed_transactions | 8080 | Nombre de transactions échouées (avortées) (compteur) |
erlang_mnesia_committed_transactions | 8080 | Nombre de transactions engagé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 étiquette : table |
erlang_mnesia_tablewise_size | 8080 | Nombre de lignes par table avec é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 étiquette : usage (used/free) |
erlang_vm_memory_bytes_total | 8080 | Total de la mémoire allouée avec é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 étiquette : usage (used/free) |
erlang_vm_memory_system_bytes_total | 8080 | Mé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é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 via 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 planification 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 planification I/O sale |
erlang_vm_ets_limit | 8080 | Nombre maximal 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 maximal de ports autorisés |
erlang_vm_process_count | 8080 | Nombre de processus actuellement existants |
erlang_vm_process_limit | 8080 | Nombre maximal de processus autorisés |
erlang_vm_schedulers | 8080 | Nombre de threads de planification |
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 de 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 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étrique | Port | Description |
|---|---|---|
erlang_vm_msacc_aux_seconds_total | 8080 | Temps passé à gérer des travaux auxiliaires (compteur) |
erlang_vm_msacc_check_io_seconds_total | 8080 | Temps passé à vérifier les 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é en GC fullsweep (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 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é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 étiquette : version |
freeswitch_up | 9093 | Statut prêt (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 (payload uniquement) |
rtp_audio_out_media_bytes_total | 9093 | Total de bytes médias envoyés (payload uniquement) |
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 de buffer 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 buffer) |
RTP Audio - Jitter & Métriques de Qualité
| Nom de la métrique | Port | Description |
|---|---|---|
rtp_audio_in_jitter_buffer_bytes_max | 9093 | Plus grande taille de buffer 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 é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 maximal 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 maximal 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 scraper ces métriques, configurez votre serveur Prometheus pour scraper 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é 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 tentatives d'appel :
rate(call_attempts_total[5m])
Latence de recherche HLR (95ème 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])
Statut de connexion 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 de planification :
erlang_vm_statistics_run_queues_length
Nombre de tables ETS :
erlang_vm_memory_ets_tables
Durée de la requête de dialplan 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 de dialplan 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 de planification
- Taux de collecte des déchets
Ligne 6 : Suivi des Erreurs
- Erreurs de paramètres d'appel
- Échecs d'autorisation
- Statut de connexion 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 Dialplan 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)
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é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 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 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 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 de la File d'Attente de Planification É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 de planification é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"
Dépannage avec les Métriques
Problème : Les appels sont lents
Étapes d'Investigation :
- Vérifiez le temps de génération de dialplan global :
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
- Conflit 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 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 : Mauvaise Qualité des Médias
É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 dialplan HTTP : 200-500ms
- Temps de recherche de données d'abonnés (Sh) : 50-150ms
- Temps de recherche HLR : 100-300ms
- Temps d'autorisation OCS : 100-250ms
- Requêtes Diameter : 50-200ms
- Traitement des modules de dialplan : 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 de planification : <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 dégradante
- Files d'attente de planification 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 succès, santé du système
- Tableau de bord d'ingénierie : Percentiles de latence, taux d'erreurs, 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 service, panne majeure)
- Élevé : Alerte pendant les heures de bureau (performance dégradée)
- Avertissement : Suivre 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 succès plutôt que les compteurs d'erreurs 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, IDs 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