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の主な特徴
動作設定 | 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の動作環境
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以外で、Node.jsアプリケーションのプロセスを管理できる主なプロダクトとしては、
- StrongLoop Process Manager
- Forever
という2つのプロダクトがあります。
StrongLoop Process Managerは、IBM傘下の元で開発が行われているプロセスマネージャです。こちらは、PM2とほぼ同等の機能が提供されており、大きな差はほとんどありません。大規模利用向けなどの用途で、開発元企業による有償サポートが提供されている点も似ています。
Foreverは、PM2やStrongLoopに比べると提供されている機能が限定されるため、小規模なプロセス管理に向いています。
StrongLoop のサイトにて、それぞれのプロダクトについての細かな機能比較が記載されておりますので、こちらが参考になります。
Compare with PM2 and Forever:
http://strong-pm.io/compare/
PM2のライセンス
PM2は、GNU Affero General Public License 3.0(AGPL 3.0)の条件下で利用が可能です。
PM2の公式サイト
http://pm2.keymetrics.io/
PM2のダウンロード
バイナリモジュールは、npm(Node.js のパッケージマネージャ)から提供されます。
ソースコードは、
https://github.com/Unitech/pm2/releases
からダウンロードが可能です。
PM2のサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。