반응형
자빅스 윈도우 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
반응형
반응형
자빅스 5.4 로그 파일 모니터링 트리거 설정 (zabbix 5.4 log file monitoring trigger example)

자빅스 로그 파일 모니터링 트리거 설정 방법 입니다. 아이템 설정의 경우 자빅스 버전 차이가 크게 없기 때문에 아래 링크로 대신 합니다. (아래 링크의 어플리케이션 부분은 생략하셔도 무관 합니다.)

(참고) 자빅스 로그 파일 아이템 설정 : https://nirsa.tistory.com/205?category=868727

(참고) 자빅스 로그 파일 모니터링 트리거 설정 : https://nirsa.tistory.com/210

 

정확하게 몇버전부터 적용된지는 모르겠으나 아래와 같이 5점대 부터 자빅스 트리거 설정의 문법이 변경 되었습니다. 

  • 자빅스 4점대 트리거 문법 예시 : {템플릿명:아이템값.트리거기능("")}
  • 자빅스 5점대 트리거 문법 예시 : 트리거기능(/템플릿명/아이템값,"")

 

자빅스 5.4 트리거 샘플을 보면 아래와 같습니다.

count(/test_template/log[/var/log/test.log,,,,skip],#5,"regexp","1[0-9]")>2
  • 사용한 트리거 기능 : count
  • 템플릿 이름 : test_template
  • 아이템 : log[/var/log/test.log,,,,skip]
  • 트리거 파라메타 : 최근 5개의 값(#5), 정규 표현식을 사용("regexp"), 10~19의 값("1[0-9]")이 2를 초과할 경우 트리거 발생

 

자빅스 5.2 트리거 매뉴얼 : https://www.zabbix.com/documentation/5.2/manual/appendix/triggers/functions

자빅스 5.4 트리거 매뉴얼 : https://www.zabbix.com/documentation/current/manual/appendix/functions

반응형
반응형
파이썬으로 윈도우 CPU/GPU 온도 가져오기 (Python get cpu temperature windows 10)

파이썬으로 윈도우 CPU/GPU 온도 가져오는 방법 입니다. 파이썬 3.9가 설치되어있는 환경을 기준으로 설명을 진행 합니다.

 

1. wmi 설치

아래 명령어를 사용해 wmi 모듈을 설치 해주세요.

pip install wmi

 

2. Open Hardware Monitor 설치

윈도우의 CPU/GPU 온도를 가져오기 위해 Open Hardware Monitor를 설치 해주어야 합니다. 아래 링크에서 설치 후 OpenHardwareMonitor.exe를 실행 해주세요.

다운로드 링크 : https://openhardwaremonitor.org/downloads/

* 재부팅 시 자동 실행이 안될 수 있으므로 Ctrl+R → shell:startup → 해당 폴더에 OpenHardwareMonitor.exe 파일 복사 붙여넣기 해주셔야 합니다.

 

3-1. CPU/GPU 온도 출력하기
import wmi

result=[]

w = wmi.WMI(namespace="root\OpenHardwareMonitor")
temperature_infos = w.Sensor()
for sensor in temperature_infos:
    if sensor.SensorType=='Temperature':
        temperature=(sensor.Name, sensor.Value)        
        if temperature[0].startswith("CPU"):            
        	result.append(temperature)
        elif temperature[0].startswith("GPU"):
            result.append(temperature)
print(result)

 

3-2. CPU/GPU 온도를 하나의 파일에 저장하기

아래 경로만 수정 해주시면 됩니다.

import wmi

w = wmi.WMI(namespace="root\OpenHardwareMonitor")
temperature_infos = w.Sensor()
for sensor in temperature_infos:
    if sensor.SensorType=='Temperature':
        temperature=(sensor.Name, sensor.Value)
        if temperature[0].startswith("CPU"):
            with open(r'D:\\Zabbix\temperature_CPU.txt', 'a') as file:
                file.write(str(temperature))
                file.write("\n")
        elif temperature[0].startswith("GPU"):
            result.append(temperature)
            with open(r'D:\\Zabbix\temperature_GPU.txt', 'a') as file:
                file.write(str(temperature))
                file.write("\n")

 

3-3. CPU/GPU 온도를 여러개의 파일로 저장하기 

아래 경로만 수정 해주시면 됩니다.

import wmi

cpu_count=0
gpu_count=0

w = wmi.WMI(namespace="root\OpenHardwareMonitor")
temperature_infos = w.Sensor()
for sensor in temperature_infos:
    if sensor.SensorType=='Temperature':
        temperature=(sensor.Name, sensor.Value)
        if temperature[0].startswith("CPU"):
            with open(r'D:\\Zabbix\temperature_CPU' + str(cpu_count) + '.txt', 'a') as file:
                file.write(str(temperature))
                file.write("\n")
                cpu_count+=1
        elif temperature[0].startswith("GPU"):
            result.append(temperature)
            with open(r'D:\\Zabbix\temperature_GPU' + str(gpu_count) + '.txt', 'a') as file:
                file.write(str(temperature))
                file.write("\n")
                gpu_count+=1

실행 결과

 

반응형
반응형
윈도우 10 파일 탐색기 "응답 없음" 해결 방법

윈도우 10 파일 탐색기 "응답 없음" 해결 방법 입니다. 다양한 케이스가 있겠지만, 저의 경우 시스템 파일 손상으로 인해 발생하여 아래 절차를 통해 시스템 파일 복원 후 정상적으로 작동 하였습니다.

 

1. 윈도우 업데이트

진행되지 않은 업데이트 파일을 다운로드 및 설치 진행 했고 재부팅까지는 진행하지 않았습니다. (아래 절차에서 재부팅 필요)

 

2. 시스템 복원

cmd를 관리자 권한으로 실행시킨 뒤 아래 명령어를 입력 해주세요. DISM 명령어는 윈도우에 내장되어있는 프로그램이기 때문에 별도로 설치를 하실 필요는 없습니다. 또한 시스템 파일 복원을 도와주는 프로그램이기 때문에 별도의 데이터 손실은 없을것으로 보입니다. (저의 경우 데이터 손실등의 피해는 발생하지 않았습니다.)

DISM.exe /Online /Cleanup-image /Restorehealth

 

3. 재부팅

 

4. 시스템 검사 (이 과정까지는 필요하지 않을 수 있습니다.)

cmd를 관리자 권한으로 실행시킨 뒤 아래 명령어를 입력 해주세요. 

sfc /scannow

 

5. 파일 탐색기 동작 테스트

시스템 파일 복원 과정은 모두 끝났으므로 파일 탐색기를 열어 잘 동작 하는지 테스트를 진행 하시면 됩니다. 

반응형

+ Recent posts