サーバーの状態

サーバーのためのアクティビティモニターです。@blipit/node 0.2 以降は各サーバーのバイタルを 30 秒ごとに送信し、サーバーの状態のページにリアルタイムで表示します。サーバーごとに 1 行で、直近 1 時間、24 時間、7 日間のグラフも見られます。

1有効にする

追加は不要で、Blipit.init と同時に開始します。各アプリに serverName を付けると、そのサーバーが 1 つの名前にまとまります。

js
Blipit.init({
  key: process.env.BLIPIT_SECRET_KEY,
  serverName: "api",
});

2各サーバーが送るもの

  • プロセスが使う CPU (100% はコア 1 つ分)。
  • プロセスが使うメモリと、マシンのメモリの使用率。
  • JavaScript ヒープの使用量と合計。
  • 99 パーセンタイルのイベントループ遅延: サーバーが忙しい間にリクエストが待つ時間。
  • ソケットやタイマーなどの開いているハンドル。
  • pg プールのデータベース接続: 使用中、アイドル、待機中。待機中はリクエストが接続待ちで並んでいることを意味します。

3ページの見方

ライブはデータを送信中のサーバー、報告なしは途絶えたサーバーです。サーバーを選ぶとグラフが表示されます。ページは開いている間 30 秒ごとに更新されます。

4アラートを受け取る

アラートの「依存サービスとサーバーのアラート」で、各アラートに独自の上限を設定するか、オフにします。

  • CPU 使用率が高い: サーバーの CPU が設定した上限を超え続ける。
  • メモリがほぼいっぱい: サーバーのメモリ使用量が設定した上限を超え続ける。
  • 応答が遅い: サーバーのイベントループが設定した上限より長くブロックされ、リクエストが待たされる。
  • 報告が止まった: サービスのすべてのサーバーがデータを送らなくなる (クラッシュの後など)。

5その他の技術スタック

OpenTelemetry のメトリクスを OTLP JSON で https://in.blipit.io/v1/metrics に X-Blipit-Key ヘッダー付きで送ります。Blipit は process.cpu.utilization、process.memory.usage、system.memory.utilization、system.cpu.load_average.1m、db.client.connections.usage と Node.js のイベントループのメトリクスを読み取り、service.instance.id をサーバー名にします。

sh
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=https://in.blipit.io/v1/metrics
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/json
OTEL_EXPORTER_OTLP_HEADERS=X-Blipit-Key=blipit_sk_your_secret_key

6サーバーレス関数

Vercel、AWS Lambda、Netlify、Azure Functions 上のアプリは、リクエストの合間に一時停止する短命なインスタンスとして多数動きます。サーバーの状態では、各インスタンスをサーバーとして並べず、Vercel 関数のようにプラットフォームごとに 1 行にまとめ、確認されたインスタンス数とメモリを表示します。一時停止中のインスタンスは CPU も報告停止も意味のある形で示さないため表示せず、サーバーレス インスタンスが CPU 高負荷、応答の遅延、報告停止のアラートを出すことはありません。

知っておくと便利

  • metrics: false で無効にできます。metricsIntervalMs で 30 秒の間隔を最短 10 秒まで変更できます。
  • スパンと同じ期間保存されます: Free と Solo は 7 日、Team と Scale は 14 日。サーバーのデータはどの枠にも含まれません。
  • メモリの割合はマシンの総メモリを基準にします。ホストより低いメモリ上限のコンテナでは、代わりに使用メモリを見てください。

お困りですか?support@blipit.io までメールしてください。各プロジェクトのキーとプロジェクト ID は app.blipit.io の「APIキー」にあります。