ایجاد جلسه ردیابی ممکن نیست

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

علامت

کاربر قادر به ایجاد جلسه ردیابی در رابط کاربری Edge نیست.

پیام خطا

همانطور که در زیر نشان داده شده است، یک پیام خطا در رابط کاربری Edge دریافت خواهید کرد:

Error creating trace session for API proxy <api proxy name>, revision <revision number>, environment <environment name>.
Failed to create DebugSession <session number> 

در اینجا تصویری از یک پیام خطای نمونه مشاهده شده در رابط کاربری Edge آورده شده است:

علل احتمالی

برخی از دلایل احتمالی این خطا در زیر ذکر شده است:

علت توضیحات دستورالعمل‌های عیب‌یابی قابل اجرا برای
مشکل اتصال شبکه قطع ارتباط بین سرور مدیریت و پردازنده پیام به دلیل مشکلات اتصال شبکه یا قوانین فایروال. کاربران ابر خصوصی Edge
محیط روی پردازشگر پیام بارگذاری نشده است به دلیل وجود خطا، محیط خاصی (که در آن سعی در فعال کردن ردیابی دارید) روی پردازنده(های) پیام بارگذاری نشده است.
ورودی‌های قدیمی پردازنده پیام سرور مدیریت به پردازنده‌های پیام ناموجود (قدیمی) ارجاع می‌دهد.
پردازشگر پیام غیرقابل دسترس است پردازشگر پیام متوقف شده یا از دسترس خارج شده است.
مشکل استفاده زیاد از منابع پردازنده(های) پیام، میزان استفاده از منابع (پردازنده، حافظه یا بار) بالایی را تجربه می‌کنند.
پروکسی API روی یک یا چند پردازنده پیام مستقر نشده است ممکن است پروکسی API به دلیل عدم اطلاع رسانی رویداد در حین استقرار، روی یک یا چند پردازنده پیام مستقر نشود.
مشکل با رابط کاربری Edge به دلیل وجود برخی خطاها، رابط کاربری Edge قادر به ایجاد جلسه ردیابی نیست.

مراحل تشخیص رایج

  1. این API مدیریتی را اجرا کنید:

    curl -v <management-server-host>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/<revision-number>/debugsessions -u <user>
    
  2. اگر با خطایی مواجه شدید، آن را یادداشت کنید. به بخش «مشکل اتصال به شبکه» بروید.

  3. اگر پاسخ موفقیت‌آمیزی دریافت کردید، نشان می‌دهد که جلسه ردیابی می‌تواند از طریق API مدیریت ایجاد شود. با این حال، ممکن است مشکلی در رابط کاربری Edge وجود داشته باشد که باعث شود جلسه ردیابی در رابط کاربری ایجاد نشود. به بخش «مشکل با رابط کاربری Edge» بروید.

علت: مشکل اتصال به شبکه

