前回の記事でDigdag Serverを設定しましたが、サーバのログをローカルに保持し続けていると、障害時のログ確認にいちいちサーバにログインする手間が発生してしまいます。
そこで今回はdigdagの実行ログをAWSのS3に出力するように設定します。(以降Digdagはdigdagと表記します)
実施作業
digdagサーバ起動
設定しますといいましたが、設定内容的にはかなりシンプルで、前回サーバを起動するのに使用した定義ファイルに必要なパラメータを追加するだけでS3に送ることができます。
設定可能なパラメータは以下リンクの「Server-mode commands」に記載しています。
docs.digdag.io
実際に設定したパラメータはこちらです。
server.access-log.path=C:\opt\digdag\logs\accesslog database.type=postgresql database.user=digdag_role database.password=digdag_pass database.host=localhost database.port=55432 database.database=digdag_db database.maximumPoolSize=32 log-server.type=s3 log-server.s3.bucket=digdag-logs-1 log-server.s3.path=server-log log-server.s3.credentials.access-key-id=ABCDEFGHIJKLMNOPQSTUVWXYZ log-server.s3.credentials.secret-access-key=ABCDEFGHIJKLMNOPQSTUVWXYZ archive.type=s3 archive.s3.bucket=digdag-logs-1 archive.s3.path=server-archive archive.s3.credentials.access-key-id=ABCDEFGHIJKLMNOPQSTUVWXYZ archive.s3.credentials.secret-access-key=ABCDEFGHIJKLMNOPQSTUVWXYZ
少し数が多いので順番に説明します。
まず以下はサーバのアクセスログの出力場所を指定しています。S3には直接出力できないようなので、ローカルになっています。
server.access-log.path=C:\opt\digdag\logs\accesslog
次がDBの設定になります。
大体前回の記事で設定したものですが、1つコネクション数の制限のためmaximumPoolSizeというパラメータを追加しています。
database.type=postgresql database.user=digdag_role database.password=digdag_pass database.host=localhost database.port=55432 database.database=digdag_db database.maximumPoolSize=32
このパラメータでログの出力先を指定しています。
typeでs3を設定すると出力先がS3に設定され、残りのパラメータで具体的な出力先情報・認証情報を設定しています。
log-server.type=s3 log-server.s3.bucket=digdag-logs-1 log-server.s3.path=server-log log-server.s3.credentials.access-key-id=ABCDEFGHIJKLMNOPQSTUVWXYZ log-server.s3.credentials.secret-access-key=ABCDEFGHIJKLMNOPQSTUVWXYZ
以下のパラメータでは、実行が完了したタスクデータのアーカイブにS3を使用するように設定しています。
デフォルトではPostgreSQLのDB内に格納されますが、S3に出力できそうでしたので、ついでに設定してみました。
archive.type=s3 archive.s3.bucket=digdag-logs-1 archive.s3.path=server-archive archive.s3.credentials.access-key-id=ABCDEFGHIJKLMNOPQSTUVWXYZ archive.s3.credentials.secret-access-key=ABCDEFGHIJKLMNOPQSTUVWXYZ
ここまで出来たら以下のコマンドを実行して、サーバを起動します。
digdag server --config .\server.properties
起動できたらサーバにブラウザからアクセスできることを確認します。
http://localhost:65432/
出力先のS3は事前に作成しておきます。
workflow作成・実行
今回ログの出力を確認するにあたって実際にdigdagのworkflowを作成する必要があります。
そのために、公式ページの「Running sample workflow」に記載されているサンプルworkflowを使用します。
具体的な手順は省略しますが、.digファイルがあればOKです。
docs.digdag.io
サンプルworkflowファイルができたら、サーバにアップロードします。(手順は省略します)
digdagサーバのWorkflowページでRUNボタンを押下し、workflowの実行が完了したことを確認します。
S3確認
サーバの実行ログを出力するフォルダを確認するとファイルが作成されていることが確認できました。
アップロードされたファイルを解凍してみてみると以下のようなログが出力されています。
手動で実行した場合は以下のようにコンソールに出力されます。
1ファイルに以下のような1つの処理の出力が記載されているので、workflowで実行される出力される1処理に対して1ファイルが出力されているようです。
2020-10-28 02:36:25 +0000 [INFO] (0016@[0:default]+sample+repeat^sub+for-0=order=0=first&1=animal=0=dog): echo>: first dog first dog
アーカイブ用のS3は2つのファイルが出力されていることが確認できました。
感想及び所感
ということで、digdagで実行したログをS3に出力してみました。
てっきり1ファイルで出力されるものかと思ってましたが、1つの処理に対してログを出力しているようなので、アップロードのコストが余計にかかってしまう部分は気になりました。