Dagobahのインストールマニュアル---Cronタイミングタスク管理ツール


Dagobahの概要
Dagobashはpythonで記述された単純な依存関係に基づくジョブスケジューラである.Dagobahでは、Cron構文を使用してスケジューリング作業を手配できます.Webインタフェースでドラッグをクリックして、各作業の一連のタスクの依存関係を定義することができます.
Dagobashは、失敗した単一のタスクを再試行し、有用な作業タスクの成功と失敗のレポートを送信し、多くのバックグラウンドでデータを永続化することができます.これにより、データの損失を心配する必要はありません.
githubプロジェクトアドレス:Dagobah
インストール
基本環境:
Linux
RedHat
CentOS 5.8
2.6.18-308.el5 x86_64  GNU/Linux

Pythonバージョン
Python 2.7

SQLiteインストール
pip install pysqlite sqlalchemy alembic

注意:このようにsqliteを直接インストールするのは失敗する可能性がありますので、まずソフトウェアをインストールする必要があります.
yum install sqlite*

MongoDBインストール
pip install pymongo

dagobahdインストール
pip install dagobah

注意:私の既存の環境では、このようにインストールすると、dagobahを起動するとエラーが発生します.主にlxmlソフトウェア依存のlibxml 2はCentOS 5.8のデフォルトバージョンで低すぎます(
エラー:
  etree.so          

依存関係の表示
 ldd  /usr/local/lib/python2.7/site-packages/lxml/etree.so

結果
        linux-vdso.so.1 =>  (0x00007fff11af1000)
        libxslt.so.1 => /usr/lib64/libxslt.so.1 (0x00002b32a90c9000)
        libexslt.so.0 => /usr/lib64/libexslt.so.0 (0x00002b32a92ff000)
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00002b32a9511000)
        libz.so.1 => /usr/lib64/libz.so.1 (0x00002b32a985c000)
        libm.so.6 => /lib64/libm.so.6 (0x00002b32a9a71000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b32a9cf4000)
        libc.so.6 => /lib64/libc.so.6 (0x00002b32a9f10000)
        libgcrypt.so.11 => /usr/lib64/libgcrypt.so.11 (0x00002b32aa26a000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002b32aa4dc000)
        libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x00002b32aa6e0000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003084e00000)

