가이드 › MeshServerWatch

다른 언어 English · 日本語 · 한국어 · 简体中文

MeshServerWatch

Windows·Linux 서버 감시: 서버마다 에이전트, 직접 운영하는 Manager 하나 — 1.0.0

이 판에서 바뀐 것

릴리즈 노트 전체

1. Manager 설치

Manager 는 모든 에이전트가 보고하는 단 한 대입니다. 켜져 있는 서버에 한 번만 설치합니다. 런타임도 데이터베이스 서버도 없는 프로그램 하나이고, 포트 하나(8455)로 브라우저 화면과 에이전트 API 를 함께 엽니다.

받은 파일을 확인하세요. Manager 와 Agent 패키지 전부의 체크섬이 한 파일에 있습니다: MeshServerWatch-SHA256SUMS.txt

Linux:

shasum -a 256 meshserverwatch_1.0.0_amd64.deb

Windows:

Get-FileHash -Algorithm SHA256 MeshServerWatch-Manager-1.0.0-setup.exe

Windows 설치본은 Authenticode 서명과 타임스탬프가 붙어 있습니다. 인증서가 새것이라 평판이 쌓일 때까지 SmartScreen 경고가 뜰 수 있습니다 — 뜨면 More info → Run anyway 를 누르세요.

사용권 계약

Manager 와 Agent 는 사용권 계약(meshwatch.app/terms)에 동의해야 설치되고 실행됩니다. 설치 전에 읽어 두세요. 그 페이지에 있고, 설치 뒤에는 프로그램 옆에 EULA.txt 로 있으며(Linux 는 /usr/share/doc/meshserverwatch/EULA.txt, /usr/share/doc/meshserverwatch-agent/EULA.txt), meshserverwatch eula · meshserverwatch-agent eula 로 출력할 수 있습니다. 동의하는 방법: 설치 마법사의 확인란(체크할 때까지 Next 가 꺼져 있음), 무인 setup 은 /ACCEPT_EULA=1, 명령줄은 --accept-eula(터미널에서 물으면 yes 입력), 그리고 첫 관리자를 만들 때의 필수 확인란. 동의가 없으면 아무것도 설치하지 않고 종료 코드 2 로 멈춥니다. 동의는 데이터(또는 state) 폴더의 eula.json 에 기록되고, 계약 판이 바뀌면 다시 묻습니다.

Windows Server: 설치 마법사

