본문 바로가기

서버 리뷰/홈 서버

[완벽 가이드] 8845HS 미니 PC 홈랩 구축 및 통합 보안 관제 시스템 (2부: Checkmk 기반 홈랩 통합 관제 및 텔레그램 보안 알림 시스템 구축)

728x90
반응형

본 가이드는 고성능 미니 PC(AMD Ryzen 7 8845HS, 64GB RAM) 환경에서 Checkmk를 활용하여 윈도우 호스트의 보안 상태를 모니터링하고, 장애 발생 시 실시간으로 텔레그램 알림을 수신하는 전 과정을 다룹니다.

1. 개요 및 환경 구성

  • 하드웨어: GMKtec NucBox K8 Plus (8845HS, 64GB RAM)
  • 가상화 플랫폼: VMware ESXi / Workstation
  • 관제 대상: Windows 11 호스트 (F12-Win11)
  • 모니터링 도구: Checkmk (Raw/Free Edition)

2. 윈도우 호스트 모니터링 에이전트 설치

관제탑(Checkmk 서버)이 윈도우 내부 데이터를 수집하기 위해 전용 에이전트를 설치합니다.

  1. 에이전트 다운로드: Checkmk 웹 인터페이스의 [Setup] > [Agents] > [Windows] 메뉴에서 check_mk_agent.msi를 다운로드합니다.

  2. 설치 및 서비스 확인: 대상 윈도우 PC에서 설치를 진행한 후, services.msc 실행 창에서 CheckMk Service가 실행 중인지 확인합니다.

  3. 방화벽 포트 개방: 에이전트 기본 통신 포트인 TCP 6556번을 허용합니다. (PowerShell 관리자 권한)

  4. PowerShell

    New-NetFirewallRule -DisplayName "Checkmk Agent" -Direction Inbound -LocalPort 6556 -Protocol TCP -Action Allow

3. 호스트 등록 및 생존 확인(ICMP) 우회 설정

윈도우 방화벽이 Ping(ICMP)을 차단할 경우 호스트가 'DOWN'으로 표시됩니다. 이를 해결하기 위해 에이전트 통신을 기준으로 생존 여부를 판단하도록 설정합니다.

  1. 호스트 추가: [Setup] > [Hosts] > [Add host]에서 호스트명(F12-Win11)과 IP 주소를 입력합니다.
  2. 호스트 체크 명령 변경:
    • [Setup] > [Host monitoring rules] > [Host check command] 검색.
    • [Add rule] 클릭 후 Use the status of the Checkmk Agent 옵션 선택.
    • Explicit hosts 항목에 해당 호스트명(F12-Win11) 지정 후 저장.
  3. 변경 사항 반영: 오른쪽 상단의 황색 아이콘(Changes) 클릭 후 [Activate on selected sites] 실행.

4. 서비스 탐색 및 지표 등록 (Service Discovery)

에이전트가 전송하는 상세 지표(CPU, 메모리, 보안 패치 등)를 관제 항목으로 확정합니다.

  1. Service Discovery 실행: 호스트 설정 화면에서 돋보기 아이콘을 클릭합니다.
  2. 지표 승인: 검색된 항목 중 Windows Updates, WMI CPU load, Memory 등을 확인합니다.
  3. 일괄 등록: [Fix all] 또는 [Accept all] 버튼을 눌러 미결정(Undecided) 상태의 서비스들을 정식 모니터링 대상으로 등록합니다.

5. 텔레그램 연동용 커스텀 스크립트 작성

Checkmk 기본 메뉴에 텔레그램이 없는 경우, 파이썬 스크립트를 수동으로 배치하여 알림 기능을 확장합니다.

  1. 사이트 관리자 계정 전환: 터미널 접속 후 명령어를 실행합니다.

  2. Bash

    sudo omd su [사이트이름]
    cd ~/local/share/check_mk/notifications/
  3. 스크립트 파일 생성 (telegram_alert.py):

  4. Python

    #!/usr/bin/env python3
    import os
    import requests
    import sys
    
    def main():
        # Checkmk 알림 규칙에서 전달받는 파라미터
        token = os.environ.get("NOTIFY_PARAMETER_1")
        chat_id = os.environ.get("NOTIFY_PARAMETER_2")
    
        # 전송 데이터 구성
        host = os.environ.get("NOTIFY_HOSTNAME", "Unknown Host")
        service = os.environ.get("NOTIFY_SERVICEDESC", "Host Check")
        svc_state = os.environ.get("NOTIFY_SERVICESTATE", "UNKNOWN")
        output = os.environ.get("NOTIFY_SERVICEOUTPUT", "No output")
    
        message = f"[Checkmk SOC Alert]\nHost: {host}\nService: {service}\nState: {svc_state}\nInfo: {output}"
        url = f"https://api.telegram.org/bot{token}/sendMessage"
    
        try:
            requests.post(url, data={"chat_id": chat_id, "text": message}, timeout=10)
        except Exception as e:
            sys.stderr.write(f"Telegram Error: {e}\n")
    
    if __name__ == "__main__":
        main()
  5. 실행 권한 부여: chmod +x telegram_alert.py

6. 실시간 알림 규칙 설정

  1. 규칙 생성: [Setup] > [Events] > [Notifications] > [Add rule] 클릭.
  2. 알림 방법 선택: Notification Method에서 방금 생성한 telegram_alert.py를 선택합니다.
  3. 파라미터 입력:
    • Parameter 1: 텔레그램 @BotFather로부터 발급받은 API Token 입력.
    • Parameter 2: 본인의 숫자 형태 Chat ID 입력 (예: 12345678).
  4. 조건 설정: 상태가 Critical 또는 Down으로 변할 때만 발송하도록 필터링합니다.
  5. 활성화: 'Activate Changes'를 눌러 최종 적용합니다.

7. 결과 확인 및 운영 팁

구축이 완료되면 8845HS의 하드웨어 부하 상태와 윈도우 보안 패치 누락 현황이 24시간 실시간으로 모니터링됩니다. 장애 발생 시 1분 이내로 스마트폰 텔레그램을 통해 알림이 전송되므로 빠른 대응이 가능합니다.

반응형