

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 故障診斷：一般 Amazon MQ
<a name="general"></a>

 請使用此節中的資訊，協助診斷在使用 Amazon MQ 代理程式時可能遇到的常見問題，例如連線到代理程式的問題，以及代理程式重新啟動。

**Contents**
+ [我無法連線至代理程式 Web 主控台或端點。](#issues-connecting-to-console-or-endpoint)
+ [我的代理程式正在執行，我可以使用 `telnet` 驗證連線能力，但我的用戶端無法連線並傳回 SSL 例外狀況。](#issues-ssl-certificate-exception)
+ [我建立了代理程式，但代理程式建立失敗。](#issues-creating-a-broker)
+ [我的代理程式重新啟動，但我不確定原因。](#w2aac40b9c13)

## 我無法連線至代理程式 Web 主控台或端點。
<a name="issues-connecting-to-console-or-endpoint"></a>

如果您在使用 Web 主控台或線路層級端點連線至代理程式時遇到問題，建議您執行下列步驟。

1.  檢查您是否嘗試從防火牆後面連線到代理程式。您可能需要將防火牆設定為允許存取代理程式。

1.  檢查您是否嘗試使用 [FIPS](https://aws.amazon.com/compliance/fips/) 端點連線到代理程式。Amazon MQ 僅在使用 API 操作時支援 FIPS 端點，而不支援與代理程式執行個體本身的線路連線。

1.  檢查 **Public Accessibility (公開存取性)** 選項是否設定為 **Yes (是)**。如果此選項設定為 **No (否)**，請檢查子網路的網路[存取控制清單 (ACL)](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)規則。如果您已建立自訂網路 ACL，您可能需要變更網路 ACL 規則，以提供代理程式的存取權。如需 Amazon VPC 網路的詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[啟用網際網路存取](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#vpc-igw-internet-access) 

1.  檢查代理程式的安全群組規則。請確定您允許連線到下列連接埠：
**注意**  
下列連接埠會根據引擎類型分組，因為 Amazon MQ 上的 ActiveMQ 和 Amazon MQ 上的 RabbitMQ 會使用不同的連接埠進行連線。 Amazon MQ 

**Amazon MQ 上的 ActiveMQ Amazon MQ**
   + Web 主控台 – 連接埠 `8162`
   + OpenWire – 連接埠 `61617`
   + AMQP – 連接埠 `5671`
   + STOMP – 連接埠 `61614`
   + MQTT – 連接埠 `8883`
   + WSS – 連接埠 `61619`

**Amazon MQ 上的 RabbitMQ Amazon MQ**
   + Web 主控台和管理 API – 連接埠 ` 443` 和 `15671`
   + AMQP – 連接埠 `5671`

1.  針對您的代理程式引擎類型執行下列網路連線測試。
**注意**  
 對於沒有公開存取性的代理程式，請從與 Amazon MQ 代理程式相同的 Amazon VPC 內的 Amazon EC2 執行個體執行測試，然後評估回應。

------
#### [ ActiveMQ on Amazon MQ ]

**在 Amazon ActiveMQ上測試 ActiveMQ Amazon MQ**

   1.  開啟新的終端機或命令列視窗。

   1.  執行下列 `nslookup` 命令來查詢代理程式 DNS 記錄。對於[作用中/待命](amazon-mq-broker-architecture.md#active-standby-broker-deployment)部署，測試作用中端點和待命端點。作用中/待命端點會以新增至唯一代理程式 ID 的尾碼 `-1` 或 `-2` 識別。以您的資訊取代端點。

      ```
      $ nslookup b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
      ```

      如果查詢成功，您會看到類似以下的輸出。

      ```
      Non-authoritative answer:
      Server:  dns-resolver-corp-sfo-1.sfo.corp.amazon.com
      Address:  172.10.123.456
      
      Name:    ec2-12-345-123-45.us-west-2.compute.amazonaws.com
      Address:  12.345.123.45
      Aliases:  b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
      ```

       解析的 IP 地址應符合 Amazon MQ 主控台中提供的 IP 位址。這表示 DNS 伺服器上的網域名稱解析正確，而且您可繼續下一個步驟。

   1.  執行下列 `telnet` 命令來測試代理程式的網路路徑。以您的資訊取代端點。以 Web 主控台的連接埠號碼 `8162`，或其他線路層級連接埠取代*連接埠*，視需要測試其他通訊協定。
**注意**  
 對於作用中/待命部署，如果您使用待命端點執行 `telnet`，則會收到 `Connect failed` 錯誤訊息。這是可預期的，由於待命執行個體本身正在執行，但 ActiveMQ 程序並未執行，且無法存取代理程式的 Amazon EFS 儲存磁碟區。對 `-1` 和 `-2` 端點執行命令，以確保您同時測試作用中執行個體和待命執行個體。

      ```
      $ telnet b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com port
      ```

      對於作用中執行個體，您會看到類似以下的輸出。

      ```
      Connected to b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com.
      Escape character is '^]'.
      ```

   1. 執行下列其中一項操作。
      +  如果 `telnet` 命令成功，請檢查 [`EstablishedConnectionsCount`](activemq-logging-monitoring.md#security-logging-monitoring-cloudwatch-metrics) 指標並確認代理程式尚未達到最大的[線路層級連線限制](amazon-mq-limits.md)。您也可藉由檢閱代理程式 `General` 日誌，確認是否已達到限制。如果此指標大於零，則至少有一個用戶端目前連線至代理程式。如果指標顯示零連線，則再次執行 `telnet` 路徑測試，並等待至少一分鐘再中斷連線，因為代理程式指標會每分鐘發佈一次。
      +  如果 `telnet` 命令失敗，請檢查代理程式的[彈性網路界面](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)狀態，並確認狀態為 `in-use`。針對每個執行個體的網路界面[建立 Amazon VPC 流程日誌](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-flow-logs.html#create-flow-log)，並檢閱所產生的流程日誌。尋找在您執行 `telnet` 命令時代理程式的 IP 地址，並確認連線封包為 `ACCEPTED`，包括傳回封包。如需詳細資訊，以及查看流程日誌範例，請參閱《*Amazon VPC 開發人員指南*》中的[流程日誌記錄範例](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-records-examples.html)。

   1.  執行下列 `curl` 命令來檢查與 ActiveMQ 管理 Web 主控台的連線。

      ```
      $ curl https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com:8162/index.html
      ```

      如果此命令成功，輸出應該是類似以下的 HTML 文件。

      ```
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
          <head>
              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
              <title>Apache ActiveMQ</title>
              ...
      ```

------
#### [ RabbitMQ on Amazon MQ ]

**在 Amazon MQ 代理程式的網路連線上測試 RabbitMQ Amazon MQ**

   1.  開啟新的終端機或命令列視窗。

   1.  執行下列 `nslookup` 命令來查詢代理程式 DNS 記錄。以您的資訊取代端點。

      ```
      $ nslookup b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
      ```

      如果查詢成功，您會看到類似以下的輸出。

      ```
      Non-authoritative answer:
      Server:  dns-resolver-corp-sfo-1.sfo.corp.amazon.com
      Address:  172.10.123.456
      
      Name:    rabbit-broker-1c23e456ca78-b9000123b4ebbab5.elb.us-west-2.amazonaws.com
      Addresses:  52.12.345.678
                52.23.234.56
                41.234.567.890
                54.123.45.678
      Aliases:  b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com
      ```

   1.  執行下列 `telnet` 命令來測試代理程式的網路路徑。以您的資訊取代端點。您可以 Web 主控台的連接埠 `443` 及 `5671` 取代*連接埠*，以測試線路層級 AMQP 連線。

      ```
      $ telnet b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com port
      ```

      如果命令成功，您會看到類似以下的輸出。

      ```
      Connected to b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com.
      Escape character is '^]'.
      ```
**注意**  
 Telnet 連線會在幾秒鐘後自動關閉。

   1. 執行下列其中一項操作。
      +  如果 `telnet` 命令成功，請檢查 [`ConnectionCount`](rabbitmq-logging-monitoring.md#security-logging-monitoring-cloudwatch-metrics-rabbitmq) 指標，並確認代理程式尚未達到 [`max-connections`](rabbitmq-resource-limits-configuration.md) 預設政策中設定的值。您也可藉由檢閱代理程式 `Connection.log` 日誌群組，確認是否已達到限制。如果此指標大於零，則至少有一個用戶端目前連線至代理程式。如果指標顯示零連線，則再次執行 `telnet` 路徑測試。如果連線在代理程式將新的連線指標發佈至 CloudWatch 之前關閉，您可能需要重複此程序。指標每分鐘發佈一次。
      +  對於沒有公開存取性的代理程式，如果 `telnet` 命令失敗，請檢查代理程式的[彈性網路界面](https://docs.aws.amazon.com/UserGuide/using-eni.html?icmpid=docs_ec2_console)狀態，並確認狀態為 `in-use`。針對每個網路界面[建立 Amazon VPC 流程日誌](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-flow-logs.html#create-flow-log)，並檢閱所產生的流程日誌。尋找在叫用 `telnet` 命令時代理程式的私有 IP 地址，並確認連線封包為 `ACCEPTED`，包括傳回封包。如需詳細資訊，以及查看流程日誌範例，請參閱《*Amazon VPC 開發人員指南*》中的[流程日誌記錄範例](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-records-examples.html)。
**注意**  
此步驟不適用於具有公有存取性的 Amazon MQ 代理程式上的 RabbitMQ。 Amazon MQ 

   1.  執行下列 `curl` 命令來檢查與 RabbitMQ 管理 Web 主控台的連線。

      ```
      $ curl https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-west-2.amazonaws.com:443/index.html
      ```

      如果此命令成功，輸出應該是類似以下的 HTML 文件。

      ```
      <!DOCTYPE html>
      <html>
          <head>
              <meta http-equiv="X-UA-Compatible" content="IE=edge" />
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <title>RabbitMQ Management</title>
              ...
      ```

------

## 我的代理程式正在執行，我可以使用 `telnet` 驗證連線能力，但我的用戶端無法連線並傳回 SSL 例外狀況。
<a name="issues-ssl-certificate-exception"></a>

 您的代理程式端點憑證可能已經在代理程式[維護時段](maintaining-brokers.md)更新。Amazon MQ 代理程式憑證會定期輪換，以確保代理程式的持續可用性和安全性。

 建議使用 [Amazon Trust Services](https://www.amazontrust.com/repository/) 中的 Amazon 根憑證授權機構 (CA)，在用戶端的信任存放區中進行身分驗證。所有 Amazon MQ 代理程式憑證都使用此根 CA 進行簽署。透過使用 Amazon 根 CA，您不再需要在每次代理程式上有憑證更新時下載新的 Amazon MQ 代理程式憑證。

## 我建立了代理程式，但代理程式建立失敗。
<a name="issues-creating-a-broker"></a>

如果您的代理程式處於 `CREATION_FAILED` 狀態，請執行下列動作。
+  檢查您的 IAM 許可。若要建立代理程式，必須使用 AWS 受管 IAM 政策，`AmazonMQFullAccess`或在自訂 IAM 政策中擁有一組正確的 Amazon EC2 許可。若要進一步了解您所需的 Amazon EC2 許可，請參閱[建立 Amazon MQ 代理程式所需的 IAM 許可](security-api-authentication-authorization.md#security-permissions-required-to-create-broker)。
+  檢查您為代理程式選擇的子網路是否位於共用的 Amazon Virtual Private Cloud (VPC) 中。若要在共用的 Amazon VPC 中建立 Amazon MQ 代理程式，您必須在擁有 Amazon VPC 的帳戶中建立它。

## 我的代理程式重新啟動，但我不確定原因。
<a name="w2aac40b9c13"></a>

如果您的代理程式已自動重新啟動，可能是由於以下原因之一。
+  您的代理程式可能因為排定的每週維護時段而重新啟動。Amazon MQ 會定期對訊息代理程式的硬體、作業系統或引擎軟體執行維護。維護的持續時間會有所不同，但最多可能持續兩小時，視您針對訊息代理程式排程的操作而定。代理程式可能會在兩小時維護期間的任何時候重新啟動。如需代理程式維護時段的詳細資訊，請參閱 [排程 Amazon MQ 代理程式的維護時段](maintaining-brokers.md)。
+  您的代理程式執行個體類型可能不適合您的應用程式工作負載。例如，在 `mq.t3.micro` 上執行生產工作負載可能會導致代理程式耗盡資源。高 CPU 使用率或高代理程式記憶體使用量可能會導致代理程式意外重新啟動。若要查看代理程式正在使用多少 CPU 和記憶體，請針對您的引擎類型使用下列 CloudWatch 指標。
  +  **Amazon MQ 上的 ActiveMQ Amazon MQ** – 檢查代理程式目前使用的已配置 Amazon EC2 運算單位`CpuUtilization`百分比。檢查 `HeapUsage`，了解代理程式目前使用的 ActiveMQ JVM 記憶體限制的百分比。
  +  **Amazon MQ 上的 RabbitMQ Amazon MQ** – 檢查代理程式目前使用的已配置 Amazon EC2 運算單位`SystemCpuUtilization`百分比。檢查 `RabbitMQMemUsed`，了解已使用的 RAM 數量 (以位元組為單位)，並除以 `RabbitMQMemLimit` 來取得 RabbitMQ 節點使用的記憶體百分比。

   如需代理程式執行個體類型以及如何為您的工作負載選擇正確執行個體類型的詳細資訊，請參閱 [Broker instance types](broker-instance-types.md)。