supervisordプロセス管理サービス

簡単な紹介

公式サイトのhttp://supervisord.org/の
スーパーバイザーは、ユーザがクライアント/サーバ・システムの数を監視し、Linuxオペレーティングシステムの制御プロセスを可能にすることです。監視サーバーを実行するために、Python言語で書かれた、問題すぐに自動警告および自動再起動機能を特定します。スーパバイザ・プログラムは、非デーモンプログラムの管理を必要とし、supervisordは、あなたがデーモンプログラムにそれを回すのに役立ちます。

パッケージ

  • supervisord
    サービス側、彼は彼自身のプロセスの下の子プロセスを起動するための責任があった、再起動のクラッシュや子プロセスの異常終了から対応するクライアントコマンドは、輸出関連のログは、生成されたとの間のアクティブな子への時間のために管理され
    たプロファイル場所:権利の合理的な配分に注意を払う/etc/supervisord.conf

  • supervisorctl
    コマンドラインクライアントは、ユーザーは、異なるsupervisorctlプロセス、ビューへの接続を開始し、子、プロセスを実行している子のリストを停止することができ、それを通して、提供supervisordためのシェルのようなインターフェイスがあります。認証を提供し、TCPを介して相互作用し、統一構成[supervisorctl]セクション

  • サーバーのWeb
    にアクセスして、Web管理インターフェイスのsupervisorctl、HTTPを:// localhostを:9001 /サブプロセスの状態を管理し、[inet_http_server]この設定します

インストール

前提条件は、Python環境を持つことである、Linux環境では、一般的にUbuntuは、たとえばここに、パイソンが付属しています。
1.aptインストール
apt-get install -y supervisor
2.easy_installインストール
easy_install supervisor

スタート

systemctl start supervisor

設定ファイルの構文解析

設定ファイルの生成:
echo_supervisord_conf > /tmp/supervisord.conf
通常インストールプロファイルaptのデフォルトの場所後には/etc/supervisor/supervisord.confです。これはコメントの先頭にセミコロンで
コマンドラインsupervisorctlこのを通じて達成されるので、このファイルには、ソケットのウェブサーバによって開始された[unix_http_server]#、これは、でなければなりません。
= /tmp/supervisor.sockファイル
のchmodを0777 =
chownコマンド=誰:nogroupが
ユーザー名=ユーザー
パスワード= 123

[inet_http_server]#は、ネットワークポートサーバーのWeb経由で開始
ポート= 127.0.0.1:9001
ユーザ名=ユーザ
パスワード= 123

【supervisord]#これは、サービス構成で
ログファイル= /tmp/supervisord.logログファイル
logfile_maxbytes = 50メガバイトの最大ログファイルサイズ
logfile_backups = 10ポーリングでバックアップログの数
ログレベル= INFOログレベル
pidファイル= /tmp/supervisord.pid PIDファイル位置
nodaemon = trueの場合、スーパーバイザは、フロントエンドから開始されます偽
minfds = 1024は、ファイルディスクリプタの最小数の成功の開始をsupervisord
minprocs = 200は、数のプロセス記述子の最小プロモーター成功supervisord
のumask = 022
、このことに留意すべきで、ユーザー開始=聖油ユーザーをユーザがディレクトリに適切な許可持っている必要があり
RPCプロトコルに識別子=スーパバイザ・スーパバイザ・プロセス識別子列、ユーザインタフェースを
全体に拡張するsupervisordサービスdaemonizes S(ここで)使用可能%、このディレクトリに切り替え、ディレクトリ= / TMP変数プロファイル
ファイルは、開始時刻に存在してログインsupervisord空のAUTOサブ禁止=真nocleanup
ログファイルディレクトリからchildlogdir =を/ tmp AUTO
strip_ansiを= falseを削除サブログファイル内のすべてのANSIエスケープシーケンス
= KEY1 =「VALUE1」環境、KEY2 =「value2の」環境変数のキー/値のリスト、右?

【supervisorctl]
のserverURL = UNIX:///tmp/supervisor.sockの
ユーザ名=クリス
パスワード= 123
。supervisorctlプロンプトとして使用するプロンプト= mysupervisorストリング作为supervisorctl提示字符串。

構成管理プロセス

設定ファイルの場所:/etc/supervisor/conf.d/
一般的に以下の設定項目があります。
PROCESS_NAME =%(program_nameの)S番号プロセス名は、プログラム名がデフォルトで
コマンドランチャーコマンド
プロセスのの= 1つの#番号numprocsの
ディレクトリ= / tmpに#のパス
umask = 022#マスク
優先度= 999#優先度、大きいが早く開放され
=真#自動再始動AUTORESTART
startsecs = 10の#は時間(秒)待機開始
#は=を開始startretriesを3回の試行が
stopsignal = TERM位閉じます信号
stopwaitsecs =#10レイテンシ閉じる前に
ユーザー=聖油位モニターユーザー権限
= FALSE#はエラー出力リダイレクトにredirect_stderr
stdout_logfileを= / /パス#入力ログリダイレクト
stdout_logfile_maxbytes = 1メガバイト#ログサイズ
stdout_logfile_backups = 10#ログバックアップ
stdout_capture_maxbytesを= 1MBの
stderr_logfile = / A /パス
stderr_logfile_maxbytes = 1メガバイト
stderr_logfile_backups = 10
= 1メガバイトstderr_capture_maxbytes
環境。1 = A = B = 2#事前に定義された環境変数
のserverURL = AUTO位のURLシステム