Windows Server 2016·2019·2022, x64. MeshServerWatch-Manager-1.0.0-setup.exe 를 실행합니다(관리자 권한을 묻습니다).

  1. Welcome → Licence Agreement: I accept the terms of the licence agreement 에 체크합니다. 체크하기 전에는 Next 가 꺼져 있습니다.
  2. Settings: 포트(기본 8455)와 Allow this port through Windows Firewall(기본 체크 — 인바운드 TCP 규칙 MeshServerWatch Manager 를 추가). 업그레이드라면 지금 쓰는 포트가 채워져 있습니다.
  3. Install folder(기본 C:\Program Files\MeshServerWatch Manager) → Install. 마법사가 설정을 저장하고, 자체 서명 인증서를 만들고, Windows 서비스 MeshServerWatch 를 등록·시작합니다. 이 단계가 실패하면 프로그램의 메시지를 보여 주고 되돌립니다.
  4. Finish 에 Manager 주소(https://<컴퓨터 이름>:8455)와 인증서 지문이 나옵니다 — 선택해서 복사할 수 있고, 에이전트에 둘 다 필요합니다. Open MeshServerWatch in the browser 로 화면을 엽니다. 브라우저가 자체 서명 인증서에 대해 한 번 경고하면 계속 진행하고 첫 관리자를 만듭니다.

마법사는 프로그램 폴더를 PATH 에 넣고, 시작 메뉴 폴더(Open MeshServerWatch, MeshServerWatch Manager status, Uninstall)와 설정 > 앱 항목을 만듭니다. 설치된 Manager 위에 새 setup 을 실행하면 그 자리에서 업그레이드되고 설정과 데이터는 그대로입니다.

프로그램: C:\Program Files\MeshServerWatch Manager\meshserverwatch.exe(옆에 EULA.txt). 설정: C:\ProgramData\MeshServerWatch\Manager\manager.json. 데이터: C:\ProgramData\MeshServerWatch\Manager\data\. 로그는 응용 프로그램 이벤트 로그(원본 MeshServerWatch)와 data\logs\manager.log(5 MB × 2)에 남습니다.

Windows Server: 무인·스크립트 설치

설치 마법사는 /S 로 무인 실행됩니다. /ACCEPT_EULA=1 은 필수, /PORT= 와 /FIREWALL=0 은 선택입니다(폴더를 바꾸려면 /D=<폴더> 를 맨 끝에). 종료 코드: 0 설치됨, 2 /ACCEPT_EULA=1 없음 또는 잘못된 포트(아무것도 설치 안 함), 3 설치 단계 실패(되돌림), 4 64비트 Windows 가 아님.

MeshServerWatch-Manager-1.0.0-setup.exe /S /ACCEPT_EULA=1 /PORT=8455

Linux (deb / rpm, systemd)

Ubuntu 20.04+, Debian 11+, RHEL / Rocky / Alma 8+, amd64 또는 arm64. Debian·Ubuntu:

sudo apt install ./meshserverwatch_1.0.0_amd64.deb

RHEL·Rocky·Alma:

sudo dnf install ./meshserverwatch-1.0.0-1.x86_64.rpm

그다음 어느 쪽이든:

sudo meshserverwatch install --accept-eula

패키지가 시스템 사용자 meshserverwatch 와 유닛 meshserverwatch.service 를 만듭니다. 유닛은 NoNewPrivileges, ProtectSystem=strict, ProtectHome, 메모리 상한 512 MB 로 돌고, 쓸 수 있는 경로는 /var/lib/meshserverwatch 뿐입니다. install 은 /etc/meshserverwatch/manager.json 을 쓰고, /var/lib/meshserverwatch/manager/tls/ 에 인증서를 만들고, 서비스를 켜고 시작한 뒤 화면 주소와 지문을 출력합니다. 옵션: --port 8455, --cert /path/cert.pem --key /path/key.pem, --insecure-http, --bind ADDR, --data DIR.

--accept-eula 는 사용권 계약에 동의한다는 뜻입니다. 빼면 install 이 터미널에서 yes 입력을 묻고, 터미널이 없으면 아무것도 바꾸지 않고 종료 코드 2 로 멈춥니다. 패키지의 유닛은 run --accept-eula 로 돌므로, 유닛을 설치하거나 켜는 것은 계약에 동의하는 것입니다.

sudo systemctl status meshserverwatch
sudo journalctl -u meshserverwatch

방화벽: TCP 8455

Manager 에서 TCP 8455 인바운드를 엽니다. 보고할 서버들과, 화면을 쓸 브라우저에서 들어오는 연결입니다. 에이전트는 나가는 연결만 하므로 에이전트 쪽은 열 것이 없습니다. Windows Server:

New-NetFirewallRule -DisplayName "MeshServerWatch" -Direction Inbound -Protocol TCP -LocalPort 8455 -Action Allow

Ubuntu·Debian 의 ufw, 그다음 RHEL 계열의 firewalld:

sudo ufw allow 8455/tcp
sudo firewall-cmd --permanent --add-port=8455/tcp && sudo firewall-cmd --reload

Windows 설치 마법사는 Allow this port through Windows Firewall 을 해제하지 않는 한 이 규칙을 대신 추가합니다.

HTTPS 와 인증서 지문

처음 시작할 때 Manager 는 자체 서명 인증서를 만들고, 그 SHA-256 지문(AB:CD:…, 32쌍)을 로그에 TLS fingerprint (SHA-256): … 로 찍습니다. 언제든 다시 볼 수 있습니다:

meshserverwatch status

화면 머리글(누르면 복사)과, 발급하는 토큰마다 옆에도 나옵니다. 에이전트는 이 값으로 설치되고, 인증서가 다른 Manager 와는 말을 하지 않습니다 — 토큰을 보내기 전에 TLS 연결을 끊습니다. 인증서는 시작할 때마다 다시 쓰이므로 tls/ 폴더를 지우지 않는 한 지문은 바뀌지 않습니다.

처음 화면을 열면 브라우저가 자체 서명 인증서라고 경고합니다. 예상된 일입니다. 맞는 기계에 왔는지 확인하려면 브라우저가 보여 주는 지문을 meshserverwatch status 의 지문과 비교하세요. 경고를 없애려면 --cert·--key로 직접 준비한 인증서를 주면 되고, 그때 에이전트는 지문 대신 CA 를 신뢰할 수 있습니다. 평문 HTTP 는 리버스 프록시 뒤의 Manager 를 위한 --insecure-http 로만 있습니다.

첫 관리자

https://<manager-host>:8455 를 엽니다. 첫 화면에 No accounts yet. Create the first administrator. 가 뜹니다. 사용자 이름과 12자 이상의 비밀번호를 정합니다. 이 화면은 한 번만 나오고, 그 뒤로는 로그인을 묻습니다.

계정을 만들기 전에, 그 화면에 나오는 사용권 계약을 읽고 I have read and agree to the licence agreement 에 체크해야 합니다.

세션은 12시간이고 메모리에만 있으므로 Manager 를 다시 시작하면 모두 로그아웃됩니다. 로그인 실패는 주소·계정마다 5분에 10회로 제한됩니다. 사용자는 Settings → Users 에서 세 가지 역할로 추가합니다: admin(전부), operator(알림 확인, 설정 변경 불가), viewer(읽기만).

비밀번호를 잊으면 Manager 서버에서 직접 재설정합니다 — 일부러 네트워크로는 못 하게 했습니다. 없는 이름을 주면 계정 목록을 보여 주고, 새 비밀번호를 두 번 묻되 화면에 찍지 않으며, 그 사용자의 세션을 끊습니다:

sudo meshserverwatch reset-password admin

2. 에이전트 설치

감시할 서버마다 에이전트를 설치합니다 — Manager 서버도 감시해야 한다면 거기에도.

토큰 발급

화면에서 Agents 를 열고 라벨(예: Head office servers — 직접 짓는 이름)을 넣은 뒤 Issue token 을 누릅니다. 토큰(msw_…)이 한 번만, 두 부분으로 나옵니다. Install with the setup wizard (one server) 에는 에이전트 마법사가 묻는 세 값 — Manager address, Agent token, Certificate fingerprint — 이 줄마다 Copy 단추와 함께 있습니다. Install on many servers (silent) 에는 그 값과 /ACCEPT_EULA=1 / --accept-eula 가 이미 들어간 Windows 무인 setup 한 줄과 Linux 명령이 있습니다. Done 을 누르기 전에 필요한 것을 복사하세요. 잃어버린 토큰은 다시 볼 수 없습니다 — 새로 발급하고 옛것은 폐기합니다.

토큰 하나를 모든 서버에 써도 됩니다. Manager 는 토큰이 아니라 machine id 로 서버를 구분합니다. 한 지점·한 팀만 따로 폐기할 수 있게 하고 싶을 때만 토큰을 여러 개 발급하세요. 명령 속 주소가 서버에서 닿지 않는 주소(예: localhost)라면 Manager 의 이름이나 IP 로 바꿉니다.

명령은 감시할 서버마다 실행합니다. Manager 에서는 실행하지 않습니다(Manager 도 감시할 때만). 잘 되었다면 1분 안에 Servers 탭에 서버가 나타나고 토큰 상태가 reporting 으로 바뀝니다. 상태는 waiting(한 번도 안 쓰임), connected(에이전트 시험 성공, 아직 보낸 것 없음), reporting(수치나 알림이 도착함)입니다. 서버 쪽에서 확인하려면 meshserverwatch-agent status 를 실행합니다.

화면 없이 Manager 서버에서 (token list, token revoke <id> 도 있습니다):

sudo meshserverwatch token issue --label "Head office"

Windows 서버 한 대: 설치 마법사

Manager 를 먼저 설치합니다. 그다음 감시할 서버에서 MeshServerWatch-Agent-1.0.0-setup.exe 를 실행합니다(관리자 권한을 묻습니다).

  1. Welcome → Licence Agreement: I accept the terms of the licence agreement 에 체크합니다.
  2. Connect to your MeshServerWatch Manager: 토큰 상자의 Manager address(https://manager-host:8455), Agent token(msw_…), Certificate fingerprint 를 붙여 넣습니다. Test connection 을 누르면 이 값으로 ping 을 한 번 하고(아무것도 저장 안 함) 결과를 초록·빨강으로 보여 줍니다. 시험은 권장이지만 필수는 아니며, 세 값을 채우면 Next 가 켜집니다. Manager 가 리버스 프록시 뒤에서 평문 HTTP 로 돈다면 지문 대신 The Manager uses plain HTTP behind a reverse proxy 에 체크합니다.
  3. Manager 가 같은 컴퓨터에 설치되어 있으면 Fill in from this computer 단추가 나옵니다. 누르면 로컬 Manager 에서 토큰을 발급해 세 값을 모두 채웁니다.
  4. Install folder(기본 C:\Program Files\MeshServerWatch Agent) → Install: 설정을 저장하고 서비스 MeshServerWatchAgent 를 등록·시작합니다. 이 단계가 실패하면 프로그램의 메시지를 보여 주고 되돌립니다. 토큰 전체는 화면에 나오지 않습니다.
  5. Finish: 1분 안에 Manager 의 Servers 탭에 이 서버가 나타납니다. Show agent status 는 meshserverwatch-agent status 창을 엽니다.

마법사는 프로그램 폴더를 PATH 에 넣고, 시작 메뉴 폴더(MeshServerWatch Agent status, Uninstall)와 설정 > 앱 항목을 만듭니다. 설치된 에이전트 위에 새 setup 을 실행하면 설정을 유지한 채 업그레이드합니다 — Keep this server's current connection settings 가 체크되어 있습니다. 무인: /S /ACCEPT_EULA=1 /MANAGER=… /TOKEN=… /FINGERPRINT=…. 이미 설정된 서버에서는 /S /ACCEPT_EULA=1 만으로 업그레이드됩니다.

Windows 서버 여러 대: 무인 setup

설치 마법사는 무인으로도 돕니다. 관리자 PowerShell 이나 명령 프롬프트에서, 받은 setup 이 있는 폴더에서:

MeshServerWatch-Agent-1.0.0-setup.exe /S /ACCEPT_EULA=1 /MANAGER=https://<manager>:8455 /TOKEN=<msw_…> /FINGERPRINT=<sha256>

토큰 상자가 값을 채워 주는 바로 그 한 줄이고, GPO·RMM 배포에 넣을 것도 이것입니다. /ACCEPT_EULA=1 은 필수이며 그 서버에서 사용권 계약에 동의한다는 뜻입니다. 평문 http:// 로 접속하는 Manager 라면 /FINGERPRINT= 대신 /INSECURE_HTTP=1 을 씁니다. 종료 코드: 0 설치됨, 2 사용권 계약 동의가 없거나 값이 빠짐(아무것도 설치 안 함).

고급: 설치본 없이 쓰려면 meshserverwatch-agent.exe 를 계속 둘 폴더에 복사하고 관리자로 실행합니다:

meshserverwatch-agent install --manager https://manager.example.com:8455 --token msw_... --fingerprint AB:CD:... --accept-eula

Linux (apt / dnf)

Debian·Ubuntu — 그다음 토큰 상자의 install 줄:

sudo apt install ./meshserverwatch-agent_1.0.0_amd64.deb
sudo meshserverwatch-agent install --manager https://manager.example.com:8455 --token msw_... --fingerprint AB:CD:... --accept-eula

RHEL·Rocky·Alma:

sudo dnf install ./meshserverwatch-agent-1.0.0-1.x86_64.rpm

패키지가 시스템 사용자 meshserverwatch-agent(로그를 읽도록 systemd-journal, 있으면 adm 그룹에도 속함)와 유닛 meshserverwatch-agent.service 를 만듭니다. 유닛은 NoNewPrivileges, ProtectSystem=strict, ProtectHome, 메모리 상한 100 MB 로 돕니다. install 은 /etc/meshserverwatch/agent.json 을 쓰고 서비스를 켜고 시작합니다. 에이전트와 Manager 는 한 서버에 같이 있어도 됩니다 — 각 패키지는 /etc/meshserverwatch/ 와 /var/lib/meshserverwatch/ 안의 자기 파일만 건드립니다.

install 은 사용권 계약 동의(--accept-eula, 또는 터미널에서 물을 때 yes)를 기록한 뒤 설정을 씁니다.

확인: test 와 status

meshserverwatch-agent test

test 는 설정, Manager 의 인증서와 판, 토큰, 시계를 확인하고, 표본 하나를 모아 출력하고 보낸 뒤 Manager 의 답을 출력합니다. test --send-alert 는 info 수준 시험 알림도 하나 보내며, Alerts 탭에 나타납니다.

설치 전에 값을 확인하려면 — 마법사의 Test connection 이 하는 일 — test --no-config 를 씁니다. 준 값으로 ping 을 한 번 할 뿐 설정을 읽지도 저장하지도 않고, OK: … 또는 FAIL: … 한 줄을 출력합니다.

meshserverwatch-agent test --no-config --manager https://manager.example.com:8455 --token msw_... --fingerprint AB:CD:...
meshserverwatch-agent status

status 는 서비스 상태, 마지막으로 성공한 전송, 대기열, 오류 이벤트를 어디서 읽는지, 마지막 표본, 마지막 문제를 사람 말로 보여 줍니다. Windows 에서는 바뀐 PATH 가 잡히도록 새 관리자 프롬프트에서 실행하세요. 종료 코드: 0 정상, 1 문제 발견, 2 사용법·설정 오류, 3(status 만) 에이전트가 돌고 있지 않음.

나중에 설정 하나만 바꾸려면 그 옵션만 넣어 install 을 다시 실행합니다 — 나머지는 그대로 남습니다. --manager URL 을 새로 주면 옛 지문은 지워지므로 새 지문을 함께 주세요.

sudo meshserverwatch-agent install --interval 300

3. 서버와 그래프

Servers 탭

서버마다 한 줄: 상태, CPU 평균, 메모리, 가장 찬 디스크, 마지막 보고, OS, 에이전트 판. 상태는 ok, warning(임계값을 넘음), critical(디스크가 critical 기준 위, 또는 보고 없음), silent(그 서버 보고 간격 × silent 배수보다 오래 보고 없음), unlicensed(보고를 거절 중 — 6장), waiting(라이선스는 있으나 아직 받은 것 없음)입니다.

서버 페이지

행을 누릅니다. 위에는 OS, IP, 다른 이름, 마지막 보고와 간격, 가동 시간, CPU, 메모리, load(Linux), 에이전트 판, 처음 본 때, machine id 가 나옵니다. 아래에는 CPU(간격 평균과 최대), 메모리, 그리고 디스크마다 따로 그래프가 있고, warning·critical 선이 그려져 있습니다. 24 hours 는 모든 보고를, 7 days 는 1시간 단위로, 30 days 는 4시간 단위로 묶어 보여 줍니다. 선이 끊긴 곳은 보고가 오지 않은 곳입니다 — 받지 않은 점을 그리지 않습니다. 그래프에 마우스를 올리거나 눌러 값을 읽습니다. 그 아래에 그 서버의 최근 알림 20개, 적용 중인 임계값, Remove server 가 있습니다.

Overview 와 Alerts

Overview 는 상태별 서버 수, 최근 24시간 알림의 심각도별·시간별 분포, 가장 시끄러운 서버, 라이선스 줄, 최근 알림을 보여 줍니다. Alerts 는 모든 알림을 심각도·출처(agent 또는 thresholds)·서버·상태로 거르고, Acknowledge 는 누가 언제 확인했는지만 기록하며, Export CSV 는 거른 결과를 내려받습니다.

보관 기간

보고는 서버별·일별 파일로 30일 보관하고, 지난 파일은 통째로 지웁니다. 알림은 기본 90일이며 Settings → Data retention 에서 1–730일로 바꿉니다. 청소는 시작할 때와 하루에 한 번 돕니다.

4. 알림과 임계값

알림은 두 종류

에이전트 로그 줄(Windows eventlog-error, Linux journal-error): 오류 수준 이벤트의 한 줄 요약으로, 일어나는 대로 에이전트가 보냅니다 — Windows 는 System·Application 로그의 Critical·Error, Linux 는 journald 의 err 이상. 같은 이벤트는 10분에 한 번까지만 보내고, 반복은 세어 두었다가 (repeated N times in 10 min) 으로 끝나는 요약 하나로 보내며, 30초 묶음마다 최대 20건입니다. 임계값 알림은 Manager 가 보고를 보고 판단합니다.

수집하는 이벤트

  • Windows — System 과 Application 이벤트 로그의 위험(Critical) 수준(critical 로 보냄)과 오류(Error) 수준(error 로 보냄).
  • Windows 에서 수집하지 않는 것 — 경고(Warning)·정보(Information) 이벤트, 그리고 Security 로그.
  • Linux — journald 의 우선순위 err 이상(emerg·alert·crit 은 critical, err 는 error). journald 가 없으면 /var/log/syslog 또는 /var/log/messages — 9장을 보세요.
  • 에이전트 자신의 로그 줄은 알림이 되지 않습니다. 수치만 보내려면 agent.json 에 "collectErrors": false 를 넣습니다.

기본 임계값

  • 디스크 — 90 % 이상: warning, 95 % 이상: critical.
  • CPU — 평균 90 % 이상이 2회 연속: warning.
  • 메모리 — 90 % 이상이 2회 연속: warning.
  • 보고 없음 — 그 서버 간격 × 2.5 동안 보고 없음(기본 10분이면 25분): server-silent, critical.

Settings → Thresholds 에서 바꾸며, 다음 보고부터 적용됩니다. 디스크 critical 은 warning 보다 커야 하고, 아니면 입력란이 그렇다고 알려 줍니다.

보고마다가 아니라 바뀔 때 한 번

상태가 바뀔 때 알림 하나, 정상으로 돌아올 때 info 수준 …-cleared 알림 하나를 냅니다. 디스크가 50 → 91 → 96 → 92 → 70 % 로 가면 알림은 넷입니다: warning, critical, warning(내려오는 길), cleared — 가득 찬 동안 보고마다 나오지 않습니다. 상태는 디스크에 저장되므로 Manager 를 다시 시작해도 같은 알림이 또 나오지 않고, 늦게 도착한 옛 보고가 새 상태를 되돌리지도 않습니다.

“silent” 가 뜻하는 것

Manager 는 서버가 죽었는지 알 수 없고, 아무것도 오지 않았다는 것만 압니다 — 그래서 “down” 이라고 말하지 않습니다. 알림은 No report from app-03 for 27 minutes (expected every 10 minutes) 처럼 나옵니다. 원인은 서버일 수도, 네트워크·에이전트 서비스·중간 방화벽일 수도 있습니다. 보고가 다시 오면 server-silent-cleared 가 뒤따르고, 그동안 에이전트가 쌓아 둔 것(수치 최대 6시간, 알림 500건)이 순서대로 도착합니다.

5. 메일 알림

설정

Settings → Email alerts (SMTP): SMTP 서버, 포트, 보안(STARTTLS, 암시적 TLS, None), 서버가 요구하면 사용자 이름과 비밀번호(AUTH PLAIN·LOGIN·CRAM-MD5), 보내는 주소, 쉼표로 구분한 받는 사람. Send test email 을 누르면, 메일이 받아들여질 경우 설정이 저장되고 메일 알림이 같은 단계에서 켜집니다. 성공한 시험 뒤에 저장 안 된 설정이 남는 일이 없습니다.

얼마나 자주 보내는가

알림 하나에 메일 하나, 서버당 1분에 최대 한 통. 같은 서버에서 그 1분 안에 들어온 알림은 다음 메일에 “… and N more” 로 접혀 들어가므로, 몰려와도 메일은 한 통입니다. 입력란 아래 숫자가 보낸 수와 실패한 수를 보여 줍니다.

비밀번호

SMTP 비밀번호는 데이터 폴더의 settings.json 에 서비스만 읽을 수 있게(Linux 0600) 저장되고, 브라우저로 다시 보내지 않습니다 — 화면에는 설정돼 있다는 표시만 나옵니다. Manager 는 서비스이므로 데스크톱 알림은 없습니다. 밖으로 나가는 길은 메일과 MeshWatch Central 입니다.

6. 라이선스와 좌석

체험

서버 수 제한 없이 30일이고, 첫 에이전트 보고부터 셉니다 — Manager 만 설치해서는 시작되지 않습니다. Overview, Servers, Settings → Licence 에 남은 날이 나옵니다. 미리 묻는 것은 없습니다.

키

MeshServerWatch 는 서버 단위 가격이고 Manager 는 포함, 최소 3대입니다: 월간 서버당 월 US$5(최소 월 US$15) 또는 연간 서버당 연 US$48(20% 할인, 월 US$4 꼴). 요금은 원칙적으로 환불되지 않습니다. 법이 환불을 요구하는 경우와, 청구 후 14일 안에 접수된 청구 오류 환불 요청을 저희가 승인한 경우만 예외입니다(이용 약관). 그러니 30일 평가판으로 먼저 충분히 시험하세요. Stripe 결제 화면에서 서버 수(최소 3)를 고르고 사용권 계약에 체크합니다. 구매 뒤 MSW1. 로 시작하는 키가 메일로 옵니다. Settings → Licence 에 붙여 넣고 Activate 를 누릅니다. 키에는 좌석 수와 만료일이 들어 있고, Manager 안에서 내장 공개키로 확인합니다 — 라이선스 서버에 연락하지 않으므로 격리된 네트워크에서도 됩니다.

좌석을 세는 법

서버 하나에 좌석 하나, machine id 로 처음 보고한 순서대로 셉니다. 처음 N 대가 라이선스를 받습니다. 좌석을 넘은 새 서버는 402 seat-limit 를 받고 unlicensed 로 표시되며, 그 에이전트는 계속 모으면서 1시간마다 다시 시도합니다. 이미 보고하던 서버는 다른 서버가 늘었다고 끊기지 않습니다.

한도를 넘은 서버가 있으면 Servers 에 노란 띠가 몇 대인지와 할 일을 알려 줍니다: 구독에 좌석을 더하고 새 키를 넣거나(Settings → Licence), 더는 보지 않는 서버를 지웁니다. Enter a new key 버튼은 라이선스 설정을 열고, Add seats 는 제품 페이지의 가격 부분을 엽니다. 새 키는 메일로 오며, 넣으면 기다리던 서버가 다음 보고 때 라이선스를 받습니다.

Remove server

서버 페이지의 Remove server… 는 좌석을 즉시 반납하고 그래프(저장된 보고 전부, 최대 30일 — 되돌릴 수 없음)를 지웁니다. 알림은 기간이 지날 때까지 Alerts 탭에 남습니다. 그 서버에서 에이전트가 아직 돌고 있으면 다음 보고 때 새 서버로, 줄 맨 끝에 다시 나타납니다 — 먼저 에이전트를 제거하거나 토큰을 폐기하세요.

체험이나 키가 끝나면

에이전트는 402 와 사유를 받습니다 — trial-ended, licence-expired, licence-invalid, 그리고 Manager 시계가 뒤로 돌아갔으면 clock-tampered. 이미 저장된 그래프와 알림은 계속 보입니다. 에이전트는 계속 모으고 1시간마다 다시 시도하므로, 키를 넣으면 서버를 건드리지 않고 보고가 이어집니다.

7. MeshWatch Central 에 연결

선택 사항입니다. MeshServerWatch 는 혼자서 완결됩니다. MeshWatch Central 도 운영한다면 Manager 가 알림과 서버별 상태 한 줄을 넘겨, 가득 찬 디스크가 같은 호스트에 대해 다른 MeshWatch 제품이 보고한 것 옆에 나오게 할 수 있습니다.

Central 1.3.9 이상이 필요합니다(Central 1.3.9 는 MeshServerWatch 와 따로 나옵니다). 그보다 옛 Central 의 Agents 에는 MeshServerWatch 가 없어 토큰을 발급할 수 없습니다.

  1. Central 의 Agents 를 열고 MeshServerWatch 를 고른 뒤 라벨을 넣고 Issue token 을 누릅니다. 토큰은 한 번만 보입니다.
  2. 그 목록에서 MeshServerWatch 를 고르세요. 토큰은 발급된 제품의 것입니다. Manager 가 이를 확인해서, 다른 제품의 토큰이면 Test 가 거절하고 어느 제품의 토큰인지 알려 줍니다 — That token was issued for “syslogwatch” in Central … Issue a MeshServerWatch token.
  3. Manager 의 Settings → MeshWatch Central 에서 Central 주소를 브라우저로 여는 그대로 — 리버스 프록시를 두지 않았다면 http://<central-server>:8443 — 넣고, 토큰도 넣습니다.
  4. Test 를 누릅니다. 성공하면 설정이 저장되고 전달이 켜집니다: Done — Central accepted the token (…). Forwarding is on and saved. 시험이 성공하기 전에는 아무것도 보내지 않습니다.

넘기는 것: 모든 알림 — 임계값, 보고 없음, 에이전트 오류 줄 — 과 서버마다 장비 한 줄: 호스트 이름(장비), IP 와 별칭, 상태 up 또는 silent, “CPU 12% · Mem 56% · Disk C: 96%” 같은 설명 한 줄. 장비 줄은 서버당 5분에 최대 한 번 보냅니다. 원본 수치 시계열은 넘기지 않습니다. 그래프는 Manager 에 남습니다. Central 에 닿지 않는 동안에는 최대 500건이 대기열에서 기다렸다가 순서대로 갑니다. 전체 절차는 MeshWatch Central 가이드.

8. 데이터 위치, 백업, 제거

Manager 쪽

Windows: C:\ProgramData\MeshServerWatch\Manager\data\. Linux: /var/lib/meshserverwatch/manager/. 안에는 settings.json(임계값·보관·SMTP·Central 설정, 0600), alerts.json, servers.json(서버마다 한 줄과 최근 표본), agents.json(토큰 해시만 — 원문 토큰은 저장하지 않음), users.json(scrypt 비밀번호 해시), licence.json(키와 체험 기록), server-alert-state.json, tls/(인증서), metrics/<machine id>/YYYY-MM-DD.jsonl(보고), logs/ 가 있습니다. 모든 쓰기는 원자적입니다: 임시 파일을 쓴 뒤 이름을 바꿉니다.

에이전트가 보내는 것 — 데이터 경계

숫자와 한 줄 요약뿐입니다. 간격마다 이런 보고 하나:

{
  "machineId": "3f2a…",
  "host": "web-01", "ip": "10.0.0.21", "aliases": ["web-01.corp.local"],
  "os": "linux", "osName": "Ubuntu 22.04.4 LTS",
  "agentVersion": "1.0.0", "uptimeSec": 123456, "intervalSec": 600,
  "at": 1790000000000,
  "cpu":  { "avgPct": 12.5, "maxPct": 71.0, "cores": 8 },
  "mem":  { "totalBytes": 17179869184, "usedBytes": 9663676416, "pct": 56.3 },
  "disks": [ { "mount": "/", "fs": "ext4", "totalBytes": 0, "usedBytes": 0, "pct": 0 } ],
  "load": [0.5, 0.4, 0.3]
}

machineId 는 Windows MachineGuid 또는 Linux /etc/machine-id 의 SHA-256 앞 32자리이고, 원래 값은 보내지 않습니다. 디스크는 실제 파일 시스템만(Windows 는 고정 드라이브, Linux 는 tmpfs·overlay·네트워크 등 가상 파일 시스템 제외), 가장 찬 것부터 최대 32개입니다. load 는 Linux 만. 오류 이벤트마다: 심각도, 종류, 같은 호스트·IP·machine id, 이벤트 시각, 300자 이하의 요약:

System · Service Control Manager 7031 — The Print Spooler service terminated unexpectedly.
journal · sshd — error: kex_exchange_identification: Connection closed by remote host

메시지 전문, 이벤트 XML, 사용자 SID, 프로세스 목록, 사용자 이름, 명령줄은 보내지 않습니다. 토큰은 로그나 출력에 전부 찍히지 않고 msw_abcd…wxyz 로 나옵니다.

각 서버 쪽

설정: C:\ProgramData\MeshServerWatch\Agent\agent.json(SYSTEM·Administrators 만) 또는 /etc/meshserverwatch/agent.json(0600). 상태 — 못 보낸 항목의 대기열, 재시작해도 다시 보내거나 건너뛰지 않게 하는 이벤트 로그 북마크·journal 커서, status.json: C:\ProgramData\MeshServerWatch\Agent\state\ 또는 /var/lib/meshserverwatch/agent/.

백업

Manager 의 데이터 폴더를 복사하면 그게 전부입니다. 파일마다 원자적으로 바뀌므로 도는 중에 복사해도 파일은 온전합니다. 모든 파일을 같은 시점으로 맞추려면 먼저 서비스를 멈추세요. tls/ 도 함께 두세요. 같은 인증서로 새 기계에 되살리면 지문이 그대로라 에이전트가 계속 붙습니다. 없으면 Manager 가 새 인증서를 만들고, 모든 에이전트에 install --fingerprint <새 값> 이 필요합니다.

제거

Manager: Windows 는 Settings → Apps, Linux 는 apt remove / dnf remove, 또는:

sudo meshserverwatch uninstall

어느 것이든 서비스를 멈추고 지우되 설정과 데이터는 남기므로, 다시 설치하면 이어서 돕니다. Windows 의 에이전트는 설정 > 앱 에서, 또는 무인으로 "C:\Program Files\MeshServerWatch Agent\Uninstall.exe" /S 로 제거합니다.

서비스와 프로그램 폴더를 지우고 C:\ProgramData\MeshServerWatch\Agent\ 는 남깁니다. Linux 에서 apt remove 는 에이전트를 멈추고 끄며, apt purge 는 설정·상태·사용자까지 지우고, rpm -e 는 설정을 남깁니다. meshserverwatch-agent uninstall --purge 는 어느 시스템에서든 서비스를 지우고 설정과 상태를 지웁니다. 좌석을 반납하려면 Manager 에서 Remove server 를 누르는 것을 잊지 마세요.

설치 마법사로 설치했다면 설정 > 앱 에서 제거하거나, 무인으로 "C:\Program Files\MeshServerWatch Manager\Uninstall.exe" /S · "C:\Program Files\MeshServerWatch Agent\Uninstall.exe" /S 를 실행합니다. Manager 마법사의 제거는 방화벽 규칙도 지웁니다. 어느 쪽이든 설정과 데이터는 남습니다.

9. 문제 해결

서버에서 meshserverwatch-agent test, 그다음 meshserverwatch-agent status 부터 봅니다. 아래 문구는 이 둘이 출력하는 그대로입니다.

“The Manager's certificate fingerprint does not match the configured one”

아무것도 보내지 않았습니다 — 토큰이 서버를 떠나기 전에 연결을 닫았습니다. Manager 를 다시 설치해서(새 인증서) 그렇거나, URL 이 다른 기계를 가리킵니다. Manager 에서 meshserverwatch status 로 지문을 읽고 install --fingerprint <새 값> 을 실행하세요. 메시지 속 “presented” 값을 Manager 에서 확인하지 않고 그대로 옮기지 마세요 — 그건 답한 쪽의 값입니다. its TLS certificate is not trusted 는 지문이 비어 있고 Manager 가 자체 서명 인증서를 쓴다는 뜻입니다 — --fingerprint 를 넣으세요.

401 — “The Manager rejected the token (401): it is wrong or has been revoked”

Manager 의 Agents 탭에서 새 에이전트 토큰을 발급하고 meshserverwatch-agent install --token <새 토큰> 을 실행합니다. 설정이 바뀔 때까지 전송은 멈추고, 수집과 대기열은 계속됩니다.

402 — Manager 가 서버 데이터를 받지 않음

에이전트는 사유를 말하고 계속 모으며 1시간마다 다시 시도합니다: The Manager has no free licence seat for this server — add seats or remove a server on the Manager's Servers tab. · The Manager's trial has ended — enter a licence key on the Manager's Settings tab. · The Manager's licence has expired · The Manager's licence key is not valid · The Manager reports its clock was moved back; the administrator must check the Manager server's clock. 6장을 보세요.

403 — “This token is not an agent token”

Manager 가 403 wrong-product 로 답했습니다: 토큰으로 준 값이 에이전트 토큰이 아닙니다. Manager 의 Agents 탭에서 발급하고 install --token <새 토큰> 을 실행합니다.

404 — “MeshServerWatch Manager 1.0.0 or later is required at <url>”

그 주소가 Manager 의 에이전트 API 로 이어지지 않습니다: 포트가 틀렸거나, 리버스 프록시 경로가 /api/v1/ 를 넘기지 않거나, 다른 웹사이트입니다. 오류 알림은 계속 시도하고, 수치는 1시간마다 다시 시도합니다.

“connection refused” 또는 “timed out”

Manager 가 도는지(meshserverwatch status 는 받지 않고 있으면 종료 코드 3), 에이전트가 맞는 포트를 쓰는지, Manager 에서 TCP 8455 인바운드가 열려 있고 중간에서 막히지 않는지 확인합니다 — 1장의 방화벽 절.

8455 포트를 이미 쓰고 있음

Manager 가 journal 이나 응용 프로그램 이벤트 로그에 cannot listen on 0.0.0.0:8455: … address already in use 를 남기고 멈춥니다. 무엇이 포트를 잡고 있는지 찾습니다:

sudo ss -ltnp 'sport = :8455'
Get-NetTCPConnection -LocalPort 8455

그 프로그램을 멈추거나, meshserverwatch install --port <다른 포트>로 바꾸고 모든 에이전트의 --manager URL 과 방화벽 규칙에 새 포트를 씁니다.

설치 마법사를 썼다면 마법사를 다시 실행해 Settings 페이지에서 포트를 바꿔도 됩니다.

journald 가 없는 Linux: syslog 로 대체

journal 이 없으면 에이전트는 /var/log/syslog 나 /var/log/messages 를 따라 읽습니다. 그 파일에 우선순위가 없으면 status 가 no priority in file — errors matched by keyword 라고 말합니다: “error”, “failed”, “panic” 같은 낱말로 오류를 알아봅니다. 정확한 우선순위가 필요하면 rsyslog 가 *.err 를 <%PRI%> 와 함께 파일로 쓰게 하고 agent.json 의 errorLogFile 을 그 파일로 둡니다. 두 파일 다 못 읽으면 오류 이벤트는 모으지 않고 수치만 모으며, status 가 그렇다고 알려 줍니다. journald: only part of the journal is readable 은 서비스 사용자가 systemd-journal 에 없다는 뜻입니다:

sudo usermod -aG systemd-journal meshserverwatch-agent && sudo systemctl restart meshserverwatch-agent

Windows 이벤트 로그 원본

Manager 는 응용 프로그램 로그에 원본 MeshServerWatch 로, 에이전트는 원본 MeshServerWatch Agent 로 쓰고, 에이전트는 C:\ProgramData\MeshServerWatch\Agent\state\agent.log 에도 씁니다. 에이전트는 자기 줄을 오류로 다시 읽지 않으므로 자기 메시지가 알림이 되지 않습니다. 알림을 처음부터 끝까지 확인하려면 시험 오류를 만드세요 — eventcreate /t error /id 999 /l application /d "MeshServerWatch test" — 30초 안팎에 Alerts 탭에 나타나야 합니다.

“clock is … ahead of the Manager”

이 서버의 시계가 Manager 와 5분 넘게 다릅니다. 에이전트는 보고가 거절되지 않게 타임스탬프를 Manager 시계에 맞추고, 하루 한 번 agent-clock-skew 경고를 보내며, status 가 경고합니다. 시간 동기화(NTP)를 고치세요.

그래도 안 되면

support@meshwatch.app 로 판(meshserverwatch version, meshserverwatch-agent version), OS, 그리고 토큰이 가려진 그대로의 meshserverwatch-agent test 출력을 보내 주세요. 첫 답은 영업일 이틀 안, 월–금입니다.