تشخیص

  1. لاگ سرور مدیریت /opt/apigee/var/log/edge-management-server/logs/system.log را بررسی کنید و ببینید آیا در طول ایجاد جلسه ردیابی/اشکال‌زدایی خطایی وجود دارد یا خیر.

    نمونه خطا از گزارش سرور مدیریت

    2018-02-08 09:08:21,310 org:myorg env:uat  qtp1073741635-1074 ERROR DISTRIBUTION - DebugSessionAPI.createDebugSession() : createDebugSession : Unable to connect to the server with UUID cedeabd2-e4d1-40bb-8f18-d6afc8835e5b
    org.apache.http.conn.HttpHostConnectException: Connect to 10.84.75.92:8082 [/10.84.75.92] failed: Connection refused
        at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:140) ~[httpclient-4.3.5.jar:4.3.5]
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318) ~[httpclient-4.3.5.jar:4.3.5]
        at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) ~[httpclient-4.3.5.jar:4.3.5]
    ...<snipped>
    Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_65]
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_65]
    ...<snipped>
    
  2. خطای نمونه بالا نشان می‌دهد که وقتی سرور مدیریت سعی می‌کند به پردازشگر پیام روی پورت ۸۰۸۲ متصل شود، با خطای "اتصال رد شد" مواجه می‌شویم. از این رو، سرور مدیریت قادر به ایجاد جلسه ردیابی نیست.

  3. اگر هیچ خطایی مربوط به اتصال شبکه یا خطایی مشابه آنچه در مثال بالا نشان داده شده است مشاهده نمی‌کنید، به بخش «محیط در پردازنده پیام بارگذاری نشده است» بروید.

  4. اگر خطایی مربوط به اتصال شبکه یا خطایی مشابه آنچه در مثال بالا نشان داده شده است را مشاهده کردید، مراحل زیر را دنبال کنید.

  5. اتصال از سرور مدیریت به پردازنده پیام روی پورت ۸۰۸۲ را با استفاده از مراحل زیر آزمایش کنید:

    1. اگر telnet در دسترس است، از telnet استفاده کنید:

      telnet <MessageProcessor_IP> 8082
      
    2. اگر telnet در دسترس نبود، از netcat برای بررسی اتصال به صورت زیر استفاده کنید:

      nc -vz <MessageProcessor_IP> 8082
      
    3. اگر با پیام‌های «اتصال رد شد» یا «زمان اتصال به پایان رسید» مواجه شدید، به مرحله بعدی بروید.

  6. با آدرس IP مربوطه که خطا را نشان داده است، به هر یک از پردازنده‌های پیام وارد شوید و مراحل زیر را انجام دهید:

    1. بررسی کنید که آیا پردازشگر پیام (Message Processor) روی پورت ۸۰۸۲ در حال گوش دادن است یا خیر:

      netstat -an | grep LISTEN | grep 8082
      
    2. اگر پردازشگر پیام روی پورت ۸۰۸۲ گوش می‌دهد، به مرحله ۷ بروید.

    3. اگر پردازشگر پیام به پورت ۸۰۸۲ گوش نمی‌دهد، پردازشگر پیام را با استفاده از این دستور مجدداً راه‌اندازی کنید:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    4. صبر کنید تا پردازشگر پیام (Message Processor) به طور کامل استفاده از این دستور را آغاز کند:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
      
    5. پس از راه‌اندازی پردازشگر پیام، دوباره بررسی کنید که آیا پردازشگر پیام به پورت ۸۰۸۲ گوش می‌دهد یا خیر.

    6. اگر پردازشگر پیام روی پورت ۸۰۸۲ گوش می‌دهد، به مرحله ۷ بروید.

  7. بررسی کنید که آیا اکنون می‌توانید جلسه ردیابی را در رابط کاربری شروع کنید یا خیر. اگر مشکل دیگر مشاهده نشد، مراحل زیر را رد کنید.

  8. اگر پردازشگر پیام در حال اجرا است و روی پورت ۸۰۸۲ گوش می‌دهد، اما شما هنوز نمی‌توانید از سرورهای دیگر مانند سرور مدیریت متصل شوید، احتمالاً یک فایروال وجود دارد که باید اتصالات خارجی را مسدود کند.

  9. برای بررسی قوانین فایروال از دستور مناسب استفاده کنید. به عنوان مثال، می‌توانید دستور iptables را برای فهرست کردن تمام قوانین فایروال تعریف شده روی سیستم خود اجرا کنید:

    iptables -L -n
    
  10. اگر هیچ قانون فایروالی برای پورت ۸۰۸۲ تنظیم نشده باشد، به مشکل استفاده زیاد از منابع بروید.

  11. اگر روی پورت ۸۰۸۲ تنظیمات فایروال وجود دارد، به بخش Resolution در زیر بروید.

وضوح تصویر

  1. با مدیر شبکه خود همکاری کنید تا ترافیک ورودی/خروجی از سرورهای خارجی روی پورت ۸۰۸۲ مجاز باشد.

اگر مشکل همچنان ادامه داشت، به «اطلاعات تشخیصی مورد نیاز برای جمع‌آوری» بروید.

علت: محیط روی پردازنده پیام بارگذاری نشده است

