- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试从 Azure WadPerformanceCountersTable 查询数据。
我正在尝试获取最后 5 分钟的数据。
问题是我只从实例 nr 中获取数据。 4,5 和 6,但不是从 0,1,2 和 3 开始。
我用来提取数据的脚本是这样的:
Microsoft.WindowsAzure.CloudStorageAccount storageAccount = Microsoft.WindowsAzure.CloudStorageAccount.Parse(AppDefs.CloudStorageAccountConnectionString);
CloudTableClient cloudTableClient = storageAccount.CreateCloudTableClient();
TableServiceContext serviceContext = cloudTableClient.GetDataServiceContext();
IQueryable<PerformanceCountersEntity> traceLogsTable = serviceContext.CreateQuery<PerformanceCountersEntity>("WADPerformanceCountersTable");
var selection = from row in traceLogsTable
where row.PartitionKey.CompareTo("0" + DateTime.UtcNow.AddMinutes(-timespanInMinutes).Ticks) >= 0
&& row.DeploymentId == deploymentId
&& row.CounterName == @"\Processor(_Total)\% Processor Time"
select row;
CloudTableQuery<PerformanceCountersEntity> query = selection.AsTableServiceQuery<PerformanceCountersEntity>();
IEnumerable<PerformanceCountersEntity> result = query.Execute();
return result;
我的diagnostics.wadcfg 文件是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<DiagnosticMonitorConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration" configurationChangePollInterval="PT1M" overallQuotaInMB="4096">
<PerformanceCounters bufferQuotaInMB="0" scheduledTransferPeriod="PT5M">
<PerformanceCounterConfiguration counterSpecifier="\Memory\Available Bytes" sampleRate="PT60S" />
<PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT60S" />
</PerformanceCounters>
</DiagnosticMonitorConfiguration>
编辑:此外,我将此代码部署在 azure 的测试环境中,并且运行得很好。
编辑 2:更新以包含服务定义 XML:
<ServiceDefinition name="MyApp.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-05.1.7">
<WebRole name="MyApp.Website" vmsize="ExtraSmall">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
</Endpoints>
<Imports>
<Import moduleName="Diagnostics" />
</Imports>
</WebRole>
<WorkerRole name="MyApp.Cache" vmsize="ExtraSmall">
<Imports>
<Import moduleName="Diagnostics" />
<Import moduleName="Caching" />
</Imports>
<LocalResources>
<LocalStorage name="Microsoft.WindowsAzure.Plugins.Caching.FileStore" sizeInMB="1000" cleanOnRoleRecycle="false" />
</LocalResources>
</WorkerRole>
</ServiceDefinition>
在阅读用户 @Igorek 的回答后,我已经包含了我的 ServiceDefinition.csdef 配置 XML。我仍然不知道如何配置配置的 LocalResources > LocalStorage 部分。必须为“MyApp.Website”设置配置。
编辑 3:我已对测试 Azure 帐户进行了这些更改。
我已在 ServiceDefinitions.csdef 中进行了设置
<LocalResources>
<LocalStorage name="DiagnosticStore" sizeInMB="4096" cleanOnRoleRecycle="false"/>
</LocalResources>
我已经降低了diagnostics.wadcfg中的OverallQuota和BufferQuota最后,在 WAD-control-container 中,每个实例都有以下配置: http://pastebin.com/aUywLUfE
我必须将其放入真实账户才能看到结果。
最终编辑:显然总体配额是问题所在,尽管我不能保证。
最后,在发布新内容后,我注意到了这一点:
wad-control-container
中,总配额
为 1024MB,BufferQuotaInMB 为 1024MB --> 这是正确的,wad-control-container
中)在新发布之前均已删除。diagnostics.wadcfg
已正确配置:1024MB 全部所以我认为他们的出版商有问题。
尝试了两种解决方案:
我从“wad-control-container”中删除了 1 个不正确的 XML,并重新启动了计算机。 XML 被重写,角色实例开始写入 WADPerfCountTable。
我在另一个不正确的实例上使用了以下脚本,并且不正确的角色实例开始写入 WADPerfCountTable。
var storageAccount = CloudStorageAccount.Parse(AppDefs.CloudStorageAccountConnectionString);
DeploymentDiagnosticManager diagManager = new DeploymentDiagnosticManager(storageAccount, deploymentId);
IEnumerable<RoleInstanceDiagnosticManager> instanceManagers = diagManager.GetRoleInstanceDiagnosticManagersForRole(roleName);
foreach (var roleInstance in instanceManagers)
{
DiagnosticMonitorConfiguration currentConfiguration = roleInstance.GetCurrentConfiguration();
TimeSpan configurationChangePollInterval = TimeSpan.FromSeconds(60);
if (!IsCurrentConfigurationCorrect(currentConfiguration, overallQuotaInMb, TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1)))
{
// Add a performance counter for processor time.
PerformanceCounterConfiguration pccCPU = new PerformanceCounterConfiguration();
pccCPU.CounterSpecifier = @"\Processor(_Total)\% Processor Time";
pccCPU.SampleRate = TimeSpan.FromSeconds(60);
// Add a performance counter for available memory.
PerformanceCounterConfiguration pccMemory = new PerformanceCounterConfiguration();
pccMemory.CounterSpecifier = @"\Memory\Available Bytes";
pccMemory.SampleRate = TimeSpan.FromSeconds(60);
currentConfiguration.ConfigurationChangePollInterval = TimeSpan.FromSeconds(60);
currentConfiguration.OverallQuotaInMB = overallQuotaInMb;
currentConfiguration.PerformanceCounters.BufferQuotaInMB = overallQuotaInMb;
currentConfiguration.PerformanceCounters.DataSources.Add(pccCPU);
currentConfiguration.PerformanceCounters.DataSources.Add(pccMemory);
roleInstance.SetCurrentConfiguration(currentConfiguration);
}
}
此外,我时常收到此错误配置文件缺少一个或多个角色的诊断连接字符串
。
最后我会选择当前的回复作为答案,因为我已经找到了问题所在。不幸的是,我还没有找到问题的原因。每次发布时,我都会面临配置 XML 发生更改的风险。
最佳答案
查看您的第一个实例如何不将数据传输到诊断,而后面的实例则这样做,一个可能的原因如下:
服务器上的本地诊断存储已填满诊断数据,Azure 无法再将数据从本地存储传输到存储。确保角色配置中分配给 DiagnosticStore 的空间(在本地存储下)大于在diagnostics.wadcfg 中分配的缓冲区配额量
详细说明:我与许多客户有过亲身经历,因此以下是我根据 Microsoft 支持人员的评论得出的自己的解释。 Azure 诊断 API 不会根据 BufferQuota 清理本地存储,直到超出该配额。云项目中的 DiagnosticStore 默认大小与所有示例中使用的 BufferQuota 大小相同 (4096)。发生的情况是,您的 BufferQuota 非常接近 4096megs,但不等于限制,并且您的诊断 API 不会启动清除过程。同时,您对诊断数据的捕获无法再正常运行,因为本地存储几乎已满,并且 Azure 主机停止了应用程序写入 DiagnosticStore 的能力。
一旦本地存储填满,您的其他服务器也应该停止写入诊断数据。
希望这是有道理的。
编辑我的回复,以便为稍后阅读的人准确指出更改:
最简单的方法是降低对OverallQuotaInMb 中指定的需求Diagnostics.wadcfg 类似于 4000(请确保所有其他缓冲区的组合不超过此数字)
或者,或者另外,可以使用 .CSDEF 文件中的 LocalStorage 设置手动指定分配给 VM 上诊断存储的空间。此链接显示了如何操作:http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.diagnostics.diagnosticmonitorconfiguration.overallquotainmb.aspx
关于c# - Azure 实例 0 到 3 未在 WadPerformanceCountersTable 中写入诊断数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17021212/
当我在一台机器上启动我的应用程序时,它立即退出说它已经“停止工作”。在事件日志中,我看到 MissingMethodException 是原因。没有显示异常对话框,并且在事件日志详细信息中我看不到任何
我正在从 Windows Phone 8 模拟器调用 Azure 移动服务。有时我会收到没有 InnerException 属性的 MobileServiceInvalidOperationExcep
我正在创建一个 Web 客户端,用于使用 ACS Calling SDK 加入 Teams session 。我在加载诊断 API 时遇到问题。 Microsoft 提供了此页面: https://l
知道为什么我的应用程序被杀死吗?我是该节点的唯一用户。 我的历史记录服务器也没有显示任何内容。我如何进一步追踪并了解是谁杀死了它,以及为什么以及如何修复它? ubuntu@anmol-vm1-new:
我正在创建一个 Web 客户端,用于使用 ACS Calling SDK 加入 Teams session 。我在加载诊断 API 时遇到问题。 Microsoft 提供了此页面: https://l
我正在寻找一种从 Windows Azure 中的性能计数器获取原始数据的方法 使用诊断 API。 到目前为止,我注意到我可以从已知的计数器中配置一个计数器 并设置该计数器的采样率。 诊断配置中配置的
我在将 WebRole(WCF 服务)部署到 Azure 时遇到问题。我的 WebRole 持续显示忙碌状态至少 30 分钟,直到我中止它。我通过 Visual Studio 2010 进行部署。我正
Clang has several kinds of diagnostics ,其中三种主要是错误、警告和注释。 注释通常伴随着某些警告和错误,例如重复定义: error: conflicting t
调试由于 Win32 生产过程中的死锁而导致的明显挂起的步骤和技术是什么。我听说 WinDbg 可用于此目的,但您能否提供有关如何实现此目的的明确提示? 最佳答案 此 post应该让您开始使用各种选项
我有一个在 Azure 上运行的应用程序,它会记录(实际上是跟踪)到 Azure 诊断存储。我正在寻找一个可以用来分析这些日志的好工具。 我知道可以使用 Visual Studio 中的服务器资源管理
我在当前项目中使用 Bazel 经历了很长的“干净构建”时间。 我们推荐的诊断步骤是什么? 最佳答案 尝试使用 --profile 分析您的构建 语法为 bazel build --profile f
我在解释 gcc (4.8.2) 警告和错误时遇到问题。更准确地说,很难分辨一个问题在哪里结束,另一个问题从哪里开始。我只能通过控制台访问构建机器,因此不能选择使用 IDE。 我真的需要能够快速区分个
我想为我的 azure 云服务启用 azure 诊断,但我有点困惑。 我读了这篇文章:https://learn.microsoft.com/en-us/azure/cloud-services/cl
我想我这里有个卷曲的地方...我有一个WinForms应用程序,当它作为x64进程运行时,它每小时大约会定期崩溃。我怀疑这是由于堆栈损坏引起的,并且想知道是否有人看到过类似的问题,或者是否有诊断和检测
我正在研究 Azure Web 角色的性能改进,并想知道在发布/部署到生产站点时是否应保留诊断。 This article说要禁用它,但其中一条评论说您会丢失关键数据。 最佳答案 您绝对应该启用它。一
我的解决方案中有多个 Web 和辅助角色,但我还有一个在 Azure 托管 VM 上运行的非 Azure 应用程序。该应用程序连接到 Azure 存储以执行各种操作,例如读取和写入 blob 和队列,
我仍在努力理清思路 Azure Service Fabric Stateful Actors 。因此,我的(当前)问题最好放入这样的示例中: 我有一个帮助台系统,其中每张票证都是一个有状态的参与者。参
CUDA 到处都有大量文档和指南,但我找不到任何形式的说明来指导如何诊断编译但收到神秘、模糊错误消息(例如“未指定启动”)的内核“这些 block /网格结构有意义吗?”等等 我可以以某种方式拦截cu
我没有找到太多解决 azure 事件网格中事件丢失场景的方法。 因此我提出与以下场景相关的问题: 我们的代码将事件发布到域。 事件将传送到订阅中配置的网络 Hook 。 这在一段时间内有效。 消费者(
这个问题有点宽泛,但我觉得没有一个地方可以帮助系统地诊断 Elasticsearch 问题。广泛的类别可能是: 客户 查询错误 查询结果不正确 无法解释的行为 服务器 设置问题 性能问题 严重错误 无
我是一名优秀的程序员,十分优秀!