統合の問題のトラブルシューティング

トラブルシューティングに関する一般的なヒント

JavaScript エラーがないことを確認

ブラウザの JavaScript コンソールにエラーが表示されていないか確認してください。未処理のエラーにより、後続のコードが正しく実行されない可能性があります。エラーがある場合は、どのスクリプトがどの領域でエラーの原因となっているのか確認してください。スクリプトへのパスにより、そのスクリプトがどの機能に属しているかがわかる場合があります。

コンポーネントレベルでのログ

コンポーネントレベルでステートメントを追加すると便利な場合があります。コンポーネントがレンダリングされることで、一時的なマークアップを追加して変数値を表示し、潜在的な問題を特定するのに役立ちます。次に例を示します。

<%
log.info("myVariable={}", myVariable);
%>
  
<!--
<%= myJspVariable %>
-->

<!--
${ myHtlVariable }
-->

ログについて詳しくは、 ログ監査レコードとログファイルの使用のページを参照してください。

Analytics 統合の問題

レポートインポーターが原因で CPU/メモリ使用量が多い

レポートインポーターが原因で CPU/メモリの使用量が多くなる、または OutOfMemoryError 例外となる。

解決策

この問題を解決するには、次の方法を試してください。

  • 大量の PollingImporter が登録されていないことを確認します(下記の「PollingImporter が原因でシャットダウンに時間がかかる」を参照)。
  • ManagedPollingImporterOSGi コンソール を設定する CRON 式を使用して、特定の時刻にレポートインポーターを実行します。

AEMでカスタムデータインポーターサービスを作成する方法について詳しくは、次の記事を参照してください。 https://helpx.adobe.com/experience-manager/using/polling.html

PollingImporter が原因でシャットダウンに時間がかかる

Analytics は継承メカニズムを念頭に置いて設計されています。通常、ページプロパティの「クラウドサービス」タブ内の Analytics 設定への参照を追加することで、サイトの Analytics を有効にします。ページで別の設定が必要な場合を除き、設定は再度参照する必要はなく、自動的にすべてのサブページに継承されます。サイトへの参照を追加すると、AnalyticsデータをAEMにインポートするために使用するPollingImportersをインスタンス化する、タイプcq;PollConfigのノード(AEM 6.3以前の場合は12、AEM 6.4の場合は6)も自動的に作成されます。 そのため、以下のようなことが起こりえます。

  • Analytics を参照しているページがたくさんあると、大量の PollingImporter につながります。
  • さらに、Analytics 設定への参照とともにページをコピーして貼り付けると、PollingImporters が重複します。

解決策

まず、error.logを分析すると、アクティブなPollingImportersまたは登録済みのPollingImportersの量に関する洞察が得られる場合があります。 次に例を示します。

# Count PollingImporter entries
$ sed -n "s/.*(aem-analytics-integration-.*).*target=\(.*\),interval.*/\1/p" error.log | wc -l
86415
# Count PollingImporter entries for last30days
$ sed -n "s/.*(aem-analytics-integration-last30Days).*target=\(.*\),interval.*/\1/p" error.log | wc -l
14531
# Count unique paths of PollingImporter registrations
sed -n "s/.*(aem-analytics-integration-.*).*target=\(.*\)\/jcr:content.*/\1/p" error.log | sort | uniq -c
28115

次に、トップページ(階層の上位)のみに Analytics 設定が参照されていることを確認します。

AEMでカスタムデータインポーターサービスを作成する方法について詳しくは、次の記事を参照してください。 https://helpx.adobe.com/experience-manager/using/polling.html

DTM(レガシー)の問題

DTM スクリプトタグがページソースにレンダリングされない

設定がページプロパティのクラウドサービスタブで参照されているにもかかわらず、DTM スクリプトタグがページに正しく含まれていない。

解決策

