Linux運用保守ツールSupervisor(プロセス管理ツール)のインストールと使用

Linux運用保守ツールSupervisor(プロセス管理ツール)のインストールと使用

1. はじめに

Supervisor は Python で開発された汎用プロセス管理プログラムです。通常のコマンドライン プロセスをバックグラウンド デーモンに変換し、プロセスの状態を監視し、異常終了したときに自動的に再起動することができます。現在、Supervisor はほとんどの Unix システムで実行できますが、Windows システムでの実行はサポートされていません。 Supervisor には Python 2.4 以降が必要ですが、Python 3 バージョンはサポートされていません。

2. 組み込みのWeb管理プログラム

スーパーバイザーには 4 つのコンポーネントがあります。

1. 監督者
Supervisor バックグラウンド サービスを実行します。このサービスは、Supervisor で管理する必要があるサブプロセスの開始と管理、クライアントからの要求への応答、予期せず終了したサブプロセスの再起動、サブプロセスの stdout と stderr のログへの書き込み、イベントへの応答などに使用されます。これはSupervisorの中核部分です。

2. スーパーバイザー
これは supervisord のクライアントと同等であり、サブプロセスのステータスの確認やサブプロセスの開始またはシャットダウンなどの指示をユーザーが supervisord サービスに送信できるコマンドライン ツールです。リモート マシン上のサービスを含むさまざまな監視サービスに接続できます。

3. Web サーバー これは supervisord の Web クライアントです。ユーザーは Web ページ上で supervisorctl と同様の機能を実行できます。

4. XML-RPC インターフェース これは、サードパーティ統合用に予約されたインターフェースです。サービスはこれらの XML-RPC インターフェースをリモートで呼び出して、supervisord によって管理されるサブプロセスを制御できます。上記の Web サーバーは、実際にはこの XML-RPC インターフェイスを通じて実装されています。

3. インストール

以下の3つの方法からお選びいただけます

1. インストール

echo "supervisor-3.3.4 のインストール (はいの場合は 1 を入力してください。いいえの場合はその他を入力してください):" 
SVを読む
[ "$SV" = "1" ]の場合; 
	cd $ベースパス
	$basepath/supervisor-3.3.4.zip を解凍します。 
	cd スーパーバイザー-3.3.4
	python setup.py インストール
	echo "supervisor-3.3.4 のインストールが完了しました"
それ以外
	echo "supervisor-3.3.4 をインストールしないことを選択しました"
フィ

2. ソースコードのインストール

 https://pypi.python.org/packages/7b/17/88adf8cb25f80e2bc0d18e094fcd7ab300632ea00b601cbbbb84c2419eae/supervisor-3.3.4.tar.gz を実行します。
 tar -zxvf スーパーバイザー-3.3.4.tar.gz
 cd スーパーバイザー-3.3.4
 python setup.py install #ローカルの python バージョンは python2.7 です

3. Yumのインストール

yum インストール スーパーバイザー

4. 設定ファイル

インストール後に /etc/supervisord.conf 構成ファイルが存在しない場合は、次のコマンドで生成します。

echo_supervisord_conf > /etc/supervisord.conf

5. スタートアップ

スーパーバイザード -c /etc/supervisord/supervisord.conf 
	echo "supervisor-3.3.4 が正常に起動しました"

6. スタートアップを設定する

systemctl は supervisord.service を有効にします

7. supervisordが実行中かどうかを確認する

ps aux | grep supervisord

8. supervisorctl 管理コマンド

supervisorctl status #ステータス supervisorctl stop nginx #nginx をシャットダウン
 supervisorctl start nginx #nginxを起動する
 supervisorctl restart nginx #nginxを再起動します
 supervisorctl reload #すべてを再起動 supervisorctl update #設定を更新

このコマンドは、個別に使用することも、組み合わせて使用​​することもできます。

9. 設定ファイルの説明

[unix_http_サーバー]
file=/tmp/supervisor.sock ;UNIX ソケット ファイル、supervisorctl が使用します。chmod=0700 ;ソケット ファイル モード、デフォルトは 0700 です。
;chown=nobody:nogroup ;ソケットファイルの所有者、形式: uid:gid