よりよく表示するためには、私は単純なサービスを記述するためにここにいます。以下の特定のコード:

#!/usr/bin/env python
import socket

HOST, PORT = '', 8080

listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
while True:
    client_connection, client_address = listen_socket.accept()
    request = client_connection.recv(1024)
    http_response = """\
HTTP/1.1 200 OK
   Hello World!
"""
    client_connection.sendall(http_response)
    client_connection.close()

このスクリプトは、単純なWebサーバ、ポート8080で、すべてのアクセスは、Hello Worldのを返します!

ここでは、プロフィールを見て/etc/supervisor/conf.d/webserver.conf


[program:webserver]
autostart=true
startretries=3
command=/opt/webserver.py

ビューステータス

root@0c1fc23d1398:~# supervisorctl status
webserver                        RUNNING   pid 1120, uptime 0:08:07

supervisorctlコマンド

1.対話モード
で直接supervisorctlには対話モードに入ります。

root@0c1fc23d1398:~# supervisorctl 
webserver                        RUNNING   pid 1120, uptime 0:09:40
supervisor> 

2.コマンドライン
の言及セクション上記supervisorctl status

3.特定のコマンドアイテムの
相互作用と同じコマンドラインモードを持っています。
再ロードされている構成の再読み込み
新しいプロセスグループに参加するアップデート子プロセスの設定ファイルを使用すると、自動起動を設定した場合、= trueが新しい新しい子プロセスを開始します
すべてのプロセスのステータスを表示するステータスを
指定されたプロセスの状態を表示するには、ステータスを
、すべてがすべての子プロセスを起動開始
スタートは、指定された子プロセスを起動し
、すべてのすべての子プロセスをリセットし、再起動
指定された子プロセスが再起動します
すべては、すべての子が処理停止停止
停止が指定された子プロセスを停止して
リロード、再起動がsupervisord
子プロセスグループに追加するには、[追加の
グループから子供を削除するにはreomveプロセスを、我々は停止する必要があります。注意:再度処理を実行するために、再読み込みや更新を使用する必要性を除去した後、

Webサーバ・インタフェース

行うWebサーバーの設定セクションの「プロファイル解析」を覚えていますか?私が見に戻って覚えていないことができます。私たちは、やや低いWebインターフェイスを示しています。ブラウザと入力します。http:// <IP>:<ポート>、インターフェイスを見ることができる情報を入力し、ポップ、入力されたユーザ名とパスワードをポップアップ表示されます。


13371820-0c9893bb6ec7d3ba.PNG
Webインタフェース

あなたは、インターフェイスからのサービス、プロセスIDのステータスを確認し、時間外に実行することができます。こうした再起動など、いくつかの簡単な操作では、ように監視を記録して、ログをクリアし、停止する、があります。

よくある間違い

1.マルチプロセスが
開始監督:エラー:次のように情報を与え%( process_num)をPROCESS_NAME内に存在しなければならないnumprocsの> 1セクションの「プログラム:nginxの」(ファイル:「/etc/supervisor/conf.d/nginx.conf 「)
については、ヘルプ、使用は/ usr / binに/ supervisord -H

これは、プロファイルフォーマットではなく、形式は以下のプロファイルである
時numprocsの= 1、PROCESS_NAME =%(program_nameの)だ
numprocsの> =時間2%(program_nameの)S _ %(process_num)

ここで、次の

[program:sleeptime]
autostart=true
startretries=3
command=/opt/sleeptime.py
#主要是下面的2行
process_name=%(program_name)s%(process_num)s
numprocs=4

プロセスのステータスを表示し、この時間は、次の4つのプロセスが起こるでしょう

root@0c1fc23d1398:/etc/supervisor/conf.d# supervisorctl status
sleeptime:sleeptime0             RUNNING   pid 1139, uptime 0:00:04
sleeptime:sleeptime1             RUNNING   pid 1140, uptime 0:00:04
sleeptime:sleeptime2             RUNNING   pid 1141, uptime 0:00:04
sleeptime:sleeptime3             RUNNING   pid 1142, uptime 0:00:03
webserver                        RUNNING   pid 1120, uptime 0:30:00

2.実行直接supervisorctlステータスレポート:
エラー:サーバー認証ザ・が必要と
ヘルプは、/ usr / local / binに/ supervisorctl -h使用
アカウントにアクセスするためのパスワードを設定しているため、我々は唯一の状態で最初のsupervisorctlに行くことができます。

主にログ情報を参照し、プログラム自体をログに記録します。

ます。https://www.jianshu.com/p/57f951a58d47で再現

おすすめ

転載: blog.csdn.net/weixin_34293902/article/details/91091830