تشخیص

  1. لاگ‌های سرور مدیریت /opt/apigee/var/log/edge-management-server/logs/system.log را بررسی کنید و ببینید آیا در طول ایجاد جلسه ردیابی/اشکال‌زدایی خطایی وجود دارد یا خیر.
  2. ممکن است در طول ایجاد جلسه ردیابی/اشکال‌زدایی، پیام خطایی مانند « هیچ پاسخ معتبری از MP(s) وجود ندارد » مشاهده کنید، همانطور که در زیر نشان داده شده است:

    2018-01-30 08:28:09,721 org:mynonprod env:uat  qtp2007599722-712162 ERROR DISTRIBUTION - DebugSessionAPI.createDebugSession() : no valid responses from MP(s), throwing error
    2018-01-30 08:28:09,723 org:mynonprod env:uat  qtp2007599722-712162 ERROR REST - CustomJAXRSInvoker.performInvocation() : CustomJAXRSInvoker.performInvocation : Method com.apigee.distribution.DebugSessionAPI.createDebugSession threw an exception.
    2018-01-30 08:28:09,724 org:mynonprod env:uat  qtp2007599722-712162 ERROR REST - ExceptionMapper.toResponse() : Error occurred : Failed to create DebugSession 1517297564678
    2018-01-30 08:28:09,724 org:mynonprod env:uat  qtp2007599722-712162 ERROR REST - ExceptionMapper.toResponse() : Returning error response : ErrorResponse{errorCode = distribution.CreateDebugSessionFailed, errorMessage = Failed to create DebugSession 1517297564678}
    

    این خطا نشان می‌دهد که پردازنده(های) پیام به دلایلی به سرور مدیریت پاسخ نمی‌دهند.

  3. اگر خطایی مشابه خطای نشان داده شده در مثال بالا مشاهده نکردید، به Stale Message Processor Entries بروید.

  4. اگر خطایی مشابه خطای نشان داده شده در مثال بالا مشاهده کردید، این مراحل را دنبال کنید.

  5. یکی از محتمل‌ترین دلایل این خطا این است که محیطی که در آن سعی در ایجاد جلسه ردیابی دارید، روی پردازنده(های) پیام بارگذاری نشده است.

  6. به هر یک از پردازنده‌های پیام (Message Processor) وارد شوید و با استفاده از دستور زیر بررسی کنید که آیا محیط خاصی که می‌خواهید در آن جلسه ردیابی (trace session) ایجاد کنید، روی پردازنده پیام (Message Processor) بارگذاری شده است یا خیر:

    curl -s http://localhost:8082/v1/runtime/organizations/<org-name>/environments
    

    خروجی مثال:

    در خروجی دستور بالا، لیستی از محیط‌های متعلق به یک سازمان خاص که روی پردازشگر پیام بارگذاری شده‌اند را مشاهده خواهید کرد. برای مثال، اگر محیط‌های preprod و test روی پردازشگر پیام بارگذاری شده باشند، خروجی به صورت زیر خواهد بود:

    ["پیش‌تولید"، "آزمایش"]

  7. اگر محیط خاصی، مثلاً "dev"، که در آن سعی در ایجاد یک جلسه ردیابی دارید، به عنوان بخشی از دستور بالا ذکر شده است، به Stale Message Processor Entries بروید.

  8. اگر محیط خاص، مثلاً "dev"، به عنوان بخشی از دستور فوق ذکر نشده است، در هنگام بارگذاری محیط‌ها، فایل‌های /opt/apigee/var/log/edge-message-processor/logs/system.log و /opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.log را در Message Processors برای یافتن هرگونه خطا بررسی کنید.

  9. ممکن است خطاهای مختلف زیادی وجود داشته باشد که منجر به عدم بارگذاری یک محیط در پردازنده پیام شود. راه‌حل بستگی به خطای رخ داده دارد.

وضوح تصویر