;[inet_http_server] ;Web 管理インターフェースを提供する HTTP サーバー;port=127.0.0.1:9001 ;Web 管理バックエンドの IP とポート。パブリック ネットワークに公開されている場合は、セキュリティに注意する必要があります;username=user ;管理バックエンドにログインするためのユーザー名;password=123 ;管理バックエンドにログインするためのパスワード [supervisord]
logfile=/tmp/supervisord.log; ログファイル、デフォルトは $CWD/supervisord.log
logfile_maxbytes=50MB; ログ ファイルのサイズ。これを超えるとローテーションされます。デフォルトは 50MB です。0 に設定すると、サイズ制限がないことを意味します。logfile_backups=10; ログ ファイルのバックアップのデフォルト数は 10 です。0 に設定すると、バックアップがないことを意味します。loglevel=info; ログ レベル。デフォルトは info、その他: debug、warn、trace
pidfile=/tmp/supervisord.pid ;pid ファイル nodaemon=false ;フォアグラウンドで起動するかどうか。デフォルトは false、つまりデーモン モードで起動します。 minfds=1024 ;開くことができるファイル記述子の最小値。デフォルトは 1024 です。
minprocs=200; 開くことができるプロセスの最小数。デフォルトは200です。

[スーパーバイザーctl]
serverurl=unix:///tmp/supervisor.sock ; UNIX ソケット経由で supervisord に接続します。パスは unix_http_server 部分のファイルと一致します。 serverurl=http://127.0.0.1:9001 ; HTTP 経由で supervisord に接続します

