가이드 › MeshWatch Central
다른 언어 English · 日本語 · 한국어 · 简体中文
MeshWatch Central — 설치와 통합
Central 은 직접 운영하는 서버입니다. 데스크톱 제품의 알림을 하나의 받은함으로 모으고 장비 단위로 묶습니다. 현재 판은 1.3.8 입니다.
이 판에서 바뀐 것
- Agents 탭의 상태가 셋이 됐습니다 — waiting, connected, reporting. 토큰마다 마지막으로 접촉한 때도 보입니다. 제품은 하트비트를 보내지 않으므로 에이전트에 “down” 상태는 없습니다.
- 대소문자나 도메인 꼬리만 다른 장비 이름을 한 장비로 봅니다.
core-sw-01.example.com과core-sw-01이 인시던트로 묶입니다. Core Switch 같은 라벨은 여전히 따로입니다 — 알림과 인시던트를 보세요. - Overview 가 제대로 된 첫 화면이 됐습니다: 상태 띠, 심각도 타일, 시간대별 막대그래프, 내려간 장비, 최근 알림과 인시던트. Overview 를 보세요.
- Central 시계보다 5분 넘게 앞선 시각이 찍힌 알림은 얼마나 앞섰는지 적힌 400 으로 거절됩니다. 어느 제품의 알림이 들어오지 않으면 그 기계의 시계를 확인하세요.
시작하기 전에
Central 은 계속 켜져 있는 서버에 두는 것입니다. 노트북용이 아닙니다. 8443 포트를 평문 HTTP 로 듣습니다 — 8443 은 보통 HTTPS 를 뜻하지만, 앞에 리버스 프록시를 두기 전까지 Central 은 HTTPS 를 말하지 않습니다. https:// 를 치면 연결 자체가 안 됩니다.
설치 방법은 두 가지입니다. 고르기 전에 읽어 보세요:
- 리눅스 서버 — Docker. 가장 곧은 길입니다.
- Windows Server — Node 묶음. Docker 이미지는 리눅스 이미지이고, Windows Server 의 컨테이너 모드는 Windows 컨테이너를 돌리므로 WSL 2 나 가상 머신 없이는 이 이미지를 못 돌립니다. Node 는 거기서 그대로 도니 이쪽이 짧습니다.
- Windows 10/11 이나 macOS — Docker Desktop. 시험용으로는 충분하지만 실제로 운영할 자리는 아닙니다.
설치 — Docker
먼저 Docker 가 설치돼 실행 중이어야 합니다. 그다음은 명령 한 줄입니다:
docker run -d --name meshwatch-central -p 8443:8443 -v central-data:/data ethan99199/meshwatch-central:1.3.8
한 줄로 둔 것은 의도한 것입니다. 역슬래시로 줄을 나눈 형태는 PowerShell 에 붙이면 깨집니다 — PowerShell 은 역슬래시를 줄 연결로 보지 않습니다.
떴는지 확인합니다. Up … (healthy) 가 나와야 합니다:
docker ps --filter name=meshwatch-central
docker: The term 'docker' is not recognized 나 command not found 가 나오면 Docker 자체가 없는 것입니다. 또는 Docker 를 깔기 전에 연 터미널을 쓰고 있는 것이고, 그때는 새 창을 열면 찾습니다.
설치 — Node 묶음 (Windows Server 포함)
Node.js 18 이상, 그것뿐입니다. Central 에는 npm 의존성이 없어서 설치할 때 무언가를 받아 오지 않습니다.
오래 둘 자리에 풀고, PowerShell 에서 먼저 그 폴더로 들어갑니다. 이 줄을 빠뜨리는 것이 흔한 실수입니다. 그러면 Node 가 지금 있는 폴더의 src\server.js 를 찾다가 Cannot find module 이라고 합니다.
cd C:\MeshWatchCentral\mwc-1.3.8
$env:MWC_DATA_DIR = "C:\ProgramData\meshwatch-central"; node src\server.js
리눅스·macOS 에서는:
MWC_DATA_DIR=/var/lib/meshwatch-central node src/server.js
MWC_DATA_DIR 은 데이터베이스와 설정을 쓰는 자리입니다. 백업 대상이면서 Node 를 돌리는 계정이 쓸 수 있는 경로를 고르세요.
터미널에서 띄우면 그 창을 닫을 때 Central 도 멈춥니다. 실제 운영에서는 서비스로 등록하세요 — Windows 는 NSSM 이나 시작 시 실행되는 작업, 리눅스는 systemd 유닛입니다.
이 묶음은 라이선스 소프트웨어이고 오픈소스가 아닙니다. 자기 서버에서 돌리는 것은 되지만 재배포는 안 됩니다. 조건은 압축 안의 LICENCE.txt 에 있습니다.
첫 실행
http://<your-server>:8443을 엽니다. 그 기계 앞이라면http://localhost:8443입니다.- 첫 관리자 계정을 만듭니다. 이 화면은 딱 한 번만 나옵니다.
- 제품이 서버에 닿도록 8443 포트를 엽니다. Windows Server 에서는:
New-NetFirewallRule -DisplayName "MeshWatch Central 8443" -Direction Inbound -LocalPort 8443 -Protocol TCP -Action Allow
제품에 넣을 주소를 확인합니다:
ipconfig | Select-String IPv4
제품 연결하기
무언가를 연결하기 전까지 Central 에는 아무것도 안 뜹니다. Central 은 제품을 스스로 찾지 않습니다. 제품마다 토큰으로 가리켜 줘야 합니다.
- Central 에서 Agents 를 엽니다. 제품을 고르고 라벨을 입력합니다 — 어디서 가져오는 값이 아니라 설치본을 구분하려고 직접 짓는 이름입니다(본사, 서울 DC 같은). 그리고 Issue token 을 누릅니다.
- 토큰은 한 번만 보여줍니다. 창을 닫기 전에 복사하세요. 놓쳤으면 새로 발급하고 이전 것을 폐기하면 됩니다.
- 제품에서 MeshWatch Central 설정을 열고 주소와 토큰을 넣습니다. 그 설정의 위치는 이렇습니다. SyslogWatch·DeviceWatch·TrapWatch — Settings → MeshWatch Central. TrafficWatch — Alerts 버튼(Alerts & delivery 가 열립니다). CertWatch·ConfigWatch — 왼쪽 사이드바의 MeshWatch Central 칸.
http://<central-server>:8443을 씁니다.localhost가 아닙니다 — 제품은 다른 기계에 있습니다.https://도 아닙니다.- 알림을 보내는 항목에 체크하고 저장한 뒤 Test connection 을 누릅니다. DeviceWatch 1.2.8 이상과 SyslogWatch 1.3.8 이상은 체크와 저장이 필요 없습니다. 시험이 성공하면 주소와 토큰을 저장하고 연결을 켜며, 단추가 Done 으로 바뀝니다.
연동이 들어간 것은 다음 판부터입니다. 그보다 옛 판에는 토큰을 넣을 곳이 아예 없습니다:
- SyslogWatch 1.3.0 이상
- DeviceWatch 1.2.0 이상
- TrafficWatch 1.1.0 이상
- CertWatch 0.3.0 이상
- ConfigWatch 0.3.0 이상
- TrapWatch 0.1.0 — 그리고 Agents 에 TrapWatch 가 뜨려면 Central 이 1.3.4 이상이어야 합니다
- MeshServerWatch 1.0.0 — 그리고 Agents 에 MeshServerWatch 가 뜨려면 Central 이 1.3.9 이상이어야 합니다
MeshServerWatch 연결
MeshServerWatch 만은 위 절차와 다릅니다. 설정은 감시받는 각 서버가 아니라, 에이전트들이 보고하는 MeshServerWatch Manager 에 있습니다. Agents 의 제품 목록에 MeshServerWatch 가 들어간 Central 1.3.9 이상이 필요합니다. MeshServerWatch 용 토큰을 발급하고, Manager 화면에서 Settings → MeshWatch Central 을 열어 Central 주소와 토큰을 넣은 뒤 Test 를 누릅니다. 성공하면 설정이 저장되고 전달이 켜지며, 다른 제품의 토큰은 그 제품 이름과 함께 거절됩니다. Manager 가 넘기는 것은 모든 알림(임계값, 보고 없음, 에이전트 오류 줄)과 서버마다 장비 한 줄(호스트 이름, IP 와 별칭, 상태 up 또는 silent, “CPU 12% · Mem 56% · Disk C: 96%” 같은 한 줄)이며, 장비 줄은 서버당 5분에 최대 한 번입니다. 원본 수치 시계열은 넘기지 않고, 그래프는 Manager 에 남습니다. 자세히는 MeshServerWatch 가이드 7장.
실제로 망을 건너가는 것
알림 요약, 그리고 묶기 위한 장비 이름. 그게 전부입니다.
Central 이 원본 로그 줄, 설정 파일, 인증서, 개인키, 패킷 캡처를 받는 일은 없습니다. 제품이 보내는 것은 심각도·장비 이름·한 줄 요약입니다. 이건 방침만의 문제가 아닙니다 — Central 이 작게 유지되는 이유이고, Central 에 못 닿을 때도 제품이 평소대로 도는 이유입니다.
화면 읽는 법
콘솔의 탭은 일곱입니다: Overview, Incidents, Alerts, Devices, Agents, Users, Settings. Agents 와 Users 는 관리자에게만 보입니다. 시각은 브라우저의 지역 시각으로 표시되고, 인시던트 보고서와 CSV 내보내기는 UTC 를 씁니다.
Overview
첫 화면입니다. 벽 화면에 띄워 두고 보라고 만든 것입니다. 여기 나오는 것은 전부 Central 이 이미 가진 것에서 센 값이고 추정한 것은 없습니다. 비어 있는 칸은 빈칸으로 두지 않고 none in the last 24 hours 처럼 비어 있다고 말합니다.
- 상태 띠 — 상태별 에이전트 수(reporting, connected, waiting. 폐기된 토큰은 따로 셉니다), 내려간 장비, 확인하지 않은 critical 알림(전체 기간), 최근 24시간의 인시던트와 알림 수와 그 앞 24시간 대비 증감, 확인하지 않은 알림(최근 24시간과 전체 기간).
- 심각도 타일 넷 — 최근 24시간의 critical·error·warning·info 수와 각각의 앞 24시간 대비 증감.
- Alerts per hour — 최근 24시간을 한 시간 단위 막대로, 심각도별로 쌓아 보여 줍니다. 눈금은 보는 사람의 지역 시간대입니다. 막대에 마우스를 올리면 건수가 나옵니다.
- Noisiest devices 와 Most frequent kinds — 최근 24시간 동안 알림이 가장 많은 장비와 가장 잦은 알림 종류, 각각 상위 다섯.
- Devices down — 제품이 상태를 직접 보고한 장비만 나옵니다. 알림으로만 알려진 장비는 상태가 없으므로 여기 나오지 않습니다.
- Latest alerts — 가장 최근 알림 열 개. 각각 Acknowledge 버튼이 붙습니다.
- Last 24 hours by product — 제품별 알림 수와 앞 24시간 대비. 살아 있는 토큰이 있는 제품은 아무것도 보내지 않았어도 전부 나옵니다.
- Latest correlated incidents — 가장 최근 인시던트 다섯.
Overview·Incidents·Alerts·Devices 는 30초마다 새로 고칩니다. 다만 입력란에 무언가 치거나 고르는 중이면 그 회차를 건너뛰므로, 입력하던 것이 지워지지 않습니다. Agents·Users·Settings 는 스스로 새로 고치지 않습니다 — 위쪽의 Refresh 를 누르세요.
알림과 인시던트
알림은 제품이 보낸 보고 하나입니다 — Alerts 의 한 줄. 인시던트는 서로 다른 두 개 이상의 제품이 30분 안에 같은 장비를 보고한 것입니다. 인시던트는 볼 때마다 알림에서 새로 계산합니다. 저장하지 않고, 열림·닫힘 상태도 없으며, 그 알림이 보관 기간을 넘겨 지워지면 함께 사라집니다. 제품 하나가 같은 것을 되풀이하는 것은 인시던트가 아닙니다 — 그건 그 제품 화면에서 이미 보입니다.
어긋나는 곳은 “같은 장비” 입니다. 제품마다 장비를 부르는 이름이 다릅니다. DeviceWatch 는 장비에 붙인 라벨을, SyslogWatch 는 syslog 헤더의 호스트 이름을, TrapWatch 는 트랩을 보낸 IP 주소를 보냅니다. Central 은 두 이름이 대소문자나 도메인 꼬리만 다를 때 — core-sw-01.example.com 과 Core-SW-01 은 둘 다 core-sw-01 입니다 — 또는 제품이 보고에 일치하는 host·IP·별칭을 함께 보냈을 때만 한 장비로 봅니다. IP 주소는 적힌 그대로 비교합니다. 그 이상은 짐작하지 않습니다. Core Switch 같은 라벨은 core-sw-01 과 다른 장비로 남습니다. 잘못 합치는 것이 안 합치는 것보다 나쁘기 때문입니다.
두 제품이 같은 장비를 보고 있는데 Incidents 가 계속 비어 있다면 Devices 를 여세요. 그 장비가 두 줄로 나오면 제품들이 이름을 다르게 부르고 있는 것입니다. DeviceWatch 의 라벨을 다른 제품이 쓰는 호스트 이름과 맞추세요 — 스위치 라벨을 Core Switch 가 아니라 core-sw-01 로. TrapWatch 는 장비를 IP 주소로 부르므로, 같은 주소를 쓰는 제품과 묶입니다.
기술 메모: 보고 형식은 선택 필드 host, ip, aliases 를 받으며, 제품이 이를 보낼 수 있습니다. 보내면 일치하는 이름이 하나라도 있는 줄을 한 장비로 잇습니다.
Alerts
연결한 모든 제품의 모든 알림이 한 목록으로, 도착한 때가 아니라 제품이 찍은 시각 기준 최신순으로 나옵니다. Severity, Product, State(open 또는 acknowledged)로 거를 수 있습니다. Agent 열은 어느 토큰이 보냈는지, Kind 는 알림 종류를 보여 줍니다. 어느 제품의 알림이 다른 제품 이름으로 나오면 그 토큰이 다른 제품용으로 발급된 것입니다. 탭에는 조건에 맞는 최근 200건이 나오고, 제목에는 실제 전체 건수가 나옵니다.
Acknowledge 는 알림 하나씩 하며, 누가 언제 확인했는지 기록합니다. 확인한 줄에는 버튼 대신 그 이름과 시각이 나옵니다. operator 와 admin 이 확인할 수 있고, viewer 에게는 open 으로만 보입니다.
Export CSV 는 지금 조건에 맞는 알림을 최대 500건까지 내려받습니다. 열은 When, Product, Agent, Device, Severity, Kind, Summary, Acknowledged At, Acknowledged By 이고, 파일 안의 시각은 UTC 입니다.
Incidents
인시던트마다 카드 한 장입니다. 장비, 그 알림들 중 가장 높은 심각도, 관련 제품, 시작 시각, 몇 분 동안 알림 몇 건이었는지가 나옵니다. 제품들이 장비를 서로 다른 이름으로 불렀으면 나머지 이름이 also reported as 뒤에 나옵니다. 아래 타임라인은 각 알림을 순서대로, 보는 사람의 지역 시각으로 보여 줍니다.
Download report 는 그 인시던트의 알림만으로 만든 Markdown 초안을 저장합니다. 안의 시각은 전부 UTC 입니다. Acknowledge all 은 그 인시던트의 확인 안 된 알림을 한 번에 확인합니다(operator·admin). 내려받을 때 인시던트가 더는 없다고 나오면 그 알림이 보관 기간을 넘긴 것입니다.
Devices
보고하는 제품이 몇 개든 장비 하나에 한 줄이고, 열은 Device, Label, Vendor, Reported by, Status, Last report 입니다. 그 줄이 다른 이름으로도 묶였으면 장비 이름 아래에 그 이름들이 나옵니다. 어느 제품이 down 으로 보고한 장비가 맨 위로 옵니다. Product 필터로 한 제품만 볼 수 있습니다.
- Status — 제품마다 배지 하나. DeviceWatch: up 이나 DeviceWatch: down 은 그 제품이 보고한 상태입니다. from alerts 는 제품이 알림에서 그 장비를 언급했지만 상태를 보낸 적은 없다는 뜻이라, up 인지 down 인지 모릅니다.
- Last report — 제품이 가장 최근 보고나 알림에 찍은 시각. 칸에 마우스를 올리면 Central 이 받은 시각이 나옵니다. 밀렸던 것이 한꺼번에 와도 제각각 자기 시각을 유지합니다.
- 줄을 누르면 그 장비의, 모든 제품에 걸친 전체 알림 이력이 펼쳐지고, 다시 누르면 접힙니다.
Agents
관리자만 봅니다. 토큰 하나에 한 줄이고, 열은 Product, Label, Created, Last contact, Last report, State 입니다.
- waiting — 토큰이 Central 에 한 번도 닿지 않았습니다.
- connected — 제품의 Test connection 은 성공했지만 아직 아무것도 보내지 않았습니다. 무슨 일이 생기기 전까지는 정상입니다. ConfigWatch 는 백업을 한 번 돌린 뒤, TrapWatch 는 첫 트랩이 올 때 보냅니다.
- reporting — 알림이나 장비를 보냈습니다.
제품은 하트비트를 보내지 않으므로 Central 은 제품을 down 으로 표시하지 않습니다. 마지막으로 소식이 있었던 때는 Last contact(시험이든 데이터든 토큰이 마지막으로 Central 에 닿은 때)와 Last report 가 알려 줍니다.
토큰을 발급하려면 제품을 고르고 라벨을 적은 뒤 Issue token 을 누릅니다. 토큰은 한 번만, Copy 버튼과 함께 보입니다. 제품에 붙여 넣었으면 Done 을 누르세요. 그 뒤로는 다시 볼 수 없습니다. Revoke 를 누르면 그때부터 Central 이 그 토큰으로 온 것을 전부 거절합니다. 이미 받은 것은 남습니다. 폐기한 줄은 Delete 로 목록에서 지울 수 있습니다.
사용자와 역할
관리자만 봅니다. 역할은 셋입니다.
- viewer — 읽기 전용.
- operator — 알림 확인까지.
- admin — 전부: 계정, 토큰, 보관 기간, 업데이트 확인, 라이선스.
비밀번호는 12자 이상, 사용자 이름은 영문자·숫자·. _ - @ 로 3–64자입니다. 하나뿐인 관리자는 강등하거나 지울 수 없습니다 — 먼저 다른 사람을 관리자로 올리세요. 쓰기는 화면에서 숨기는 것이 아니라 서버에서 검사합니다. 사용자 목록 아래 Audit log 에는 최근 50건이 나옵니다: 로그인과 실패한 로그인, 알림 확인, 토큰 발급·폐기, 사용자·설정·라이선스 변경을 누가 언제 했는지. 비밀번호를 잊으면 서버에서 node src/server.js --reset-password <username> 로 다시 정합니다(Docker 에서는 앞에 docker exec -it meshwatch-central 를 붙입니다).
Settings
- Licence — 상태, 조직, 만료일, 남은 날. 관리자가 키를 붙여 넣고 Activate 를 누릅니다(Replace key·Remove key 도 있습니다). 체험이나 라이선스가 끝나면 Central 은 에이전트 데이터를 더 받지 않습니다. 콘솔과 이미 있는 데이터, 제품 자체는 그대로 돕니다.
- Data retention — Keep alerts for (days), 1–730일. 그보다 오래된 알림은 지워지고, 그 알림으로 이루어진 인시던트도 함께 사라집니다.
- Updates — 기본은 꺼짐입니다. 관리자가 Check once a day 를 켜기 전까지 Central 은 밖으로 아무 연결도 하지 않습니다. 켜면 하루 한 번 meshwatch.app 의 정적 파일 하나를 요청하며, 배포에 관한 것은 아무것도 보내지 않습니다. 정책으로 꺼 둔 채 잠글 수 있습니다. Central 은 스스로 업데이트하지 않습니다 — 새 이미지를 받아 컨테이너를 다시 만드세요.
Settings 는 누구나 열 수 있지만 바꿀 수 있는 것은 관리자뿐입니다.
제대로 운영하기
HTTPS
신뢰 범위 밖에서 닿는 곳이라면 앞에 리버스 프록시를 두고, 그다음에 MWC_SECURE_COOKIES=1 을 켜세요. HTTPS 를 갖추기 전에 이 값을 켜면 로그인이 깨집니다 — 세션 쿠키에 Secure 가 붙어 평문 HTTP 로는 안 갑니다.
백업
모든 것이 데이터 폴더에 있습니다 — 컨테이너면 /data(central-data 볼륨), Node 판이면 MWC_DATA_DIR 로 지정한 곳입니다. 거기를 백업하면 Central 을 백업한 것입니다. 계정·토큰·알림·감사 로그 전부입니다.
보관 기간
최대 730일까지 설정합니다. 계획할 자원은 알림을 보관할 디스크 용량이고, 연결한 장비 수와 보관 기간에 비례합니다.
Central 이 멈추면
Central 이 관리하지 않는 서버에 무언가가 쌓이는 일은 없고, 어떤 제품도 자기 일을 하려고 Central 을 필요로 하지 않습니다. 각 제품은 Central 이 없던 때와 똑같이 감시를 계속합니다. 잃는 것은 공용 받은함과 묶어 보기뿐입니다. 제품은 최근 알림을 작은 대기열에 들고 있다가 Central 이 돌아오면 보냅니다.
문제 해결
대시보드가 전부 0
아직 아무것도 연결하지 않았거나, 연결한 뒤로 그 제품이 알림을 낸 적이 없습니다. 지난 알림은 소급되지 않습니다.
Incidents 가 계속 빈다
두 번째 제품을 연결하세요. 인시던트는 서로 다른 두 제품이 같은 장비를 30분 안에 보고해야 생깁니다. 이미 둘을 연결했다면 Devices 를 여세요. 한 장비가 두 줄로 나오면 제품마다 이름을 다르게 부르고 있는 것입니다 — 알림과 인시던트를 보세요.
브라우저가 연결 안 된다
https:// 가 아니라 http:// 인지 보세요. 그다음 서버에서 8443 포트가 열려 있는지, 다른 기계에서는 localhost 가 아니라 서버 주소를 썼는지 확인합니다.
Test connection 이 bad-token 이라고 한다
토큰을 잘못 넣었거나 폐기된 것입니다. Agents 에서 새로 발급하세요. 토큰은 한 번만 보여주고 다시 읽을 수 없습니다.
알림이 “at is N minutes in the future” 로 거절된다
알림 시각이 Central 의 시계보다 5분 넘게 앞서 있으면 Central 은 400 으로 거절합니다. 제품이 도는 기계의 시계가 빠른 것이니 시계를 맞추세요. NTP 를 쓰는 것이 좋습니다. 메시지에 비교할 Central 의 시각이 함께 적혀 있습니다. 거절된 알림은 보고로 세지 않으므로 에이전트가 reporting 으로 바뀌지 않습니다.