我正在寻找一些关于如何访问SCOM收集的指标的灵感?本质上,我想提取中央处理器,内存和磁盘利用率指标,标准化,并通过应用程序接口发布到外部SaaS解决方案。
由于SCOM已经收集了这些指标,因此安装另一个代理来收集似乎是愚蠢的,尽管在这种情况下,第二个代理不是一个选项:/
如果有任何帮助,我将不胜感激。
谢谢,
J
发布于 2016-08-28 15:46:44
因此,正如Roman建议的那样,SCOM有两个DB。运营和数据仓库。收集性能数据的MP应该显式地将收集的数据保存到DB或这两个数据库中。通常,您会期望将数据从设计良好的MP保存到这两个数据库中。数据库之间的主要区别是,操作数据库存储几乎“实时”数据(间隔10-20分钟),而DW数据库具有每小时和每天的聚合数据。
在这里,我可以在两个数据库上给出几个例子。
运营数据库:
此查询列出特定Windows计算机的所有可用对象名称、它们的实例和相应的计数器,但是,您可以修改其他类的查询:
select pc.* from PerformanceCounterView pc join TypedManagedEntity tme on tme.TypedManagedEntityId = pc.ManagedEntityId join BaseManagedEntity bme on tme.BaseManagedEntityId = bme.BaseManagedEntityId where (bme.TopLevelHostEntityId = (select BaseManagedEntityId from BaseManagedEntity where FullName = 'Microsoft.Windows.Computer:'+@ServerName)) order by ObjectName, CounterName, InstanceName
然后,当您获得PerformanceSourceInternalId时,您可以通过运行以下查询来提取实际数据:
declare @TZOffset as int = DATEDIFF(MINUTE,GETUTCDATE(),GETDATE())
SELECT SampleValue, DATEADD(MINUTE,@TZOffset,TimeSampled) as TS
FROM PerformanceDataAllView
where (PerformanceSourceInternalId = @SrcID)
and (TimeSampled > DATEADD(MINUTE,-@TZOffset,@Start))
and (TimeSampled < DATEADD(MINUTE,-@TZOffset,@End))注意:两个数据库中的所有时间戳都是UTC格式的,因此最后一个查询会将它们转换回本地时间。
数据仓库数据库:
DECLARE @StartDateSubParam as datetime DECLARE @CurrentServerSubParam as int SET @StartDateSubParam = '2016-01-01' SET @CurrentServerSubParam =(select mecn.ManagedEntityRowId from vManagedEntity mecn where (mecn.Path is null) and (mecn.FullName like 'Microsoft.Windows.Computer:yourServer.Domain.com')) select me.[Path] as ServerName, me.ManagedEntityRowId as ManagedEntityID, AverageValue, MaxValue, MinValue, perfdata.StandardDeviation, perfdata.[DateTime] as SampleDay from Perf.vPerfHourly perfdata join vPerformanceRuleInstance pri on perfdata.PerformanceRuleInstanceRowId = pri.PerformanceRuleInstanceRowId join vPerformanceRule pr on pr.RuleRowId = pri.RuleRowId left join vManagedEntity me on me.ManagedEntityRowId = perfdata.ManagedEntityRowId where (pr.ObjectName = 'Processor Information') and (pr.CounterName = '% Processor Time') and (perfdata.[DateTime] > @StartDateSubParam ) and (me.TopLevelHostManagedEntityRowId = @CurrentServerSubParam)
该查询选择安装了Windows2008 R2+的windows计算机的处理器性能(早期Windows版本的更改处理器信息-> processor )。您可以将名称更改为其他可用计数器,也可以使用vPerfHourly或vPerfDaily进行每小时或每天的聚合。
诚挚的问候。
发布于 2016-05-21 06:53:09
只要我们谈到灵感-我将提供一个没有技术细节的高级答案。我希望它是好的,Jamie :)所以我可以在这里看到三个选项: 1.通过MOM API (也称为SCOM SDK)获取这些指标。明显的问题-管理服务器上的低性能和额外负载2.直接从SCOM DB获取指标。我们讨论的是指标,因此您可能会决定不使用操作数据库,而是使用数据仓库DW,因为所有指标都写入两个数据库(一些MP不会这样做,但主要MP总是将指标发送到两个DB )。我也投票给DW DB,因为它具有更透明的模式。3.在要向SaaS发送数据的MPs中注入您的自定义写入操作。当然,这意味着最大限度的自定义,不适用于sealed MPs...so。让我们保留此选项,只是为了打乱您的想象力:)
这就是我能马上带到桌面上的东西。我希望它能帮上忙。
罗曼。
https://stackoverflow.com/questions/37331773
复制相似问题