자빅스 윈도우 CPU/GPU 온도 모니터링 설정 하기 (zabbix windows cpu/gpu temperature)
자빅스로 윈도우 CPU/GPU 온도 모니터링 설정하는 방법 입니다. 이 방법에는 Python39 + WMI + OpenHardwareMonitor를 같이 사용 됩니다.
※ 해당 모니터링 설정은 자빅스 버전에 영향을 받지 않습니다. 단, 설정 방법 또는 트리거 문법 차이 등이 있을 수 있으니 이 부분은 버전에 맞게 수정하여 사용하시면 됩니다.
1-1. 사전 작업 (Agent Server)
C드라이브에 zabbix 폴더를 생성하신 후 아래 링크를 참고하여 Python39 + WMI + OpenHardwareMonitor를 설치하고 3-3 코드를 참고하여 C:\zabbix\script\temperature.pyw 으로 저장 해주세요.
파이썬으로 윈도우 CPU/GPU 온도 가져오기 : https://nirsa.tistory.com/327
※ 백그라운드 실행을 위해 pyw 확장자로 진행 합니다. py 확장자로 할 경우 프롬프트가 매번 깜빡이는 현상이 발생하니 참고 해주세요.
1-2. 사전 작업 (Agent Server)
※ 자빅스 에이전트 버전은 영향이 없을것으로 보이며 이미 에이전트가 설치된 경우 이 과정은 패스 하셔도 됩니다. 자빅스 호스트 등록까지 작성하면 글이 너무 길어져버리기 때문에 생략 합니다.
에이전트를 설치할 윈도우 서버에서 https://cdn.zabbix.com/zabbix/binaries/stable/5.4/5.4.1/zabbix_agent-5.4.1-windows-amd64-openssl.zip 에 접속하여 에이전트 파일을 다운로드 받습니다.
C:\zabbix 폴더에 압축풀기를 하신 후 C:\zabbix\conf\zabbix_agentd_conf 파일을 열어 아래 부분들만 설정 후 저장 해주세요.
Server=[자빅스 서버IP]
ServerActive=[자빅스 서버IP]
Hostname=[에이전트(윈도우) 서버 호스트명]
cmd 관리자 권한으로 실행하시고 아래 명령어를 입력 해주세요.
c:\zabbix\bin\zabbix_agentd.exe --config c:\zabbix\conf\zabbix_agentd.conf --install
c:\zabbix\bin\zabbix_agentd.exe --config c:\zabbix\conf\zabbix_agentd.conf --start
2. 방화벽 설정 (Agent Server)
윈도우 방화벽을 사용중일 경우 Ctrl+R → control firewall.cpl → 고급 설정 → 인바운드 규칙 → 새 규칙 → 포트 체크 → 특정 로컬 포트에 10050 입력 후 쭉 다음을 클릭해 10050 포트를 오픈 해주세요.
3. 스케줄러 설정 (Agent Server)
매 분마다 temperature.pyw 파일을 실행시켜 CPU/GPU 온도를 파일로 떨궈주어야 합니다. (파이썬을 사용하실줄 알 경우 따로 코드 작성하여 진행 하셔도 무방 합니다.)
Ctrl+R → taskchd.msc → 좌측 작업 스케줄러 라이브러리 → 좌측 폴더 Microsoft → 좌측 폴더 Windows → 우측 메뉴의 새 폴더 (폴더명 Zabbix로 생성) → 좌측 Zabbix
※ 작업 스케줄러 경로는 다르게 하셔도 무방 합니다.
이제 zabbix 폴더를 클릭하고 우측의 작업 만들기를 눌러 주세요.
사용자를 system으로 입력 후 이름 확인을 눌러 한번 체크 해주시고 확인을 눌러 저장 합니다.
트리거를 생성 합니다. 매 1분마다 실행시키기 위해 아래와 같이 설정을 진행 해주세요.
이제 tempertature.pyw 파일을 실행시키기 위한 동작을 설정 합니다. 아래와 같이 작성하되 [YOUR USER NAME] 부분은 사용중인 윈도우 사용자 계정에 맞게 수정 해주어야 합니다.
# 프로그램/스크립트
C:\Users\[YOUR USER NAME]\AppData\Local\Programs\Python\Python39\pythonw.exe
# 인수 추가(옵션)
C:\Zabbix\script\temperature.pyw
이제 스케줄러가 동작하기 시작하면 매 1분마다 C:\zabbix 경로에 아래와 같이 CPU/GPU 온도가 들어가 있는 파일을 떨궈줍니다.
4. 자빅스 아이템 및 트리거 설정
템플릿은 Configuration → Templates → Create template 에서 임의의 이름으로 생성 해주신 후(저의 경우 temperature) 템플릿을 보면 Items가 있는데 이것을 클릭하여 눌러 이동하시고 우측 상단의 Create item 클릭하신 후 아래와 같이 값을 채워 넣어 주세요.
마찬가지로 Triggers로 이동 후 Create trigger를 클릭한 후 아래와 같이 채워 줍니다. 아래 트리거 설정은 최근 5개의 값중 90이 넘어가는 값(온도)이 2개를 초과하여 발생할 경우 Disater 등급의 트리거를 발생 시킵니다.
※ /temperature/ 부분은 임의로 생성한 템플릿명에 맞춰 수정 해주세요.
## 최근 5분간 온도가 90~99도를 2번 초과하여 발생할 경우
count(/temperature/log[C:\zabbix\temperature_CPU0.txt,,,,skip],#5,"regexp","9[0-9]")>2
## 최근 3분간 온도가 90~99도를 1번 초과하여 발생할 경우
count(/temperature/log[C:\zabbix\temperature_CPU0.txt,,,,skip],#3,"regexp","9[0-9]")>1
## 최근 3분간 온도가 80~89도를 1번 초과하여 발생할 경우
count(/temperature/log[C:\zabbix\temperature_CPU0.txt,,,,skip],#3,"regexp","8[0-9]")>1
5. 기타
이후 테스트는 temperature 파일의 내용을 90도 등으로 변경하여 테스트하고 트리거가 발생 하는지 확인 해보시면 됩니다.
또한 하나의 파일에 텍스트가 너무 많이 쌓이는것을 방지하기 위해 logs 폴더를 만든 후 아래 내용을 윈도우 배치 파일로 만들고 스케줄러에 등록하여 특정 기간마다 비우도록 할 수 있습니다. 또는 파이썬 등 다른 방법을 통해 진행할 수 있으니, 편하신것을 선택하여 활용하면 될 것 같습니다.
move C:\zabbix\temperature_CPU0.txt C:\zabbix\logs\temperature_CPU0_%date%.txt
move C:\zabbix\temperature_CPU1.txt C:\zabbix\logs\temperature_CPU1_%date%.txt
move C:\zabbix\temperature_CPU2.txt C:\zabbix\logs\temperature_CPU2_%date%.txt
move C:\zabbix\temperature_CPU3.txt C:\zabbix\logs\temperature_CPU3_%date%.txt
move C:\zabbix\temperature_GPU0.txt C:\zabbix\logs\temperature_GPU0_%date%.txt
move C:\zabbix\temperature_GPU1.txt C:\zabbix\logs\temperature_GPU1_%date%.txt