AEM開発者ブログ by YAMATO

アドビ社のデリバリーパートナー大和株式会社のAEM開発者ブログです。

AEM as a Cloud Serviceのログをtail -fでリアルタイムに確認する

AEM Developerの皆様、こんにちは! 大和株式会社の熊井です。

今回は「AEM as a Cloud Serviceのログをtail -fでリアルタイムに確認する」為にはどのようなステップを踏めばいいかをご紹介します。

通常、AEMのログは、{AEM install folder}/crx-quickstart/logs配下に出力され、DispatcherとApacheに関するログは/var/log/httpdに出力されます。
AEM as a Cloud Service以外の場合はインストールサーバにssh等で入ったのちにログを確認・取得・操作することが可能です。
一方、AEM as a Cloud Serviceにおいては「インストールサーバにssh等で入る」という行為が出来ない為、ログにアクセスをするためには
・Cloud ManagerのUIを使用する
・Splunkをセットアップし、ログファイルの転送を受ける
・Adobe I/O を介してCloud Manager APIに接続する
のいずれかを選択することになります。

トラブルシューティング・デバッグの際はログをtail -f することによりファイルの監視をすることが一般的ですが、その要件を満たすためには上記3番目の「Adobe I/O を介してCloud Manager APIに接続する」ことが必須となります。

前提

  • Java 11、Node.js、npmをインストール済み
  • Admin Consoleで付与されるシステム管理者(Administrators)権限を持っている
    ※ Adobe I/Oコンソールで証明書の管理をするためには、システム管理者(Administrators)権限が必要です
    ※ プロジェクトの作成にはシステム管理者(Administrators)または開発者(Developer)権限が必要です

大きな流れ

【1】Adobe I/Oプロジェクトの作成
【2】Cloud Manager APIのセットアップ
【3】Adobe I/O CLI のセットアップ
【4】Cloud Manager plugin のセットアップ
【5】ログをtail -f する

【1】Adobe I/Oプロジェクトの作成

Adobe I/O コンソールにアクセスし、Create new projectをクリックします

以上でAdobe I/Oプロジェクトの作成が完了しました。

【2】Cloud Manager APIのセットアップ

作成したプロジェクト上でAdd APIをクリックします Experience Cloudタブの中にあるCloud Managerを選択し、Next 右下のGenerate keypairを選択(自分でkeypairを作成し公開鍵をアップロードすることも可能) 画面に表示されるpublic keyは後ほど使用するのでコピーしておきます APIを介して行いたい動作に合わせて権限を付与し、保存します(今回は全ての権限をつけています)

以上でCloud Manager APIのセットアップが完了しました。

【3】Adobe I/O CLI のセットアップ

Node.jsがインストールされていることを確認し、npmを使用してAdobe I/O CLI のインストールを行います

$ node --version
v14.18.0

$ npm install -g @adobe/aio-cli 

Adobe I/O CLI がインストールされたことを確認します

$ aio
Adobe I/O Extensible CLI

VERSION
  @adobe/aio-cli/8.3.0 win32-x64 node-v14.18.0

USAGE
  $ aio [COMMAND]
....

以上でAdobe I/O CLI のセットアップが完了しました。

【4】Cloud Manager plugin のセットアップ

Cloud Manager pluginをインストールします

$ aio plugins:install @adobe/aio-cli-plugin-cloudmanager

Adobe I/Oへの認証を行います。コマンドを打つとブラウザで認証画面が立ち上がるので、情報を入力します。

$ aio auth:login

config.jsonという名前の設定ファイルを作成します。config.jsonに記載する情報はAdobe I/Oコンソールから取得します。

//config.json 
{
  "client_id": "value from your CLI integration (String)",
  "client_secret": "value from your CLI integration (String)",
  "technical_account_id": "value from your CLI integration (String)",
  "ims_org_id": "value from your CLI integration (String)",
  "meta_scopes": [
    "ent_cloudmgr_sdk"
  ]
}

下記コマンドでconfig.jsonの場所を登録します

$ aio config:set ims.contexts.aio-cli-plugin-cloudmanager PATH_TO_CONFIG_JSON_FILE --file --json

下記コマンドで【2】Cloud Manager APIのセットアップ で作成後ダウンロードされたprivate keyの場所を登録します

$ aio config:set ims.contexts.aio-cli-plugin-cloudmanager.private_key PATH_TO_PRIVATE_KEY_FILE --file

下記コマンドで設定が正しく登録されていることを確認します

$ aio cloudmanager:list-programs
 Program Id Name                           Enabled
 ────────── ────────────────────────────── ───────
 xxxxx      Yamato Partner Sandbox Program true

以降、コマンドを打つ際に使用されるプログラムIDを登録しておきます

$ aio config:set cloudmanager_programid PROGRAMID

以上でCloud Manager plugin のセットアップ が完了しました。

【5】ログをtail -f する

$ aio cloudmanager:tail-log ENVIRONMENTID SERVICE NAME

ENVIRONMENTID:
Cloud Managerにアクセスし、Envirnmentsタブから環境を選択するとURLから取得できます SERVICE:
author, preview, preview_dispatcher, publish, dispatcher
NAME:
AEMログ: aemerror, aemrequest, aemaccess
Apache&Dispatcherログ: aemdispatcher, httpdaccess, httpderror

//sample command
$ aio cloudmanager:tail-log 1234567 author aemerror
$ aio cloudmanager:tail-log 1234567 preview_dispatcher aemdispatcher

最後に

実際にセットアップしていただくと分かりますが、ネットワークの状態などによっては多少のタイムラグはあるもののサーバ上でtail -fを行うのと似たような使い勝手でログを監視することが出来ます。
最初にも書きましたが、AEMの開発・運用を行っていくうえでログの監視は必須といっていいと思います。
皆様もセットアップを行い、ログを追い、開発/運用の速度を高めていきましょう!

最後までお読みいただき、ありがとうございました。