azure - 如何获取 Azure Log Analytics 中特定 Azure 存储队列中的消息计数

标签 azure azure-storage azure-log-analytics azure-queues

我正在尝试使用 Log Analytics 从 Azure 存储帐户获取特定队列中的消息计数,以便最终在仪表板上发布。

预先感谢您的帮助

最佳答案

我们已在本地环境中对此进行了测试,以下陈述基于我们的分析。

  • 在日志分析中使用一些 kql 查询,您只能提取在存储帐户上执行的以下操作的日志
  1. 存储读取
  2. 存储写入
  3. 存储删除

Azure Monitor 提供了多种与指标交互的方法,包括在 Azure 门户中绘制图表、通过 REST API 访问它们或使用 PowerShell 或 Azure CLI 查询它们。自动收集的所有平台指标均可通过整合的指标管道获得。

  • 使用 Azure 门户中的平台指标,我们可以获取帐户级别的所有指标(QueueCapacity、QueueCount、QueueMessageCount),如下所示。

enter image description here

  • 如果您想使用日志分析来提取每个队列的消息计数,这是不可能的。

或者,您可以创建一个计时器触发器函数来监控队列的长度,如 this 中所述。博客文章。

  • 我们已在本地环境中对此进行了测试,运行良好。

这是 function.cs 文件中的代码:

using System;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Host;
    using Microsoft.Extensions.Logging;
    using Azure.Storage.Queues;
    
    namespace FunctionApp3
    {
        public static class Function1
        {
            [FunctionName("Function1")]
            public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger log)
            {
                log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
                var value = Environment.GetEnvironmentVariable("AzureWebJobsStorage");
                var queueNames = "<queueName>";
                var queueClient = new QueueClient(value, queueNames);
                int count = 0;
                foreach (var message in queueClient.ReceiveMessages(maxMessages:32).Value)
                {
                    count=count+1;
                }
                log.LogInformation($"current queueLength :{count}");
            }
        }
    }
 

以下是 local.setting.json 文件中的设置:

    {
        "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "StrgAccountConnectionString"
        "FUNCTIONS_WORKER_RUNTIME": "dotnet"
      }
    }

以下是供引用的示例输出:

enter image description here

关于azure - 如何获取 Azure Log Analytics 中特定 Azure 存储队列中的消息计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70551808/

相关文章:

sql-server - 使用 SQL Azure 数据库时存储过程是否有任何差异/限制

inheritance - Azure 表和实体继承

azure - 将 SSL 添加到 Azure 门户存储

php - 如何为 Azure 日志分析启用自定义 PHP laravel 日志记录

Azure terraform 部署问题 - 未知的 addon_profile

c# - Azure Functions 需要很长时间才能横向扩展

.net - SSL 256 位加密 - Azure 网站上

c# - 如何使用 C# 和 Azure .Net SDK 在 Azure 中克隆和管理虚拟机?

sql-server - 如何在 Azure 中配置用于 MsSql 导出目的的存储

azure - 写入 Azure OMS 日志分析的延迟是多少?