Zabbix를 통해 시스템 모니터링을 진행하며 다양한 매개변수를 통해 서버의 상태를 체크하고 알림을 설정할 수 있습니다.
특정 프로세스(Svc50_x64)의 메모리 사용량을 Zabbix로 체크하는 방법에 대해 설명하겠습니다.
- Batch와 PowerShell 파일 조합 사용
- 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 파일의 작동 방식
- tasklist 명령어로 Svc50_x64 서비스의 메모리 사용량을 가져옵니다.
- 해당 값을 1.txt 파일에 저장합니다.
- PowerShell 스크립트를 호출하여 파일의 메모리 값을 읽고 정수형으로 변환합니다.
- 마지막으로 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.txt 파일에서 메모리 사용량을 읽습니다.
- 해당 값을 정수형으로 변환하여 출력합니다.
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 파일의 작동 방식
- tasklist 명령어로 Svc50_x64 서비스의 메모리 사용량을 MEM 변수에 저장합니다.
- MEM 값을 1.txt 파일에 저장합니다.
- PowerShell의 Get-Content 명령을 사용하여 파일의 내용을 읽고 정수형으로 변환하여 MEM_VALUE 변수에 저장합니다.
- 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 키를 통해 특정 프로세스의 메모리 사용량을 모니터링할 수 있습니다.
'Monitoring Tools' 카테고리의 다른 글
Monitoring Tools - Zabbix_get 사용법 및 활용 가이드 (0) | 2024.11.07 |
---|---|
Monitoring Tools - Zabbix로 윈도우 암호 만료일 7일 전 알림 설정방법 (0) | 2024.11.06 |
Monitoring Tools - Zabbix 웹 시나리오를 통해 웹 사이트 모니터링하기 (4) | 2024.10.30 |
Monitoring Tools - Zabbix 프록시 설치 및 설정 방법 (0) | 2024.10.22 |
Monitoring Tools - Zabbix 로그 파일 모니터링 설정 시 "Accessible only as active check" 에러 해결 방법 (0) | 2024.10.15 |