Surveillance des files d'attente de stockage Azure : suivi de la longueur des files d'attente individuelles
En bref : les files d'attente de stockage Azure ne disposent pas d'une métrique intégrée de longueur de file d'attente individuelle. Cependant, vous pouvez utiliser le SDK Azure pour interroger approximate_message_count
et suivre la longueur de chaque file d'attente. Utilisez OpenTelemetry pour émettre ces données en tant que métrique personnalisée. Un exemple de projet est disponible pour automatiser ce processus via Azure Functions, permettant une surveillance fiable et évolutive.
Si vous utilisez des files d'attente de stockage Azure et que vous avez besoin (ou souhaitez simplement) de surveiller la longueur de chaque file d'attente individuellement, j'ai de mauvaises nouvelles. ?
Azure fournit uniquement des métriques du nombre total de messages pour l'ensemble du compte de stockage via sa fonctionnalité de métriques intégrée. Malheureusement, cela rend ces métriques intégrées moins utiles si vous devez suivre le nombre de messages pour une seule file d'attente.
L'image ci-dessus montre un exemple de l'indicateur intégré. Il y a deux files d'attente à un moment donné, mais nous n'avons aucun moyen d'identifier le nombre de messages contenus dans chaque file d'attente. Le filtrage est désactivé et il n'existe aucune mesure spécifique pour le nombre de messages en file d'attente, comme indiqué ci-dessous.
Pourquoi est-il important de surveiller les longueurs de file d'attente individuelles ?
La surveillance des longueurs de file d'attente individuelles peut être importante pour les raisons suivantes. Par exemple, si vous gérez plusieurs files d'attente, vous souhaiterez peut-être :
Que vous déboguiez ou effectuiez une mise à l'échelle, connaître le nombre de messages par file d'attente permet de maintenir votre système en bonne santé.
Bonne nouvelle ?
Bien qu'Azure ne fournisse pas cette fonctionnalité prête à l'emploi, il existe une solution de contournement simple et cet article de blog vous guidera tout au long du processus.
Comme mentionné précédemment, Azure ne fournit pas la longueur de file d'attente de stockage individuelle en tant que métrique intégrée. Étant donné que les gens demandent cette fonctionnalité depuis cinq ans, il n’est peut-être pas simple pour Microsoft de la mettre en œuvre en tant que mesure standard. Par conséquent, trouver une solution de contournement peut être votre meilleure option.
Naturellement, cela nous amène à la question : Si l'indicateur standard ne fournit pas cette fonctionnalité, existe-t-il un autre moyen de l'obtenir ? ?
Un examen plus approfondi du SDK du compte de stockage Azure révèle les propriétés de la file d'attente approximate_message_count
qui vous donnent accès aux informations dont vous avez besoin - simplement par une méthode différente.
Sachant cela, ne serait-il pas formidable si vous pouviez utiliser ces données pour suivre la longueur de la file d'attente en tant que mesure ?
Voici une réflexion : et si vous faisiez cela ? ?
Vous pouvez interroger la longueur de chaque file d'attente, créer des jauges métriques et mettre à jour les valeurs périodiquement.
Décomposons-le étape par étape.
À l'aide du SDK Python, vous pouvez facilement récupérer la longueur individuelle d'une file d'attente. Voir l'extrait de code ci-dessous :
<code class="language-python">from azure.identity import DefaultAzureCredential from azure.storage.queue import QueueClient STORAGE_ACCOUNT_URL = "<storage-account-url>" QUEUE_NAME = "<queue-name>" STORAGE_ACCOUNT_KEY = "<key>" credentials = STORAGE_ACCOUNT_KEY or DefaultAzureCredential() client = QueueClient( STORAGE_ACCOUNT_URL, queue_name=QUEUE_NAME, credential=credentials, ) try: properties = client.get_queue_properties() message_count = properties.approximate_message_count print(message_count) except Exception as e: logger.exception(e)</code>
Étant donné que le SDK est construit sur l'API REST, des fonctionnalités similaires sont disponibles dans d'autres SDK. Voici les références aux API REST et aux SDK dans d'autres langages :
Ensuite, vous créez une métrique de jauge pour suivre la longueur de la file d'attente.
Une jauge est un type de métrique qui mesure une valeur à un moment précis, ce qui la rend idéale pour suivre l'évolution des longueurs de file d'attente.
Pour ce faire, nous utiliserons OpenTelemetry, un framework d'observabilité open source qui est de plus en plus populaire pour sa polyvalence dans la collecte de métriques, de traces et de journaux. Voici un exemple d'utilisation d'OpenTelemetry pour émettre la longueur de la file d'attente comme jauge :
<code class="language-python">from opentelemetry.metrics import Meter, get_meter_provider meter = get_meter_provider().get_meter(METER_NAME) gauge = meter.create_gauge( name=gauge_name, description=gauge_description, unit="messages" ) new_length = None ⋮ # 获取 approximate_message_count 并将其设置为 new_length 的代码 gauge.set(new_length)</code>
Un autre avantage d'OpenTelemetry est qu'il s'intègre très bien à divers outils d'observabilité comme Prometheus, Azure Application Insights, Grafana, etc.
Bien que l'approche ci-dessus soit idéale pour l'expérimentation, vous aurez peut-être besoin d'une solution plus robuste pour les environnements de production. C’est là que l’élasticité et l’évolutivité entrent en jeu.
Dans un environnement de production, la surveillance continue des files d'attente implique bien plus que la simple extraction de métriques. Vous devez vous assurer que le système est fiable, qu'il peut évoluer en fonction de la demande et qu'il peut gérer les pannes potentielles (telles que des problèmes de réseau ou de grandes quantités de données). Par exemple, vous ne souhaitez pas qu’un échec de requête arrête votre processus de surveillance.
Si vous souhaitez voir comment adapter cela à un environnement de production, j'ai créé un exemple de projet : azure-storage-queue-monitor. Ce projet regroupe tout ce dont nous avons discuté dans une fonction Azure qui s'exécute sur un déclencheur de minuterie. Il gère la résilience, la simultanéité et l'évolutivité, vous garantissant ainsi une surveillance fiable de vos files d'attente.
Maintenant que vous disposez des étapes nécessaires pour suivre les longueurs de file d'attente individuelles et les émettre sous forme de métrique personnalisée, vous pouvez configurer cette fonctionnalité pour votre environnement. Si vous essayez, n'hésitez pas à partager vos expériences ou vos améliorations. J'aimerais entendre vos commentaires et vous aider si vous rencontrez des problèmes !
Bonne surveillance des files d'attente ! ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!