Monitoring/Prometheus

Windows 서버에 windows_exporter & wmi_exporter 설치 방법

박쿠리 2025. 4. 28. 21:25

Windows 서버에 windows_exporter 설치 방법

MSI 설치 -> 서비스 확인 -> 포트 오픈 -> Prometheus 등록

 

1. windows_exporter 다운로드

  1. 공식 GitHub 페이지 접속:
  2. 최신 버전(zip 파일 또는 msi 설치 파일)을 다운로드한다.
    • 보통 .msi 파일이 편하다 (windows_exporter-*.msi)

2. windows_exporter 설치

MSI 파일 설치 방법

  1. 다운로드한 .msi 파일 더블 클릭
  2. 설치 마법사 실행
  3. 설치 옵션 확인:
    • 설치 경로(Default: C:\Program Files\windows_exporter\)
    • 기본 포트(9182) 사용
  4. 설치 완료

(설치가 끝나면 자동으로 Windows 서비스로 등록되고, 실행된다.)

 

3. 서비스 정상 실행 확인

  1. Windows 서비스(services.msc) 들어간다.
  2. windows_exporter라는 서비스가 Running(실행 중)인지 확인한다.

또는 PowerShell에서 확인:

Get-Service windows_exporter

 

상태가 Running이면 정상.

 

4. 방화벽 포트 열기 (선택사항)

기본 포트 9182를 외부에서 접근할 수 있도록 열어야 한다.

PowerShell 명령어:

New-NetFirewallRule -DisplayName "Allow windows_exporter 9182" -Direction Inbound -Protocol TCP -LocalPort 9182 -Action Allow

 

5. 동작 테스트

서버에서 바로 접속 테스트:

curl http://localhost:9182/metrics

메트릭스 텍스트가 쭉 나오면 정상 설치된 거다.

 

6. Prometheus에 windows_exporter 타겟 추가

Prometheus 설정 파일(prometheus.yml)에 아래 블록 추가:

- job_name: 'windows_exporter'
  static_configs:
    - targets: ['서버IP:9182']
  • 서버IP는 windows_exporter가 설치된 서버 IP로 바꿔야 한다.

Prometheus 재시작 후 정상 스크래핑 여부 확인.

 

 


IIS 서비스 활성화를 확인하기 위해 wmi_exporter 도 따로 추가할 예정

 

wmi_exporter 설치 방법

 

1. wmi_exporter 다운로드

  1. 공식 GitHub 릴리즈 페이지 접속
  2. wmi_exporter-0.7.0-amd64.msi 다운로드
  3. 다운로드한 .msi 파일 더블클릭 → 설치
  4. 설치 옵션
    • 설치 경로: 기본값 (C:\Program Files\wmi_exporter\)
    • 포트: 9183번으로 바꿔야 한다 (windows_exporter는 9182 쓰고 있으니까)

2. 포트 다르게 해서 windows exporter 와 동시에 실행

wmi_exporter 포트를 9183으로 지정해서 설치 후, 서비스 수정

PowerShell 관리자 권한으로:

sc stop wmi_exporter
sc config wmi_exporter binPath= "\"C:\Program Files\wmi_exporter\wmi_exporter.exe\" --telemetry.addr=:9183 --collectors.enabled=service"
sc start wmi_exporter

 

  • --telemetry.addr=:9183 → 9183 포트로 띄움
  • --collectors.enabled=service → 서비스 상태만 수집하도록 collector 설정
  • 즉, wmi_exporter는 서비스 상태만 가져오게 제한함. (IIS 서비스만 볼 거니까.)

서버에서 포트 개방 방법 (Windows 기준)

PowerShell 관리자 권한으로 실행:

New-NetFirewallRule -DisplayName "Allow wmi_exporter 9183" -Direction Inbound -Protocol TCP -LocalPort 9183 -Action Allow

 

  • 9183 포트만 추가로 열어주면 된다.
  • Hiware 접속이든 RDP 접속이든 포트 개방은 서버 방화벽 설정 기준이라 무조건 필요
  • 만약 회사 네트워크 방화벽(외부-내부 사이 방화벽)이 또 존재하면
     네트워크팀에도 요청해서 9183 인바운드 허용해달라고 해야 한다.

 

3. Prometheus 타겟 등록 (9183 포트로)

prometheus.yml에 타겟 추가:

- job_name: 'wmi_exporter_service'
  static_configs:
    - targets: ['서버IP:9183']

 

기존 windows_exporter(9182)랑 따로 등록해야 한다.

 

4. Prometheus 쿼리로 IIS 서비스 상태 체크

wmi_exporter는 아래 메트릭을 제공한다:

wmi_service_status{service="W3SVC"}

W3SVC = IIS의 핵심 서비스 이름 (World Wide Web Publishing Service)

 

값 해석:

  • wmi_service_status{service="W3SVC"} == 1 → 살아있음
  • wmi_service_status{service="W3SVC"} == 0 → 죽음
반응형