; [program:xx] は管理対象プロセスの構成パラメータ、xx はプロセスの名前です [program:xx]
command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; プログラムの起動コマンド autostart=true ; supervisord の起動時に自動的に起動 startsecs=10 ; 起動後 10 秒経過しても異常終了がない場合は、プロセスが正常に起動したことを意味します。デフォルトは 1 秒です autorestart=true ; プログラム終了後、自動的に再起動します。オプションの値: [unexpected、true、false]。デフォルトは、unexpected です。つまり、プロセスは、誤って強制終了された場合にのみ再起動します startretries=3 ; 起動が失敗した場合の自動再試行回数。デフォルトは 3 です
user=tomcat; プロセスを開始するために使用されるユーザー。デフォルトはrootです。
priority=999; プロセス起動の優先度、デフォルトは999、値が小さいプロセスが最初に起動されます redirect_stderr=true; stderrをstdoutにリダイレクトします、デフォルトはfalseです
stdout_logfile_maxbytes=20MB; stdout ログ ファイルのサイズ、デフォルトは 50MB
stdout_logfile_backups = 20 ; stdout ログファイルのバックアップ数。デフォルトは 10 です。
; stdout ログ ファイル。指定されたディレクトリが存在しない場合は正常に起動できないため、手動でディレクトリを作成する必要があります (supervisord はログ ファイルを自動的に作成します)。
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false; デフォルトは false で、プロセスが強制終了されたときに、子プロセスを含むプロセス グループに停止信号を送信するかどうかを指定します。killasgroup=false; デフォルトは false で、子プロセスを含むプロセス グループに強制終了信号を送信します。その他の設定ファイルが含まれます [include]
files =/etc/supervisord.d/*.ini ; .iniで終わる1つ以上の設定ファイルを指定できます。

10. ini設定ファイルの例

[プログラム:MysqlToRedis]
ディレクトリ = /data/py/SmartServerModel/SmartServerModel/ModelManagerServer/
コマンド = python3 -u mysql2redis_robot_config.py cs
自動起動 = true
自動再起動=true
開始秒数 = 5
ユーザー =root
リダイレクトstderr = true
stdout_logfile = /data/logs/supervisord/mysqltoredis.log

[プログラム:SmartBinLog]
コマンド = /data/go/src/SmartBinLog/SmartBinLog
自動起動 = true
自動再起動=true
開始秒数 = 5
ユーザー =root
リダイレクトstderr = true
stdout_logfile = /data/logs/supervisord/smartbinlog.log

[グループ:nlp]
programs=MysqlToRedis、SmartBinLog ;server、progname2 はそれぞれ [program:x] 定義の 'x' を参照します
priority=999 ; 相対的な開始優先度(デフォルト 999)

11.ウェブページ管理プログラムを開く

conf設定ファイル内のコメント行をすべてコメント解除し、ポート、ユーザー名、パスワードを変更します。

[inet_http_server] ;Web 管理インターフェイスを提供する HTTP サーバーport=127.0.0.1:9001 ;Web 管理バックエンドの IP とポート。パブリック ネットワークに公開されている場合は、セキュリティに注意してくださいusername=user ;管理バックエンドにログインするためのユーザー名password=123 ;管理バックエンドにログインするためのパスワード

12. 「unix:///tmp/supervisor.sock そのようなファイルはありません」という問題を解決する

時々、次のような問題に遭遇します:


解決策は簡単です:

①. 既存のsupervisorctlプロセスを停止する


②. 設定ファイル「/etc/supervisord.conf」を修正し、tmpをetcに変更します。 /tmpディレクトリ内のファイルはオペレーティングシステムによって定期的にリサイクルされるため、変更する必要があります。

③. 変更した設定ファイルを使用して supervisord を起動すると、すべてが正常に戻ります。

以下もご興味があるかもしれません:
  • Linux プロセス管理ツール スーパーバイザーのインストールと設定のチュートリアル
  • Linux でのプロセスデーモン スーパーバイザーのインストール、構成、および使用
  • Supervisor のインストールと構成の詳細な説明 (Linux/Unix プロセス管理ツール)
  • PHPプログラマーはスーパーバイザーを使用してデーモンプロセスを実装するLinuxシリーズをプレイします
  • スーパーバイザーウォッチドッグの使い方を3分で学ぶ

<<:  Vueメソッドに基づくシンプルなタイマーの実装

>>:  MySQLデュアルマシンホットスタンバイと負荷分散の実装手順の詳細説明

推薦する

ウェブページの色特性の分類

色特性の分類あらゆる色は、赤、緑、青の三原色から構成されます。三原色の中で暖色なのは赤だけなので、作...

DIV、テーブル、XHTML のウェブサイト構築の違いの分析と説明

簡単に言えば、ウェブサイト構築とは、「この人はどんな外見をしているのか」と「この人はどんな内面を持っ...

CSSでスペースを処理する方法

1. 宇宙のルールHTML コード内の空白は通常、ブラウザによって無視されます。 <p>...

Linux 上の Tomcat で MySQL にデータを挿入するときに中国語の文字化けが発生する問題を解決する

1. 問題Windows 上の Eclipse を使用して開発されたプロジェクトは Windows ...

INS と DEL を使用してドキュメントの変更をマークする方法の詳細な説明

ins と del は、HTML 4.0 で導入され、文書の作成時に作成者が共同作業できるようにし、...

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する複数の方法

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する 7 つの方法。コー...

Dockerイメージを完全にアンインストールする手順

1. docker ps -a 実行中のイメージプロセスを表示する [root@mylinux~]#...

SQLの最適化では間違いがよく起こります。それはMySQLのExplain Planの使い方を理解していないからです。

目次1. 準備2. 説明計画の概要3. フィールドの詳細な説明4. パーティションクエリにはパーティ...

JS+AJAX は、州、市、地区のドロップダウン リストのリンクを実現します。

この記事では、州、市、地区のドロップダウンリストのリンクを実現するためのJS + AJAXの具体的な...

Nginx で何ができるかの包括的な分析

序文この記事は、サードパーティのモジュールをロードせずにNginxで処理できることのみに焦点を当てて...

Nginx リバース プロキシでセッション永続性を実装する 2 つの方法の詳細な説明

1. ip_hash: ip_hash は、送信元アドレス ハッシュ アルゴリズムを使用して、サーバ...

HTML フォームタグチュートリアル (2):

このチュートリアルでは、ウェブデザインにおけるFORMフォームタグのさまざまな属性の応用を紹介します...

Elasticsearch を使用する際の一般的な問題の解決策

1. redis で使用すると Netty の起動競合が発生するため、***Application ...

MySQLストアドプロシージャを変更する詳細な手順

序文実際の開発では、ビジネス要件が変更されることが多いため、ストアド プロシージャの特性を変更するこ...

Mysql SQL ステートメントのコメント

MySQL SQL ステートメントにコメントを追加できます。MySQL SQL ステートメントのコメ...