supervisor簡潔用例

  • supervisor是什麼python

    superviosr是一個Linux/Unix系統上進程監控和管理的工具,它由python編寫,能夠用pip安裝。supervisor能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓linux

  • 爲何要使用supervisorios

    supervisor能夠實現單個或成組地控制進程,它能夠把web服務的進程組看成本身的子進程,在子進程掛掉時重啓。對一組進程進行統一管理是linux沒有的功能web

  • supervisor組件app

    supervisord是管理其餘進程的主進程dom

    supervisorctl是supervisor客戶端的命令行工具socket

  • 主配置文件supervisord.conf工具

  1. unix_http_server 配置塊url

    在該配置塊的參數項表示的是一個監聽在socket上的HTTP server命令行

    [unix_http_server]
    file=/tmp/supervisor.sock   ; (the path to the socket file)
    chmod=0766                 ; socket file mode (default 0700)
    • file: unix domain socket的文件路徑。supervisorctl經過它與supervisord進行通訊

    • chmod: 修改supervisor.sock文件的權限

  2. supervisord 配置塊

    該配置塊的參數項是關於supervisord進程的全局配置項

    [supervisord]
    logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
    logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
    logfile_backups=10           ; (num of main logfile rotation backups;default 10)
    loglevel=info                ; (log level;default info; others: debug,warn,trace)
    pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
    nodaemon=false               ; (start in foreground if true;default false)
    minfds=1024                  ; (min. avail startup file descriptors;default 1024)
    minprocs=200                 ; (min. avail process descriptors;default 200)
    • logfile: log文件路徑。與子進程的日誌不一樣

    • logfile_maxbytes: log文件達到多少自動進行輪轉,單位是kb、單位是KB、MB、GB。若是設置爲0則表示不限制日誌文件大小。當日志大小超過50MB時,生成一個新的日誌文件

    • logfile_backups:輪轉日誌備份的數量,默認是10,若是設置爲0,則不備份

    • loglevel:error、warn、info、debug、trace、blather、critical

    • pidfile:pid文件路徑

    • nodaemon:若是設置爲true,則supervisord在前臺啓動,而不是以守護進程啓動

    • minfds:supervisord在成功啓動前最少系統空閒的文件描述符,默認1024

    • minprocs:supervisord在成功啓動前最小可用的進程描述符,默認200

  3. supervisorctl配置塊

    [supervisorctl]
    serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket
    • serverurl: 這個是supervisorctl本地鏈接supervisord的時候,本地UNIX socket路徑,注意這個是和前面的[unix_http_server]對應的
      默認值就是unix:///tmp/supervisor.sock
  4. rpcinterface配置塊

    這個選項是給XML_RPC用的,若是想使用supervisord或者web server這個選項必需要開啓
    [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

  5. include配置塊

    用於將寫在cong.d中的*.ini文件內容讀入主配置文件

    通常一個ini文件包含一個program配置塊。用於配置web服務進程的啓動命令、目錄、日誌位置等
    [include] files = /etc/supervisor/conf.d/*.ini

  • program配置塊
    [program:myserver] command=/home/my_web_server/venv/bin/gunicorn -w4 -b0.0.0.0:8105 app.wsgi:application directory=/home/my_web_server/ user=deploy stdout_logfile=/home/logs/server.log stderr_logfile=/home/logs/server.err.log
    • command:啓動程序使用的命令,能夠是絕對路徑也能夠是相對路徑

    • directory:supervisord在生成子進程的時候會切換到該目錄

    • user: 若是supervisord以root運行,則會使用這個設置用戶啓動子程序

    • stdout_logfile:進程標準輸出的文件位置

    • stderr_logfile:進程錯誤日誌輸出的文件位置

    還有一些可選配置:

    • autorestart = true 在子進程掛掉後重啓

    • priority=1子進程啓動關閉優先級,優先級低的,最早啓動,關閉的時候最後關閉。數字越高,優先級越高

    • numprocs=1啓動進程的數目

  • 在新建了ini配置文件後,要用supervisorctl從新加載配置文件

    supervisorctl reload

相關文章
相關標籤/搜索