Zabbix 에서 윈도 성능 모니터링 방법

배경 정보
최근 에 windows 성능 에 관 한 책 을 다시 읽 고 있 습 니 다.저 처럼 원래 SCOM 모니터링 을 사용 하 던 게으름뱅이 에 게 Zabbix 에 있 는 windows OS template 의 템 플 릿 은 정말 부족 합 니 다.왜냐하면 예전 에 SCOM 모니터링 백(마이크로소프트 에서 나 온 것 으로 모든 일 을 했 습 니 다.저 는 규칙 과 경고 만 사용 하면 됩 니 다).
기본 적 인 Zabbix 성능 데 이 터 는 Avg Latency 만 있 고 평균 데이터 도 정확 하지 않 습 니 다.디스크 의 Latency 와 IOPS 를 보고 싶 습 니 다.zabbix 에서 windows performance Counter 의 문법 을 보고 약간 움 츠 러 들 었 습 니 다.모두 숫자 로 표 시 된 성능 카운터 의 CounterCategory 와 CounterName 입 니 다.
자체 디스크 와 관련 된 통 계 는 전송 속도 와 평균 지연 만 있다.

Zabbix 에서 Windows 성능 모니터링
다른 성능 계수 기 를 감시 하려 면 이름 이 무엇 이 며 역할 은 무엇 입 니까?빠 른 검색 이 가능 한 목록 이 있 습 니까?
칼 을 써 서 해결 하 다
다행히 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-perf Counter Desc-show 를 직접 두 드 리 면 결 과 를 여러 가지 걸 러 낼 수 있 습 니 다.그 중에서 zabbix PerfCounter 열 은 생 성 된 zabbix 에서 사용 하 는 key 입 니 다.그 중의{\#replace This}은 계수기 의 인 스 턴 스 이름 으로 바 꾸 십시오.예 를 들 면total.

그리고 저 는 zabbix 템 플 릿 에 디스크 IOPS 와 Latency 를 표시 하기 위해 아래 계산 기 를 추 가 했 습 니 다.
item prototype

items

그 라 파 나 변경 사항 이 필요 합 니 다.

총결산
위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 Zabbix 의 윈도 성능 모니터링 방법 입 니 다.여러분 께 도움 이 되 셨 으 면 합 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기