ممکن است محیط به دلایل زیادی روی پردازشگر پیام بارگذاری نشود. این بخش چند دلیل احتمالی را که می‌تواند منجر به این مشکل شود، نشان می‌دهد و نحوه حل مشکل را توضیح می‌دهد.

  1. اگر یکی از خطاهای زیر را در گزارش پردازشگر پیام مشاهده کردید، به این معنی است که به دلیل مشکلی در گواهی‌ها/کلیدها که به keystore/truststore مشخص شده در محیط مشخص شده اضافه شده‌اند، ایجاد شده است.

    خطای شماره ۱: java.security.KeyStoreException: نمی‌توان گواهی خود را بازنویسی کرد

    2018-01-30 12:04:38,248 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator 
    com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mycert in key store : mytruststore in environment : test
    at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] 
    at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] 
    at com.apigee.entities.AbstractConfigurator.propagateEvent(AbstractConfigurator.java:85) ~[config-entities-1.0.0.jar:na] 
    at com.apigee.messaging.runtime.Environment.handleUpdate(Environment.java:238) [message-processor-1.0.0.jar:na] 
    … 
    Caused by: java.security.KeyStoreException: Cannot overwrite own certificate 
    at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:355) ~[sunjce_provider.jar:1.8.0_151] 
    at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_151] 
    at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na]
    ... 20 common frames omitted
    2018-01-30 12:04:38,250 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
    

    خطای شماره ۲: java.security.KeyStoreException: نمی‌توان کلید مخفی را بازنویسی کرد

    2017-11-01 03:28:47,560 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator 
    com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mstore in key store : myTruststore in environment : dev 
    at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] 
    at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] 
    ... 
    Caused by: java.security.KeyStoreException: Cannot overwrite secret key 
    at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:354) ~[sunjce_provider.jar:1.8.0_144] 
    at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_144] 
    at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na] 
    ... 20 common frames omitted 
    
    2017-11-01 03:28:47,562 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert 
    
  2. با استفاده از فراخوانی API مدیریتی زیر، جزئیات keystore/truststore مشخص شده در پیام خطای نشان داده شده در مرحله قبل را دریافت کنید:

    curl -v "http://<management-IPaddress>:8080/v1/organizations/<org-name>/environments/<env-name>/keystores/myTruststore" -u <user>
    

    خروجی مثال:

    { 
    "certs": [ 
    "mycert", 
    "mycert-new" 
    ], 
    "keys": [ 
    "mycert" 
    ], 
    "name": "myTruststore" 
    }
    
  3. خروجی مثال نشان می‌دهد که دو گواهی و یک کلید در فروشگاه اعتماد myTruststore وجود دارد. فروشگاه اعتماد معمولاً حاوی کلید نیست. اگر هم باشد، بهتر است یک گواهی و یک کلید داشته باشید.

  4. با استفاده از API زیر، جزئیات مربوط به دو گواهی را دریافت کنید:

    curl -s http://<management-IPaddress>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/keystores/<keystore-name>/certs/<cert-name>
    
  5. تاریخ انقضای هر یک از گواهینامه‌ها را بررسی کنید و گواهینامه منقضی شده/قدیمی‌تر را تعیین کنید.

  6. گواهی منقضی شده یا ناخواسته را از فروشگاه اعتماد "myTruststore" حذف کنید.

اگر مشکل همچنان ادامه داشت یا خطایی غیر از موارد ذکر شده در مرحله ۱ بالا مشاهده کردید، به بخش «اطلاعات تشخیصی مورد نیاز» (Must Gather Diagnostic Information) بروید.

علت: ورودی‌های پردازنده پیام قدیمی یا پردازنده‌های پیام غیرقابل دسترس

تشخیص

  1. اگر رابط کاربری Edge مدت زیادی طول می‌کشد و نمی‌تواند جلسه ردیابی را ایجاد کند، در اینجا برخی از دلایل احتمالی ذکر شده است:
    1. سرور مدیریت ممکن است به پردازنده‌های پیام ناموجود (قدیمی) اشاره داشته باشد.
    2. پردازشگر(های) پیام متوقف شده یا از دسترس خارج شده‌اند
    3. پردازنده‌های پیام با مصرف بالای حافظه/پردازنده مواجه هستند.
  2. لاگ‌های سرور مدیریت /opt/apigee/var/log/edge-management-server/logs/system.log را بررسی کنید و ببینید آیا در طول ایجاد جلسه ردیابی/اشکال‌زدایی خطایی وجود دارد یا خیر.
  3. ممکن است در طول ایجاد جلسه ردیابی/اشکال‌زدایی، پیام خطایی مانند «server <UUID> is either not up or reachable» را مشاهده کنید، همانطور که در زیر نشان داده شده است:

    2017-12-27 07:42:38,975 org:cocacola env:prod qtp2007599722-222063 INFO DISTRIBUTION - DebugSessionAPI.createDebugSession() : server 458b5910-2646-441c-a6e2-428b6d84e021 is either not up or reachable, skipping the server
    

    این ممکن است پس از مدتی، یک خطای دیگر با عنوان "اتصال به پایان رسیده است" (Connection timed out) را به دنبال داشته باشد، همانطور که در زیر نشان داده شده است:

    2017-12-27 07:44:46.000 UTC org:cocacola env:prod qtp2007599722-222063 ERROR DISTRIBUTION - DebugSessionAPI.createDebugSession() : createDebugSession : Unable to connect to the server with UUID {}, skipping it458b5910-2646-441c-a6e2-428b6d84e021 org.apache.http.conn.HttpHostConnectException: Connect to 192.168.101.7:8080 [/192.168.101.7] failed: Connection timed out (Connection timed out) at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:140) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219) ~[httpclient-4.3.5.jar:4.3.5] 
    …<snipped>
    Caused by: java.net.ConnectException: Connection timed out (Connection timed out) at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_144] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_144]
    …<snipped>
    
  4. این دو خطا می‌توانند به دلیل پردازشگر(های) پیام خاص ایجاد شوند:

    1. کهنه بودن (دیگر وجود ندارد)
    2. به دلایلی در دسترس نبودن/دسترسی نداشتن
  5. لطفاً بسته به سناریوی پیش آمده، راهکار مناسب را دنبال کنید.