この問題を解決するには、次の方法を試してください。

  • 暗号化されたプロパティが復号化できることを確認します(暗号化では各 AEM インスタンスで異なる自動生成キーが使用される可能性があることに注意してください)。詳細については、構成プロパティの暗号化サポートも参照してください。

  • /etc/cloudservices/dynamictagmanagementにある設定を再公開します

  • /etc/cloudservicesのACLを確認します。 ACL は次のようになります。

    • allow; jcr:read; webservice-support-servicelibfinder
    • 許可するjcr:read;誰もがrep:glob:&ast;/defaults/&ast;
    • 許可するjcr:read;誰もがrep:glob:&ast;/defaults
    • 許可するjcr:read;誰もがrep:glob:&ast;/public/&ast;
    • 許可するjcr:read;誰もがrep:glob:&ast;/public

ACL 管理の詳細については、ユーザー管理とセキュリティページを参照してください。

Target 統合の問題

カスタムページコンポーネントを使用しているときに Target コンテンツがプレビューモードで表示されない

この問題は、カスタムページコンポーネントに Target DTM 統合を処理する正しい JSP またはクライアントライブラリが含まれていないために発生します。

解決策

次の解決策を試してください。

  • カスタムheadlibs.jsp(いずれかの/apps/<CUSTOM-COMPONENTS-PATH>/headlibs.jsp)に次が含まれていることを確認します。
<%@include file="/libs/cq/cloudserviceconfigs/components/servicelibs/servicelibs.jsp" %>
<sly data-sly-resource="${'contexthub' @ resourceType='granite/contexthub/components/contexthub'}"/>
  • カスタムのhead.html(いずれか/apps/<CUSTOM-COMPONENTS-PATH>/head.htmlの場合)に、次の例のような特定の統合ヘッドライブが選択的に含まれていないことを確認します。
<!-- DO NOT MANUALLY INCLUDE SPECIFIC CLOUD SERVICE HEADLIBS LIKE THIS -->
<meta data-sly-include="/libs/cq/dtm/components/dynamictagmanagement/headlibs.jsp" data-sly-unwrap/>

この servicelibs.jsp によって、必要な分析用 Javascript オブジェクトが追加され、Web サイトに関連付けられているクラウドサービスライブラリが読み込まれます。Targetサービスの場合、ライブラリは/libs/cq/analytics/components/testandtarget/headlibs.jspを介して読み込まれます。

読み込まれるライブラリのセットは、Target の設定で使用されているターゲットクライアントライブラリのタイプ(mbox.js または at.js)によって異なります。

mbox.js または at.js 送信に DTM を使用する場合、コンテンツがレンダリングされる前にライブラリがロードされていることを確認してください。これらのライブラリを非同期的にロードするタグ管理システムを使用すると、ターゲット固有の JavaScript コードの実行に問題が生じる可能性があります。

追加情報については、ターゲットコンテンツ向けの開発ページを参照してください。

「Missing Report Suite ID in AppMeasurement initialization」というエラーがブラウザーコンソールに表示される

この問題は、Adobe AnalyticsがDTMを使用してWebサイトに実装され、カスタムコードを使用している場合に発生する可能性があります。 原因は、s = new AppMeasurement()を使用してsオブジェクトをインスタンス化することです。

解決策

new AppMeasurementインスタンス化メソッドの代わりにs_giを使用します。 次に例を示します。

var s_account="INSERT-RSID-HERE"
var s=s_gi(s_account)

正しいオファーではなく、デフォルトのオファーがランダムに表示される

この問題には複数の原因が考えられます。

  • サードパーティのタグ管理システムを使用してTargetクライアントライブラリ(mbox.jsまたはat.js)を非同期で読み込むと、ターゲティングがランダムに解除される場合があります。 ターゲットライブラリはページヘッドに同期的にロードされることになっています。ライブラリが AEM から配信される場合、これは常に当てはまります。

  • 2つのTargetクライアントライブラリ(at.js)を同時に読み込む(例えば、1つはDTMを使用し、もう1つはAEMのTarget設定を使用)。 adobe.target バージョンが異なる場合、これが原因で at.js の定義がクラッシュする可能性があります。

