Maison > développement back-end > Tutoriel Python > Comment surveiller la durée de vos files d'attente de stockage Azure individuelles

Comment surveiller la durée de vos files d'attente de stockage Azure individuelles

DDD
Libérer: 2025-01-27 22:12:11
original
351 Les gens l'ont consulté

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.

How to Monitor the Length of Your Individual Azure Storage Queues

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.

How to Monitor the Length of Your Individual Azure Storage Queues

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 :

  • Suivez les files d'attente des messages empoisonnés pour éviter les pannes du système.
  • Surveillez la pression sur des files d'attente spécifiques pour vous assurer qu'elles traitent efficacement les messages.
  • Gérez les décisions de mise à l'échelle en observant la croissance de la file d'attente sous différentes charges.

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.

Comment obtenir vos métriques

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.

  1. Obtenir la longueur de la file d'attente

À 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>
Copier après la connexion

É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 :

  • API REST - x-ms-approximate-messages-count : valeur int
  • .NET - Nombre approximatif de messages
  • Java - getApproximateMessagesCount()
  1. Créer des rubriques et émettre des métriques

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>
Copier après la connexion

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.

  1. Adaptez-le à un environnement de production

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.

Conclusion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal