가이드 › MeshServerWatch
다른 언어 English · 日本語 · 한국어 · 简体中文
MeshServerWatch
Windows·Linux 서버 감시: 서버마다 에이전트, 직접 운영하는 Manager 하나 — 1.0.0
이 판에서 바뀐 것
- 첫 판입니다. 설치 파일은 둘입니다: MeshServerWatch Manager(서비스 + 브라우저 화면)와 Windows·Linux 서버용 MeshServerWatch Agent.
- Windows: 두 프로그램 모두 설치 마법사가 있습니다. Manager 마법사는 끝에 주소와 인증서 지문을 보여 주고, Agent 마법사는 그 값을 받아 Test connection 으로 확인합니다. 여러 서버에는 Agent setup 을 한 줄로 무인 설치할 수 있습니다.
- 에이전트는 CPU·메모리·모든 디스크를 10분마다, 이벤트 로그·journald 의 오류 수준 줄은 30초 안팎에 보냅니다.
- 기본이 HTTPS 입니다. Manager 가 자체 인증서를 만들고, 에이전트는 그 SHA-256 지문으로 인증서를 고정합니다.
- 임계값·보고 없음 알림은 Manager 가 판단하고, 메일을 보내고, 서버마다 30일치 그래프를 보관합니다.
- MeshWatch Central 1.3.9 이상으로 알림과 서버별 상태 한 줄을 넘기는 것은 선택입니다.
- Windows 설치본은 Authenticode 서명과 타임스탬프가 들어가 있습니다. 두 프로그램 모두 사용권 계약에 동의해야 설치됩니다.
1. Manager 설치
Manager 는 모든 에이전트가 보고하는 단 한 대입니다. 켜져 있는 서버에 한 번만 설치합니다. 런타임도 데이터베이스 서버도 없는 프로그램 하나이고, 포트 하나(8455)로 브라우저 화면과 에이전트 API 를 함께 엽니다.
- Manager · Windows setup wizard MeshServerWatch-Manager-1.0.0-setup.exe
- Manager · Windows executable MeshServerWatch-Manager-1.0.0-windows-x64.exe
- Manager · Debian/Ubuntu amd64 meshserverwatch_1.0.0_amd64.deb
- Manager · Debian/Ubuntu arm64 meshserverwatch_1.0.0_arm64.deb
- Manager · RHEL/Rocky/Alma x86_64 meshserverwatch-1.0.0-1.x86_64.rpm
- Manager · RHEL/Rocky/Alma aarch64 meshserverwatch-1.0.0-1.aarch64.rpm
받은 파일을 확인하세요. 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 를 실행합니다(관리자 권한을 묻습니다).
- Welcome → Licence Agreement: I accept the terms of the licence agreement 에 체크합니다. 체크하기 전에는 Next 가 꺼져 있습니다.
- Settings: 포트(기본 8455)와 Allow this port through Windows Firewall(기본 체크 — 인바운드 TCP 규칙 MeshServerWatch Manager 를 추가). 업그레이드라면 지금 쓰는 포트가 채워져 있습니다.
- Install folder(기본
C:\Program Files\MeshServerWatch Manager) → Install. 마법사가 설정을 저장하고, 자체 서명 인증서를 만들고, Windows 서비스 MeshServerWatch 를 등록·시작합니다. 이 단계가 실패하면 프로그램의 메시지를 보여 주고 되돌립니다. - 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 서버도 감시해야 한다면 거기에도.
- Agent · Windows setup wizard MeshServerWatch-Agent-1.0.0-setup.exe
- Agent · Windows executable MeshServerWatch-Agent-1.0.0-windows-x64.exe
- Agent · Debian/Ubuntu amd64 meshserverwatch-agent_1.0.0_amd64.deb
- Agent · Debian/Ubuntu arm64 meshserverwatch-agent_1.0.0_arm64.deb
- Agent · RHEL/Rocky/Alma x86_64 meshserverwatch-agent-1.0.0-1.x86_64.rpm
- Agent · RHEL/Rocky/Alma aarch64 meshserverwatch-agent-1.0.0-1.aarch64.rpm
토큰 발급
화면에서 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 를 실행합니다(관리자 권한을 묻습니다).
- Welcome → Licence Agreement: I accept the terms of the licence agreement 에 체크합니다.
- 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 에 체크합니다. - Manager 가 같은 컴퓨터에 설치되어 있으면 Fill in from this computer 단추가 나옵니다. 누르면 로컬 Manager 에서 토큰을 발급해 세 값을 모두 채웁니다.
- Install folder(기본
C:\Program Files\MeshServerWatch Agent) → Install: 설정을 저장하고 서비스 MeshServerWatchAgent 를 등록·시작합니다. 이 단계가 실패하면 프로그램의 메시지를 보여 주고 되돌립니다. 토큰 전체는 화면에 나오지 않습니다. - 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 가 없어 토큰을 발급할 수 없습니다.
- Central 의 Agents 를 열고 MeshServerWatch 를 고른 뒤 라벨을 넣고 Issue token 을 누릅니다. 토큰은 한 번만 보입니다.
- 그 목록에서 MeshServerWatch 를 고르세요. 토큰은 발급된 제품의 것입니다. Manager 가 이를 확인해서, 다른 제품의 토큰이면 Test 가 거절하고 어느 제품의 토큰인지 알려 줍니다 — That token was issued for “syslogwatch” in Central … Issue a MeshServerWatch token.
- Manager 의 Settings → MeshWatch Central 에서 Central 주소를 브라우저로 여는 그대로 — 리버스 프록시를 두지 않았다면
http://<central-server>:8443— 넣고, 토큰도 넣습니다. - 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 출력을 보내 주세요. 첫 답은 영업일 이틀 안, 월–금입니다.