解決策

次の解決策を試してください。

  • DTM のようなライブラリをロードするカスタムコード(Target ライブラリを順番にロードする)が、ページヘッド で同期的に実行されることを確認します。
  • サイトがDTMを使用してTargetライブラリを配信するように設定されている場合は、サイトのTarget設定で「DTM​によって配信されるClientlib」オプションがオンになっていることを確認します。

AT.js 1.3以降を使用する場合、正しいオファーではなく、デフォルトのオファーが常に表示されます

標準の AEM 6.2 および 6.3 は、AT.js バージョン 1.3.0 以降と互換性がありません。APIのパラメーター検証が導入されたAT.jsバージョン1.3.0では、adobe.target.applyOffer()にはatjs-itegration.jsコードで提供されない「mbox」パラメーターが必要です。

解決策

この問題を解決するには、次のようにatjs-itegration.jsを編集し、adobe.target.applyOffer()のパラメーターオブジェクトに"mbox": mboxNameフィールドを追加します。

adobe.target.getOffer({
    "mbox": mboxName,
    "params": params,
    "success": function (response) {
        adobe.target.applyOffer({
            "mbox": mboxName, //<--- ADDED PARAM
            "selector": "#" + mboxName,
            "offer": response
        })
    },

目標と設定ページにレポートソースセクションが表示されない

この問題は、A4T Analytics Cloud Configurationのプロビジョニングの問題である可能性が高くなります。

解決策

AEM に次の確認要求を発行して、Target アカウントに対して A4T が正しく有効になっていることを確認する必要があります。

http://localhost:4502/etc/cloudservices/testandtarget/<YOUR-CONFIG>/jcr:content.a4t.json
 
{
    "a4tEnabled": true,
    "sharedsecret": "SECRET",
    "proxyUrl": "/libs/cq/contentinsight/content/proxy.reportingservices.json",
    "active": "true",
    "pageName": "",
    "url": "https://api5.omniture.com/rs/0.5/",
    "username": "USER@DOMAIN"
}

応答に a4tEnabled:false という行が含まれている場合、アドビカスタマーケアに連絡して、アカウントを正しくプロビジョニングするようご依頼ください。

参考 Target API

Target の問題をトラブルシューティングするときに、以下の 2 つのTarget API が参考になるかもしれません。

  • 特定のクライアントコードのTarget エンドポイントを取得する
https://admin.testandtarget.omniture.com/rest/v1/endpoint/<CLIENTCODE>.json
 
{"api":"https://admin<N>.testandtarget.omniture.com/admin/rest/v1"}
  • クライアントのプロファイルを取得する
https://admin<N>.testandtarget.omniture.com/admin/rest/v1/clients/<CLIENT>?email=<EMAIL>&password=<PASSWORD>
 
Response for N=4, CLIENT-dayintegrationintern
{
    "clientCode": "dayintegrationintern",
    "companyName": "Day Integration - Internal",
    "omnitureCompanyId": "Day Integration Internal",
    "softTraxId": -1,
    "address1": "XYZ",
    "city": "San Francisco",
    "state": "ca",
    "zip": "94107",
    "country": "UNITED STATES",
    "locale": "de_DE",
    "timeZone": "Europe/Berlin",
    "phone": "XX-XX-XXXX",
    "serviceLevel": "Up to 100,000",
    "privileges": [
        "a4t",
        "hosts",
        "TnT-SC-integration",
        "mvt",
        "steps",
        "testing-campaigns",
        "view-snapshot",
        "on-site-editor",
        "optimizing-campaign",
        "third-party-id-support",
        "landing-page-campaigns",
        "segment",
        "rest-create-user",
        "advanced-targeting",
        "mobile-device-targeting",
        "beta",
        "geolocation"
    ]
}

このページ