ガイド › MeshWatch Central

他の言語 English · 日本語 · 한국어 · 简体中文

MeshWatch Central — インストールと連携

Central は自分で動かすサーバーです。デスクトップ製品からの通知をひとつの受信箱にまとめ、機器ごとに関連付けます。現在の版は 1.3.8 です。

この版での変更

リリースノート全文

始める前に

Central は常時動いているサーバーに置くものです。ノート PC 向けではありません。ポート 8443 を、平文の HTTP で待ち受けます — 8443 は普通 HTTPS を意味しますが、リバースプロキシを前に置くまで Central は HTTPS を話しません。https:// と入力しても接続できません。

入れ方は二通りです。選ぶ前にお読みください:

インストール — 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

Linux と macOS では:

MWC_DATA_DIR=/var/lib/meshwatch-central node src/server.js

MWC_DATA_DIR はデータベースと設定を書く場所です。バックアップの対象になっていて、Node を動かすアカウントが書ける場所を選んでください。

端末から起動した場合、その窓を閉じると Central も止まります。実運用ではサービスとして登録してください — Windows なら NSSM か起動時に走るタスク、Linux なら systemd ユニットです。

この配布物はライセンス製品であり、オープンソースではありません。自社のサーバーで動かすことはできますが、再配布はできません。条件は同梱の LICENCE.txt にあります。

初回起動

  1. http://<your-server>:8443 を開きます。その機械の上からなら http://localhost:8443 です。
  2. 最初の管理者アカウントを作ります。この画面は一度しか出ません。
  3. 製品から届くようにポート 8443 を開けます。Windows Server では:
New-NetFirewallRule -DisplayName "MeshWatch Central 8443" -Direction Inbound -LocalPort 8443 -Protocol TCP -Action Allow

製品に入力するアドレスを調べます:

ipconfig | Select-String IPv4

製品をつなぐ

何かをつなぐまで Central には何も出ません。Central は製品を自分で見つけません。製品ごとにトークンで指し示します。

  1. Central の Agents を開きます。製品を選び、ラベルを入力します — これはどこかから取ってくる値ではなく、設置場所を区別するために自分で決める名前です(本社、大阪DC など)。そして Issue token を押します。
  2. トークンは一度しか表示されません。枠を閉じる前にコピーしてください。失った場合は新しく発行し、古いものを失効させます。
  3. 製品側で MeshWatch Central の設定を開き、アドレスとトークンを貼ります。場所は次のとおりです。SyslogWatch・DeviceWatch・TrapWatch — Settings → MeshWatch Central。TrafficWatch — Alerts ボタン(Alerts & delivery が開きます)。CertWatch と ConfigWatch — 左側の MeshWatch Central 欄。
  4. http://<central-server>:8443 を使います。localhost ではありません — 製品は別の機械にあります。https:// でもありません。
  5. 通知を送るチェックを入れて保存し、Test connection を押します。DeviceWatch 1.2.8 以降と SyslogWatch 1.3.8 以降はチェックと保存が不要です。確認が成功するとアドレスとトークンを保存して接続をオンにし、ボタンが Done に変わります。

接続機能が入っているのは次の版からです。それより古い版にはトークンを貼る場所がありません:

MeshServerWatch をつなぐ

MeshServerWatch だけは上の手順と違い、設定はエージェントが報告する先の MeshServerWatch Manager にあり、監視される各サーバーにはありません。Agents の製品一覧に MeshServerWatch を加えた Central 1.3.9 以降が必要です。MeshServerWatch 用のトークンを発行し、Manager の画面で Settings → MeshWatch Central を開いて Central のアドレスとトークンを入れ、Test を押します。成功すると設定が保存されて転送がオンになり、別の製品のトークンはその製品名を示して拒否されます。Manager が転送するのは、すべての通知(しきい値、報告なし、エージェントのエラー行)と、サーバーごとの機器 1 行(ホスト名、IP と別名、状態 up または silent、「CPU 12% · Mem 56% · Disk C: 96%」のような 1 行)で、機器の行はサーバーごとに 5 分に最大 1 回です。生の数値の時系列は転送せず、グラフは 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 時間を 1 時間ごとの棒で、重大度別に積み上げて表示します。目盛りは見ている人のタイムゾーンです。棒にマウスを重ねると件数が出ます。
  • 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 になりません。