وضوح تصویر

سناریوی شماره ۱: پردازشگر(های) پیام قدیمی هستند (وجود ندارند)

  1. با استفاده از API مدیریتی زیر، لیست پردازنده‌های پیام را دریافت کنید:

    curl -u <sysadmin> "http://<management-server-host>:8080/v1/servers?pod=<podName>&regions=<regionName>"
    
  2. آدرس IP یا نام میزبان مربوط به UUID(های) پردازنده‌های پیام ذکر شده در پیام خطا در گزارش‌های سرور مدیریت (مرحله 3 در تشخیص بالا) را یادداشت کنید. با استفاده از یکی از روش‌های زیر، تأیید کنید که آیا این پردازنده‌های پیام معتبر هستند یا خیر:

    1. نمودار تنظیم توپولوژی ابر خصوصی (Private Cloud)
    2. آخرین آدرس IP سرور Edge - جدول نگاشت نام میزبان

    اگر آنها را پردازنده‌های پیام معتبری یافتید، به سناریوی ۲ بروید: پردازنده(های) پیام غیرقابل دسترسی هستند .

  3. پردازنده‌های پیام قدیمی (غیرموجود) را با استفاده از APIهای مدیریتی زیر حذف کنید:

    1. لغو ثبت پردازشگر پیام از محیط‌های سازمان:

      curl -X POST http://<management-server-host>:8080/v1/o/<orgName>/e/<envName>/servers -d "uuid={uuid}&region=<regionName>&pod=<podName}&action=remove" 
      
    2. نوع سرور لغو ثبت نام:

      curl http://<management-server-host>:8080/v1/servers -X POST -d "type={message-processor}&region=<regionName>&pod=<podName>&uuid=<uuid>&action=remove"
      
    3. سرور را حذف کنید:

      curl http://<management-ip>:8080/v1/servers/<uuid> -X DELETE
      
  4. اگر در هر محیط دیگری در سازمان خود با مشکل مشابهی مواجه شدید، مرحله ۳ را تکرار کنید.

سناریو ۲: پردازنده(های) پیام غیرقابل دسترس هستند

  1. با تعیین آدرس‌های IP/نام‌های میزبان بر اساس UUIDهای مشاهده شده در پیام خطا در لاگ‌های سرور مدیریت، به هر یک از پردازنده‌های پیام وارد شوید.
  2. پردازشگر پیام را مجدداً راه‌اندازی کنید:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
    

دوباره بررسی کنید که آیا می‌توانید جلسه ردیابی را ایجاد کنید یا خیر. اگر مشکل همچنان ادامه داشت، به «اطلاعات تشخیصی مورد نیاز برای جمع‌آوری» بروید .

علت: مشکل استفاده زیاد از منابع

تشخیص

  1. به هر یک از پردازنده‌های پیام (Message Processor) وارد شوید و بررسی کنید که آیا از منابع - CPU، Memory یا Load - استفاده‌ی بالایی می‌شود یا خیر. می‌توانید از دستور top در سیستم‌عامل‌های مبتنی بر یونیکس برای دریافت اطلاعات مربوط به استفاده از منابع فرآیند پردازنده پیام (Message Processor) استفاده کنید:

    top
    
  2. اگر پردازنده(های) پیام، استفاده‌ی بالایی از منابع را تجربه نمی‌کنند، به بخش «باید اطلاعات تشخیصی را جمع‌آوری کنیم» بروید.

  3. اگر پردازنده(های) پیام (Message Processor) با مصرف بالای CPU یا حافظه مواجه باشند، ممکن است باعث شود که پردازنده پیام (Message Processor) به موقع به سرور مدیریت (Management Server) پاسخ ندهد. این امر در نهایت مانع از ایجاد جلسه ردیابی (Trace Session) می‌شود.

    1. اگر هر یک از پردازنده‌های پیام (Message Processor) مصرف CPU بالایی دارند، با استفاده از دستور زیر هر 30 ثانیه سه نسخه از نخ‌ها (Thread dumps) ایجاد کنید:

      sudo <JAVA_HOME>/bin/jstack -l <pid> > <filename>
      
    2. اگر هر یک از پردازنده‌های پیام (Message Processor) از حافظه بالایی استفاده می‌کند، با استفاده از دستور زیر یک heap dump ایجاد کنید:

      sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
      
      
    3. به بخش وضوح تصویر بروید.

