背景情報
最近の窓のパフォーマンスにいくつかの本で再見て、マイクロソフト(それが理由SCOM監視パッケージの前に、十分ではありませんZabbixのWindowsのOSテンプレートテンプレートに来て、私は監視するためにSCOMを使用していた怠惰アウトのために、行われるすべての作業は、私はちょうど)オンデマンドルールとアラームができる有効にする必要があります。
デフォルトのZabbixのパフォーマンスデータのみ平均レイテンシは、データが許可されていない平均化され、自分自身に次のディスクIOPSレイテンシを見たいと思って、Zabbixは私が少し後退、Windowsパフォーマンスカウンタの構文の下に見えました。すべてのパフォーマンスカウンタとデジタル表現CounterCategory CounterName。
ディスク関連の統計のみの転送速度、および平均待ち時間が付属しています。
あなたは追加のパフォーマンスカウンタを監視する場合は、それらの名前はどのような役割、何ですか?クイック検索のリストがありますかどうか?
外科医は解決します
幸いなことに、PowerShellの書き込みがよりスムーズに、文法ZABBIXのパフォーマンスカウンタの統合を次の関数を書きました。
function Get-PerfCounterDesc{
[cmdletbinding()]
param(
[switch]$show
)
$Categories = [System.Diagnostics.PerformanceCounterCategory]::GetCategories()
$SingleInstanceCategories = $Categories | Where-Object {$_.CategoryType -eq "SingleInstance"}
$MultiInstanceCategories = $Categories| Where-Object {$_.CategoryType -eq "MultiInstance"}
$SingleInstanceCounters = $SingleInstanceCategories | ForEach-Object {
(new-object System.Diagnostics.PerformanceCounterCategory($_.CategoryName)).GetCounters()
}
$MultiInstanceCounters = $MultiInstanceCategories | ForEach-Object {
$category=new-object System.Diagnostics.PerformanceCounterCategory($_.CategoryName)
if($category.InstanceExists('_Total')){
$category.GetCounters('_Total')
}elseif($category.InstanceExists('Total')){
$category.GetCounters('Total')
}else{
$instanceNames=$category.GetInstanceNames()
if($instanceNames.count -gt 0){
$category.GetCounters($instanceNames[0])
}
}
}
$AllCounters = $MultiInstanceCounters + $SingleInstanceCounters
$key="HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009"
$counters=Get-ItemPropertyValue -Path $key -Name "counter"
$Dict=@{}
for ($i=0;$i -lt $counters.count;$i=$i+2){
if($counters[$i+1] -and -not $Dict.ContainsKey($counters[$i+1])){
$Dict.add($counters[$i+1],$counters[$i])
}
}
Write-Debug $dict.keys.count
$result=$AllCounters | Sort-Object Categoryname,Countername|
Select-Object CategoryName,
Countername,
@{n="zabbixPerfCounter";e={'perf_counter["\{0}({{#ReplaceThis}})\{1}"]' -f $dict[$_.CategoryName],$dict[$_.Countername]}},
@{n="categoryNum";e={$Dict[$_.CategoryName]}},
@{n="CounterNum";e={$Dict[$_.Countername]}},
CategoryHelp,
CounterHelp
if($show){
$result|Out-GridView
}else{
$result
}
}
どのようにそれを使用するには?上記の機能は、直接であるPowerShellの、PowerShellコンソールの個々のプロファイルに追加されnotepad $profile
、その後、そこに内容を貼り付け保存し、設定するには、set-executionpolicy remotesigned
非署名したカスタムスクリプトを実行することが可能できるようにします。
新しいPowerShellの、直接ノックのでGet-PerfCounterDesc -show
、結果は各種フィルターかもしれません。zabbixPerfCounterカラムをZABBIXに使用される、請求{#replaceThis}カウンタのインスタンス名を置き換えることであるキーを生成。たとえば、_Totalため。
それから私は、ディスクIOPSとレイテンシを表示するには、次のカウンタZABBIXのテンプレートを追加しました
アイテムのプロトタイプ
アイテム
また、あなたは、対応する変更Grafanaが必要
##は、リソースおよび参照が付属しています