トップ OSS紹介 PM2

PM2

NRIのOpenStandiaが提供するPM2最新情報

PM2情報

PM2とは

Keymetrics 社によって開発が行われているNode.jsアプリケーションのプロセス管理を行うためのオープンソースです。

PM2では、Node.jsのアプリケーションごとの起動停止管理やログ管理、モニタリング(CPUやメモリ)が可能です。また、Node.jsアプリケーションのプロセスの状態を常に監視しており、プロセスが停止した場合やメモリの上限を超えた場合にプロセスを自動で再起動させる機能があります。また、アプリケーションの変更を検知し、自動でプロセスを再起動することも可能です。
またPM2の配備システムを利用することで、gitで管理されているNode.jsアプリケーションを複数環境に一括で配備・更新したりすることが可能です。

PM2には下記の3つのプロダクトが存在します。その中で、PM2 Runtimeがオープンソースとして無償で利用できます。

  • PM2 Runtime

    ターミナルベースでのモニタリングやリアルタイムにWebベースでのモニタリングが可能なオープンソースです。
  • PM2 Plus

    Node.jsモニタリングソリューションを、Webベースのモニタリングインターフェースによって提供するSaaSソフトウェアです。
  • PM2 Enterprise

    PM2の全機能が使えるだけでなく、企業が使いやすいようにパーソナライズ化されているSaaSソフトウェアです。

PM2の主な顧客としては、PayPal、Microsoft、IBM、SOUTHWEST.COMなどがあります。これら顧客のWebアプリケーションの一部で、PM2が利用されています。

主な特徴

動作設定

PM2で管理するプロセスについて、細かな設定が可能です。設定は、JavaScript形式、JSON形式、YAML形式をサポートします。

ソースマップサポート

version 1.0.2 以降では、JavaScriptのソースマップ機能が利用可能です。これによりJavaScriptデバッグが容易になります。

PaaS 互換

PM2のAPIを利用することで、さまざまなPaaS(Heroku/Google App Engine/Azure)上から、PM2との連携が可能です。

監視とリロード

アプリケーションのファイルやディレクトリの変更を検知して、自動的にアプリケーションを再起動できます。

ログ管理

リアルタイムログの確認や、JSON形式での情報取得、ログローテーションなどが利用できます。

モニタリング

プロセスごとのCPU/メモリ使用率、メタデータ、グローバルログの確認ができます。

モジュールシステム

PM2のモジュールはNPMリポジトリで管理されており、ユーザの要件に応じて必要なPM2モジュールを追加していくことが可能です。また、独自モジュールを自作することも可能です。

最大メモリ制限

設定した上限メモリ値を超えたプロセスを自動で再起動させることが可能です。

クラスタモード

Node.jsアプリケーションプロセスを全CPU、全CPU - 1、特定CPUに割り当てたりすることが可能です。

ホットリロード

reloadコマンドにより、プロセスのダウンタイム0秒を実現できます。

開発者モード

開発者向けに開発モード(ファイルの変更に応じたリスタートに対応など)でアプリケーションを起動させることが可能です。

起動スクリプト

起動システム(systemd、upstart、launched、rcd、systemv)に応じた起動スクリプトが提供されます。

CLIコマンド自動補完

PM2モジュールのインストールにより、PM2コマンドのタブで補完が可能です。

配備ワークフロー

git と連携した簡易で強力な配備システムが利用可能です。これにより、細かなリビジョン管理や、複数のホストへの配備、秘密鍵を使ったSSH接続などが利用可能です。

Keymetrics モニタリング

Keymetricsと連携させることにより、複数のPM2を、さらにリッチで詳細な統計データをモニタリングすることが可能になります。

PM2 API

PM2が提供しているさまざまなAPIを利用して、プログラムからPM2の動作を変更することが可能です。

類似プロダクト

PM2以外で、Node.jsアプリケーションのプロセスを管理できる主なプロダクトとしては、

  • StrongLoop Process Manager
  • Forever

という2つのプロダクトがあります。

StrongLoop Process Managerは、IBM傘下の元で開発が行われているプロセスマネージャです。こちらは、PM2とほぼ同等の機能が提供されており、大きな差はほとんどありません。大規模利用向けなどの用途で、開発元企業による有償サポートが提供されている点も似ています。

Foreverは、PM2やStrongLoopに比べると提供されている機能が限定されるため、小規模なプロセス管理に向いています。 StrongLoop のサイトにて、それぞれのプロダクトについての細かな機能比較が記載されておりますので、こちらが参考になります。

動作環境

PM2 は、Node.js のパッケージとして提供される為、Node.jsが稼動する以下の環境で動作します。

  • Windows
  • macOS
  • Linux(x86/x64)
  • Linux(ARM)
  • SunOS
  • Linux on Power Systems
  • Linux on System z
  • AIX on Power Systems

上記のうち、起動スクリプトをサポートしているOSは以下のとおりです。

  • systemd: Ubuntu >= 16, CentOS >= 7, Arch, Debian >= 7
  • upstart: Ubuntu <= 14
  • launchd: Darwin, MacOSx
  • rcd: FreeBSD
  • systemv: Centos 6, Amazon Linux

PM2のライセンス

PM2は、GNU Affero General Public License 3.0(AGPL 3.0)の条件下で利用が可能です。

製品ダウンロード

バイナリモジュールは、npm(Node.js のパッケージマネージャ)から提供されます。
ソースコードは、こちらからダウンロードが可能です。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Node.js

    Node.js

    ノードジェイエス。Node.jsとはサーバ側で動作するJavaScriptプラットフォームです。

  • Nginx
    サポート対象

    Nginx

    エンジンエックス。Apache HTTP Serverに次ぐ利用率で人気急上昇中の高速・高性能Webサーバです。

  • Kubernetes
    サポート対象

    Kubernetes

    クーバネティス。Dockerをはじめとするコンテナ化されたアプリケーションの展開、スケーリング、管理を行うオープンソースのプラットフォームです。

  • Docker
    サポート対象

    Docker

    ドッカー。ソフトウェアコンテナを用いたアプリケーションのデプロイメントを自動化する仮想化オープンソースソフトウェアです。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。