وضوح تصویر

  1. با استفاده از دستور زیر، پردازشگر پیام را مجدداً راه‌اندازی کنید. این کار باید میزان استفاده از CPU و حافظه را کاهش دهد:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  2. فراخوانی‌های API را زیر نظر بگیرید و بررسی کنید که آیا مشکل هنوز وجود دارد یا خیر.

  3. با پشتیبانی Apigee Edge تماس بگیرید و گزارش‌های مربوط به thread dumps، heap dumps و Message Processor ( /opt/apigee/var/log/edge-message-processor/logs/system.log) را در اختیار آنها قرار دهید تا در بررسی علت استفاده زیاد از CPU/memory به آنها کمک کنید.

علت: پروکسی API روی یک یا چند پردازنده پیام مستقر نشده است

به ندرت پیش می‌آید که یک API Proxy روی یک یا چند Message Processor مستقر نشود. این اتفاق عمدتاً به دلیل عدم ارسال اعلان رویداد از سرور مدیریت به Message Processor در حین استقرار API Proxy خاص رخ می‌دهد. در این حالت نیز، شما قادر به ایجاد جلسه ردیابی در Edge UI نخواهید بود.

تشخیص

  1. به هر یک از پردازنده‌های پیام وارد شوید و با استفاده از دستور زیر بررسی کنید که آیا نسخه خاص API Proxy مستقر شده است یا خیر:

    curl -v localhost:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
    

    خروجی مثال:

    شما لیست نسخه‌ها را به عنوان خروجی دستور بالا مشاهده خواهید کرد. برای مثال، اگر نسخه ۱۲ نصب شده باشد، خروجی به صورت زیر خواهد بود:

    ["12"]

  2. اگر نسخه خاص API Proxy به عنوان خروجی دستور ذکر شده در مرحله ۱ بالا نمایش داده نشد، پردازشگر پیام خاص را همانطور که در راه‌حل زیر توضیح داده شده است، مجدداً راه‌اندازی کنید.

  3. مراحل ۱-۲ را برای همه پردازنده‌های پیام تکرار کنید.

  4. اگر نسخه خاص API Proxy روی همه پردازنده‌های پیام مستقر شده باشد، دلیل این مشکل این نیست. به «باید اطلاعات تشخیصی را جمع‌آوری کرد» بروید.

وضوح تصویر

  1. پردازشگر(های) پیام خاصی را که نسخه خاص پروکسی API روی آن مستقر نشده است، مجدداً راه‌اندازی کنید:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
    

علت: مشکل با رابط کاربری Edge

تشخیص

  1. لاگ‌های رابط کاربری Edge /opt/apigee/var/log/edge-ui/application.log و /opt/apigee/var/log/edge-ui/edge-ui.log را بررسی کنید و ببینید آیا خطایی وجود دارد یا خیر.
  2. با پشتیبانی Apigee Edge تماس بگیرید و این فایل‌ها را برای بررسی بیشتر به اشتراک بگذارید.

باید اطلاعات تشخیصی جمع‌آوری شود

اگر مشکل حتی پس از دنبال کردن دستورالعمل‌های بالا ادامه داشت، لطفاً اطلاعات تشخیصی زیر را جمع‌آوری کنید. با پشتیبانی Apigee Edge تماس بگیرید و آنها را به اشتراک بگذارید:

  1. خروجی دستور:

    curl -v <management-server-host>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/<revision-number>/debugsessions -u <user>
    
  2. گزارش سرور مدیریت

    /opt/apigee/var/log/edge-management-server/logs/system.log.
    
  3. گزارش‌های پردازنده پیام

    /opt/apigee/var/log/edge-message-processor/logs/system.log.
    
  4. خروجی دستورات telnet/nc از سرور مدیریت به پردازنده پیام:

    telnet <MessageProcessor_IP> 8082
    nc -vz <MessageProcessor_IP> 8082
    
  5. خروجی دستور netstat زیر روی پردازنده(های) پیام:

    netstat -an > netstat.txt
    
  6. اگر مشکل از رابط کاربری Edge تشخیص داده شد، گزارش‌های رابط کاربری Edge /opt/apigee/var/log/edge-ui/application.log و /opt/apigee/var/log/edge-ui/edge-ui.log.

  7. جزئیات مربوط به بخش‌هایی از این کتابچه راهنما که مورد بررسی قرار گرفته‌اند و هرگونه بینش دیگری که به ما در تسریع حل این مشکل کمک می‌کند.