libxml 2が見えます.so.2は依存する古い/usr/lib 64/下のバッグです.
解決策
  • ソースコードインストールlibxml 2とlibxslt
  • wget http://xmlsoft.org/sources/libxml2-2.9.0.tar.gz
    tar -zxvf libxml2-2.9.0.tar.gz
    cd libxml2-2.9.0
    ./configure
    make
    sudo make install
    
    wget http://xmlsoft.org/sources/libxslt-1.1.27.tar.gz
    tar -zxvf libxslt-1.1.27.tar.gz
    ./configure
    make
    sudo make install
    

    2、インストールしたlxml 2をエクスポートする
    export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH 
    
  • lxml
  • をインストール
    pip install lxml
    

    4、依存関係の表示
    [root@solr]# ldd  /usr/local/lib/python2.7/site-packages/lxml/etree.so
            linux-vdso.so.1 =>  (0x00007fff11af1000)
            libxslt.so.1 => /usr/lib64/libxslt.so.1 (0x00002b32a90c9000)
            libexslt.so.0 => /usr/lib64/libexslt.so.0 (0x00002b32a92ff000)
            libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x00002b32a9511000)
            libz.so.1 => /usr/lib64/libz.so.1 (0x00002b32a985c000)
            libm.so.6 => /lib64/libm.so.6 (0x00002b32a9a71000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b32a9cf4000)
            libc.so.6 => /lib64/libc.so.6 (0x00002b32a9f10000)
            libgcrypt.so.11 => /usr/lib64/libgcrypt.so.11 (0x00002b32aa26a000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00002b32aa4dc000)
            libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x00002b32aa6e0000)
            /lib64/ld-linux-x86-64.so.2 (0x0000003084e00000)
    

    依存関係がlibxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x00002b32a9511000)になっていることがわかります
    4、dagobahの再インストール
    pip install dagobah
    

    5、dagobahを起動する
    ./dagobah
    

    dagobahのデフォルトポートは9000です
    起動時にプロファイル~/.dagobahd.ymlが生成されます
    Dagobahd:
    
      # host and port for the Flask app. set host to 0.0.0.0 to listen on all IPs
      host: 127.0.0.1
      port: 9000
    
      # the app's secret key, used for maintaining user sessions
      # WARNING: change this to your own random value!
      # an easy way to create a key with python is "import os; os.urandom(24)"
      app_secret: 'g\xde\xf5\x06@K\xf5:\x1fmZ\xac\x1fO\xe8\xcd\xde\xcf\x90\xaeY7\x8c\x96'
    
      # credentials for single-user auth
      auth_disabled: False
      password: dagobah
    
      # choose one of the available backends
      # None: Dagobah will not use a backend to permanently store data
      # sqlite: use a SQLite database. see the SQLite section in this file
      # mongo: store results in MongoDB. see the MongoBackend section in this file
      backend: sqlite
    
      # choose one of the available email templates
      # None: Dagobah won't send you emails when a job finishes or fails
      # text: Simple text format
      # basic: Simple, tabular HTML email
      email: basic
    
    Logging:
    
      # change to False to disable logging entirely
      enabled: True
    
      # specify a full path to the log file
      # alternatively, specify "default" to log to a file in the dagobahd directory
      logfile: default
    
      # specify the log level to use
      # choose one of [debug, info, warning, error, critical]
      loglevel: info
    
    Email:
    
      # set host and port of the SMTP server to use to send mail
      # e.g. host: smtp.gmail.com   port: 587
      host: smtp.gmail.com
      port: 587
    
      # email server authentication
      user: None
      password: None
    
      # tls is required for some mail servers, specifically Gmail
      use_tls: True
    
      # from address in the emails from Dagobah.
      # supports the following special variables within curly brackets {}
      # {HOSTNAME}: the machine's hostname
      from_address: dagobah@{HOSTNAME}
    
      # list of email addresses to send reports to, e.g. ['[email protected]']
      recipients: []
    
      # sets whether Dagobah sends you emails on successful job completion
      send_on_success: True
    
      # sets whether Dagobah sends you emails on job and task failures
      send_on_failure: True
    
    SQLiteBackend:
    
      # specify a full path to the sqlite database file
      # alternatively, specify "default" to create a database file in the dagobahd directory
      filepath: default
    
    MongoBackend:
    
      # connection details to a mongo database
      host: localhost
      port: 27017
      db: dagobah
    
      # names of collections within the db specified above
      dagobah_collection: dagobah
      job_collection: dagobah_job
      log_collection: dagobah_log
    

    デフォルトのポートとIPを使いたくない場合は、プロファイルを変更できます
    6、Dagobahへのアクセス
    ブラウザでの入力http://ip:port
    以下のスクリーンショットは公式の画像を借ります
    ログイン
    パスワードはプロファイルにあります
    jobの追加
    ジョブの下にタスクを追加
    タスクの直接依存関係の指定
    このタスクの画像をクリックしてドラッグすると、タスクの直接的な関係を描くことができます.
    注意:タスク依存関係を定義すると、タスクが失敗した場合、後続のタスクが実行されるようです.これは私が強い関係であれば、少し問題があります.これは先に表記して、後でよく研究します.
    リモートホストへのタスクの追加
    注意:pip install dagobahでインストールしたバージョン(CentOS 5.8)はリモートサーバのタスク追加機能をサポートしていないため、ソースコードでインストールする必要があります.
    ソースインストールDagobah
    githubからソースコードを取得
    git clone https://github.com/thieman/dagobah.git
    
    python setup.py install
    

    リモートサーバを構成するには、SSH configを構成する必要があります.
    公式のSSH configドキュメントアドレスについて
    vim ~/.ssh/config
    

    次の情報を追加
    # Contents of ~/.ssh/config
    Host test2
         HostName 192.168.0.1
         User root
         IdentityFile ~/.ssh/id_rsa
    Host test1
         HostName 192.168.0.2
         User root
         IdentityFile ~/.ssh/id_rsa
    

    注意:test 2はホスト192.168.0.1の別名です.
    sshの秘密免除を構成して、命令ssh-keygenssh-copy-idを使って、あなたは知っていて、詳しい過程は紹介しません
    dagobahの起動
    dagobahd
    

    注意:dagobahインストール後、コマンドパスは/usr/local/bin/dagobahdです.
    けっかん
  • jobとjobの依存関係を定義できない
  • taskとjob間の依存関係を定義できない
  • taskとtask依存の場合、中間のtaskが失敗した場合、後続のtaskは依然として実行を継続することができ、その設計の原則はタスクの失敗であり、全体のタスクの実行に影響を与えないが、私が強い依存であれば、問題がある