ガイド › MeshServerWatch

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

MeshServerWatch

Windows・Linux サーバーの監視:サーバーごとのエージェントと、自分で動かす Manager — 1.0.0

この版での変更

リリースノート全文

1. Manager のインストール

Manager は、すべてのエージェントが報告する 1 台です。電源が入ったままのサーバーに一度だけ入れます。ランタイムもデータベースサーバーも要らない単一のプログラムで、ひとつのポート(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 1 行と 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・1 台:セットアップウィザード

先に 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>

トークンの箱が値を埋めて出すのと同じ 1 行で、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: … の 1 行です。

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 タブ

サーバーごとに 1 行:状態、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 日に変えられます。掃除は起動時と 1 日 1 回行われます。

4. 通知としきい値

通知は二種類

エージェントのログ行(Windows は eventlog-error、Linux は journal-error):エラーレベルのイベントの 1 行要約で、起きたときにエージェントが送ります。Windows は System・Application ログの Critical と Error、Linux は journald の err 以上です。同じイベントは 10 分に 1 回までで、繰り返しは数えておき (repeated N times in 10 min) で終わる 1 件の要約にまとめ、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 より大きくなければならず、そうでなければ入力欄がそう伝えます。

報告ごとではなく、変化ごとに 1 回

状態が変わったときに通知を 1 件、正常に戻ったときに info レベルの …-cleared を 1 件出します。ディスクが 50 → 91 → 96 → 92 → 70 % と動けば通知は 4 件: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 通、サーバーごとに 1 分に最大 1 通。同じサーバーでその 1 分内に来た通知は、次のメールに「… and N more」として畳み込まれるので、集中してもメールは 1 通です。入力欄の下の数字が送信数と失敗数を示します。

パスワード

SMTP のパスワードはデータフォルダーの settings.json に、サービスだけが読める形(Linux では 0600)で保存され、ブラウザーへは送り返しません。画面には設定済みであることだけが出ます。Manager はサービスなのでデスクトップ通知はありません。外へ出す手段はメールと MeshWatch Central です。

6. ライセンスとシート

試用

サーバー数無制限で 30 日間。最初のエージェント報告から数えます。Manager を入れただけでは始まりません。Overview、Servers、Settings → Licence に残り日数が出ます。事前に求めるものはありません。

キー

MeshServerWatch はサーバー単位の料金で、Manager を含み、最低 3 台です:月額プランはサーバー 1 台あたり月 US$5(最低月 US$15)、年額プランはサーバー 1 台あたり年 US$48(20% 割引、月 US$4 相当)。料金は原則として返金されません。法律で返金が求められる場合と、請求から 14 日以内に申請された請求誤りの返金を当方が承認した場合は例外です(利用規約)。そのため、30 日間の試用で先に十分お試しください。Stripe の決済画面でサーバー台数(最低 3)を選び、使用許諾契約にチェックします。購入後、MSW1. で始まるキーがメールで届きます。Settings → Licence に貼り付けて Activate を押します。キーにはシート数と有効期限が入っており、Manager 内で組み込みの公開鍵により検証されます。ライセンスサーバーには接続しないので、隔離されたネットワークでも使えます。

シートの数え方

サーバー 1 台に 1 シート、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 が通知とサーバーごとの状態 1 行を転送し、埋まったディスクを同じホストについて他の 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. テストが成功するまでは何も送りません。

転送されるもの:すべての通知(しきい値、報告なし、エージェントのエラー行)と、サーバーごとの機器 1 行:ホスト名(機器として)、IP と別名、状態 up または silent、「CPU 12% · Mem 56% · Disk C: 96%」のような説明 1 行。機器の行はサーバーごとに 5 分に最大 1 回送ります。生の数値の時系列は転送しません。グラフは 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(サーバーごとの 1 行と最新サンプル)、agents.json(トークンのハッシュだけ。生のトークンは保存しない)、users.json(scrypt のパスワードハッシュ)、licence.json(キーと試用の記録)、server-alert-state.json、tls/(証明書)、metrics/<machine id>/YYYY-MM-DD.jsonl(報告)、logs/。書き込みはすべてアトミックです:一時ファイルに書いてから名前を変えます。

エージェントが送るもの — データの境界

数値と 1 行の要約だけです。間隔ごとに次のような報告をひとつ:

{
  "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 の時計に合わせ、1 日 1 回 agent-clock-skew の警告を送り、status が警告します。時刻同期(NTP)を直してください。

それでも解決しないとき

support@meshwatch.app に、版(meshserverwatch version、meshserverwatch-agent version)、OS、トークンが伏せられたままの meshserverwatch-agent test の出力を送ってください。最初の返信は 2 営業日以内、月曜から金曜です。