본문 바로가기

Monitoring Tools

Monitoring Tools - Zabbix로 Windows Server 메모리 사용량 체크하기

728x90

Zabbix를 통해 시스템 모니터링을 진행하며 다양한 매개변수를 통해 서버의 상태를 체크하고 알림을 설정할 수 있습니다.

특정 프로세스(Svc50_x64)의 메모리 사용량을 Zabbix로 체크하는 방법에 대해 설명하겠습니다.

  1. Batch와 PowerShell 파일 조합 사용
  2. Batch 파일 하나로만 구성

각 방법을 통해 어떻게 메모리 사용량을 모니터링할 수 있는지 알아보겠습니다.


방법 1: Batch와 PowerShell 파일 조합 사용

먼저, batch 파일과 PowerShell 파일을 조합하여 특정 프로세스의 메모리 사용량을 체크하는 방법입니다.

1. checkmem.bat 파일 작성

checkmem.bat 파일은 tasklist 명령어를 통해 Svc50_x64 서비스의 메모리 사용량을 가져온 후, 임시 파일(1.txt)로 저장합니다. 이후 PowerShell 스크립트를 실행하여 정수형으로 변환된 메모리 값을 출력합니다.

@echo off

for /f "tokens=5" %%m in ('tasklist /FI "SERVICES eq Svc50_x64"') do (set MEM=%%m)

echo %MEM% > 1.txt

powershell.exe -executionpolicy remotesigned -File "C:\Program Files\Zabbix Agent\convert.ps1"

del 1.txt

위 checkmem.bat 파일의 작동 방식

  1. tasklist 명령어로 Svc50_x64 서비스의 메모리 사용량을 가져옵니다.
  2. 해당 값을 1.txt 파일에 저장합니다.
  3. PowerShell 스크립트를 호출하여 파일의 메모리 값을 읽고 정수형으로 변환합니다.
  4. 마지막으로 1.txt 파일을 삭제하여 깔끔하게 정리합니다.

2. convert.ps1 파일 작성

convert.ps1 파일은 1.txt 파일의 내용을 읽고, 정수형으로 변환하여 출력하는 기능을 합니다.

$a = Get-Content "C:\Program Files\Zabbix Agent\1.txt"
$a = $a -as [int]
echo $a

위 convert.ps1 파일의 작동 방식

  1. 1.txt 파일에서 메모리 사용량을 읽습니다.
  2. 해당 값을 정수형으로 변환하여 출력합니다.

3. UserParameter 설정

userparameter.conf 파일에서 checkmem.bat 파일을 실행할 수 있도록 다음 설정을 추가합니다

UserParameter=memcheck,"C:\Program Files\Zabbix Agent\checkmem.bat"

추가 후 Zabbix_Agent 재기동 해야 적용 됨

 


방법 2: Batch 파일 하나로만 구성

Batch 파일 하나로도 위의 작업을 수행할 수 있습니다. convert.ps1을 따로 작성하지 않고, Batch 파일 내에서 PowerShell 명령을 호출하여 텍스트 파일의 값을 변환하도록 만들었습니다.

checkmem.bat 파일

아래와 같이 Batch 파일 하나로 구성하여 PowerShell 없이 작업을 처리할 수 있습니다.

@echo off

REM 특정 서비스의 메모리 사용량을 변수로 가져오기
for /f "tokens=5" %%m in ('tasklist /FI "SERVICES eq Svc50_x64"') do (set MEM=%%m)

REM MEM 변수를 파일에 저장
echo %MEM% > "C:\Program Files\Zabbix Agent\1.txt"

REM PowerShell을 사용하여 파일에서 메모리 값을 읽고 정수형으로 변환 후 출력
for /f %%i in ('powershell -command "Get-Content 'C:\Program Files\Zabbix Agent\1.txt' -as [int]"') do set MEM_VALUE=%%i

echo %MEM_VALUE%

REM 임시 파일 삭제
del "C:\Program Files\Zabbix Agent\1.txt"

위 Batch 파일의 작동 방식

  1. tasklist 명령어로 Svc50_x64 서비스의 메모리 사용량을 MEM 변수에 저장합니다.
  2. MEM 값을 1.txt 파일에 저장합니다.
  3. PowerShell의 Get-Content 명령을 사용하여 파일의 내용을 읽고 정수형으로 변환하여 MEM_VALUE 변수에 저장합니다.
  4. MEM_VALUE 값을 출력하고, 1.txt 파일을 삭제합니다.

UserParameter 설정

위와 동일하게 userparameter.conf 파일에서 Batch 파일을 호출할 수 있도록 설정합니다

UserParameter=memcheck,"C:\Program Files\Zabbix Agent\checkmem.bat"

추가 후 Zabbix_Agent 재기동 해야 적용 됨


Zabbix 모니터링 설정 방법 (Batch + PowerShell 기준)

1. 아이템 생성

키 값에 userparameter.conf에 등록한 값으로 맞춰줘야 함.

 

2. 트리거 생성

조건식에 어느 정도 이상일 시 장애 알림 보낼지 설정.

(최근데이터 확인 해보면 알겠으나 조건식의 체크 값은 18M -> 서버 실제값은 18G 혼동 주의!!)

 

3. 최근데이터 확인

 

 

이제 Zabbix에서 memcheck 키를 통해 특정 프로세스의 메모리 사용량을 모니터링할 수 있습니다.

728x90
반응형