

AWS Application Discovery Service 不再向新客戶開放。或者，使用 AWS Transform 提供類似的功能。如需詳細資訊，請參閱 [AWS Application Discovery Service 可用性變更](https://docs.aws.amazon.com/application-discovery/latest/userguide/application-discovery-service-availability-change.html)。

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

# 探索 Amazon Athena 中的資料
<a name="explore-data"></a>

Amazon Athena 中的資料探索可讓您在一個位置分析 Discovery Agent 從所有探索到的內部部署伺服器收集的資料。一旦從 Migration Hub 主控台 （或使用 StartContinousExport API) 啟用 Amazon Athena 中的資料探勘，並開啟代理程式的資料收集，代理程式所收集的資料會自動定期儲存在 S3 儲存貯體中。如需詳細資訊，請參閱[探索 Amazon Athena 中的資料](#explore-data)。

Amazon Athena 中的資料探勘可讓您在一個位置分析 Discovery Agents 從所有探索到的內部部署伺服器收集的資料。一旦從 Migration Hub 主控台 （或使用 StartContinousExport API) 啟用 Amazon Athena 中的資料探勘，並開啟代理程式的資料收集，代理程式收集的資料會自動定期儲存在 S3 儲存貯體中。

然後，您可以造訪 Amazon Athena 執行預先定義的查詢，以分析每個伺服器的時間序列系統效能、每個伺服器上執行的程序類型，以及不同伺服器之間的網路相依性。此外，您可以使用 Amazon Athena 撰寫自己的自訂查詢、上傳其他現有資料來源，例如組態管理資料庫 (CMDB) 匯出，以及將探索到的伺服器與實際業務應用程式建立關聯。您也可以將 Athena 資料庫與 Amazon Quick 整合，以視覺化查詢輸出並執行其他分析。

本節中的主題說明您可以在 Athena 中使用資料來評估和規劃遷移本機環境的方式 AWS。

# 在 Amazon Athena 中開啟資料探勘
<a name="ce-prep-agents"></a>

Amazon Athena 中的資料探索是透過使用 Migration Hub 主控台或從 進行 API 呼叫來開啟連續匯出來啟用 AWS CLI。您必須先開啟資料探索，才能在 Amazon Athena 中查看並開始探索探索到的資料。

當您開啟持續匯出時，您的 帳戶`AWSServiceRoleForApplicationDiscoveryServiceContinuousExport`會自動使用服務連結角色。如需此服務連結角色的詳細資訊，請參閱 [Application Discovery Service 的服務連結角色許可](service-linked-role-permissions.md)。

下列指示說明如何使用 主控台和 在 Amazon Athena 中開啟資料探 AWS CLI勘。

------
#### [ Turn on with the console ]

當您選擇「開始資料收集」，或按一下 Migration Hub 主控台的資料收集器頁面上標記為「Amazon Athena 中的資料探勘」的切換開關時，會隱含開啟持續匯出，以 Amazon Athena 啟用 Amazon Athena 中的資料探勘。 ****

**從主控台開啟 Amazon Athena 中的資料探勘**

1. 在導覽窗格中，選擇 **Data Collectors (資料收集器)**。

1. 選擇 **Agents (代理程式)** 索引標籤。

1. 選擇**開始資料收集**，或者如果您已開啟資料收集，請按一下 **Amazon Athena 切換中的資料探**勘。

1. 在上一步驟產生的對話方塊中，按一下核取方塊以同意相關成本並選擇 **Continue (繼續)** 或 **Enable (啟用)**。

**注意**  
您的代理程式現在以「持續匯出」模式執行，可讓您在 Amazon Athena 中查看和使用探索到的資料。第一次啟用此功能時，您的資料最多可能需要 30 分鐘才會出現在 Amazon Athena 中。

------
#### [ Enable with the AWS CLI ]

Amazon Athena 中的資料探勘是透過 API 呼叫從 明確開啟的 Continuous Export 來啟用 AWS CLI。若要這樣做， AWS CLI 必須先在您的環境中安裝 。

**在 Amazon Athena 中安裝 AWS CLI 並開啟資料探勘**

1.  AWS CLI 為您的作業系統 (Linux、macOS 或 Windows) 安裝 。如需說明，請參閱 [AWS Command Line Interface 使用者指南](https://docs.aws.amazon.com/cli/latest/userguide/)。

1. 開啟命令提示字元 (Windows) 或終端機 (Linux 或 macOS)。

   1. 輸入 `aws configure` 然後按 Enter 鍵。

   1. 輸入您的 AWS 存取金鑰 ID 和 AWS 私密存取金鑰。

   1. 輸入預設區域名稱的 `us-west-2`。

   1. 輸入預設輸出格式的 `text`。

1. 鍵入以下命令：

   ```
   aws discovery start-continuous-export
   ```

**注意**  
您的代理程式現在以「持續匯出」模式執行，可讓您在 Amazon Athena 中查看和使用探索到的資料。第一次啟用此功能時，您的資料最多可能需要 30 分鐘才會出現在 Amazon Athena 中。

------

# 直接在 Amazon Athena 中探索資料
<a name="explore-direct-in-ate"></a>

在 Amazon Athena 中開啟資料探勘之後，您可以直接在 Athena 中查詢資料，開始探索和使用代理程式探索到的詳細目前資料。您可以使用此資料來產生試算表、執行成本分析、將該查詢連接至視覺化程式，以圖表化網路相依性等作業。

下列指示說明如何直接在 Athena 主控台中探索您的代理程式資料。如果您在 Athena 中沒有任何資料，或尚未在 Amazon Athena 中啟用資料探勘，對話方塊會提示您在 Amazon Athena 中啟用資料探勘，如 中所述[在 Amazon Athena 中開啟資料探勘開啟資料探勘](ce-prep-agents.md)。

**直接在 Athena 中探索代理程式探索的資料**

1. 在 AWS Migration Hub 主控台的導覽窗格中，選擇**伺服器**。

1. 若要開啟 Amazon Athena 主控台，請選擇在 **Amazon Athena 中探索資料**。

1. 在 **Query Editor (查詢編輯器)** 頁面上，**Database (資料庫)** 下的導覽窗格中，確定 **application\$1discovery\$1service\$1database** 為已選取的狀態。
**注意**  
在 **Tables (資料表)** 下，下列資料表代表依代理程式分組的資料集。  
**os\$1info\$1agent**
**network\$1interface\$1agent**
**sys\$1performance\$1agent**
**processes\$1agent**
**inbound\$1connection\$1agent**
**outbound\$1connection\$1agent**
**id\$1mapping\$1agent**

1. 在 Athena 查詢編輯器中寫入和執行 SQL 查詢，以在 Amazon Athena 主控台中查詢資料。例如，您可以使用下列查詢來查看所有探索到的伺服器 IP 地址。

   ```
   SELECT * FROM network_interface_agent;
   ```

   如需更多範例查詢，請參閱[在 Amazon Athena 中使用預先定義的查詢使用預先定義的查詢](predefined-queries.md)。

# 視覺化 Amazon Athena 資料
<a name="port-query-to-visualization"></a>

若要視覺化您的資料，可以將查詢移植到視覺化程式，例如 Amazon Quick 或其他開放原始碼視覺化工具，例如 Cytoscape、yEd 或 Gelphi。使用這些工具來轉譯網路圖表、摘要圖表和其他圖形表示。使用此方法時，您可以透過視覺化程式連線到 Athena，讓它可以存取您收集的資料做為產生視覺化的來源。

**使用 Quick 視覺化您的 Amazon Athena 資料**

1. 登入 [Amazon Quick](https://aws.amazon.com/quicksight/)。

1. 選擇 **Connect to another data source or upload a file (連接到其他資料來源或上傳檔案)**。

1. 選擇 **Athena**。隨即顯示**新的 Athena 資料來源**對話方塊。

1. 在 **Data source name (資料來源名稱)** 欄位中輸入名稱。

1. 選擇 **Create data source (建立資料來源)**。

1. 在 **Choose your table (選取您的資料表)** 對話方塊中選取 **Agents-servers-os (Agents-servers-os)** 資料表，並選取 **Select (選擇)**。

1. 在 **Finish data set creation (完成資料集建立)** 對話方塊中，選取 **Import to SPICE for quicker analytics (匯入至 SPICE 以進行更快速的分析)**，然後選擇 **Visualize (視覺化)**。

   即會轉譯您的視覺化。

# 在 Amazon Athena 中使用預先定義的查詢
<a name="predefined-queries"></a>

本節包含一組預先定義的查詢，此查訊可執行典型使用案例，例如 TCO 分析和網路視覺化。您可以直接使用這些查詢，也可以進行修改以滿足您的需求。

**使用預先定義的查詢**

1. 在 AWS Migration Hub 主控台的導覽窗格中，選擇**伺服器**。

1. 若要開啟 Amazon Athena 主控台，請選擇在 **Amazon Athena 中探索資料**。

1. 在 **Query Editor (查詢編輯器)** 頁面上，**Database (資料庫)** 下的導覽窗格中，確定 **application\$1discovery\$1service\$1database** 為已選取的狀態。

1. 在查詢編輯器中選擇加號 (**\$1**)，以建立具有新查詢的標籤。

1. 從 [預先定義的查詢](#pq-query-examples) 複製其中一個查詢。

1. 將查詢貼到您剛建立新查詢頁籤的查詢窗格中。

1. 選擇 **Run Query** (執行查詢)。

## 預先定義的查詢
<a name="pq-query-examples"></a>

選擇標題以查看有關查詢的資訊。

### 取得伺服器的 IP 地址和主機名稱
<a name="pq-helper-function"></a>

此協助程式函數會擷取指定伺服器的 IP 地址和主機名稱。您可以在其他查詢中使用此視圖。如需有關如何建立檢視的資訊，請參閱《*Amazon Athena 使用者指南*》中的 [CREATE VIEW](https://docs.aws.amazon.com/athena/latest/ug/create-view.html)。

```
CREATE OR REPLACE VIEW hostname_ip_helper AS 
SELECT DISTINCT
  "os"."host_name"
, "nic"."agent_id"
, "nic"."ip_address"
FROM
  os_info_agent os
, network_interface_agent nic
WHERE ("os"."agent_id" = "nic"."agent_id");
```

### 識別具有或沒有代理程式的伺服器
<a name="pq-agents-installed-or-not"></a>

此查詢可協助您執行資料驗證。如果您已在您網路的多部伺服器上部署代理程式，您可以使用此查詢以了解您網路上是否有其他伺服器尚未部署代理程式。在此查詢中，我們可檢視傳入和傳出網路流量，並可篩選以僅檢視私有 IP 地址的流量。亦即，以 `192`、`10` 或 `172` 起始的 IP 地址。

```
SELECT DISTINCT "destination_ip" "IP Address" ,
         (CASE
    WHEN (
    (SELECT "count"(*)
    FROM network_interface_agent
    WHERE ("ip_address" = "destination_ip") ) = 0) THEN
        'no'
        WHEN (
        (SELECT "count"(*)
        FROM network_interface_agent
        WHERE ("ip_address" = "destination_ip") ) > 0) THEN
            'yes' END) "agent_running"
    FROM outbound_connection_agent
WHERE ((("destination_ip" LIKE '192.%')
        OR ("destination_ip" LIKE '10.%'))
        OR ("destination_ip" LIKE '172.%'))
UNION
SELECT DISTINCT "source_ip" "IP ADDRESS" ,
         (CASE
    WHEN (
    (SELECT "count"(*)
    FROM network_interface_agent
    WHERE ("ip_address" = "source_ip") ) = 0) THEN
        'no'
        WHEN (
        (SELECT "count"(*)
        FROM network_interface_agent
        WHERE ("ip_address" = "source_ip") ) > 0) THEN
            'yes' END) "agent_running"
    FROM inbound_connection_agent
WHERE ((("source_ip" LIKE '192.%')
        OR ("source_ip" LIKE '10.%'))
        OR ("source_ip" LIKE '172.%'));
```

### 使用代理程式分析伺服器的系統效能資料
<a name="pq-agents-server-performance"></a>

您可以使用此查詢，為您已安裝代理程式的現場部署伺服器分析系統效能和使用率模式資料。此查詢結合 `system_performance_agent` 資料表與 `os_info_agent` 資料表，以識別各伺服器的主機名稱。此查詢傳回執行代理程式之所有伺服器的時間序列使用率資料 (以 15 分鐘為間隔)。

```
SELECT "OS"."os_name" "OS Name" ,
    "OS"."os_version" "OS Version" ,
    "OS"."host_name" "Host Name" ,
     "SP"."agent_id" ,
     "SP"."total_num_cores" "Number of Cores" ,
     "SP"."total_num_cpus" "Number of CPU" ,
     "SP"."total_cpu_usage_pct" "CPU Percentage" ,
     "SP"."total_disk_size_in_gb" "Total Storage (GB)" ,
     "SP"."total_disk_free_size_in_gb" "Free Storage (GB)" ,
     ("SP"."total_disk_size_in_gb" - "SP"."total_disk_free_size_in_gb") "Used Storage" ,
     "SP"."total_ram_in_mb" "Total RAM (MB)" ,
     ("SP"."total_ram_in_mb" - "SP"."free_ram_in_mb") "Used RAM (MB)" ,
     "SP"."free_ram_in_mb" "Free RAM (MB)" ,
     "SP"."total_disk_read_ops_per_sec" "Disk Read IOPS" ,
     "SP"."total_disk_bytes_written_per_sec_in_kbps" "Disk Write IOPS" ,
     "SP"."total_network_bytes_read_per_sec_in_kbps" "Network Reads (kbps)" ,
     "SP"."total_network_bytes_written_per_sec_in_kbps" "Network Write (kbps)"
FROM "sys_performance_agent" "SP" , "OS_INFO_agent" "OS"
WHERE ("SP"."agent_id" = "OS"."agent_id") limit 10;
```

### 根據連接埠號碼和程序詳細資訊，追蹤伺服器之間的傳出通訊
<a name="pq-analyze-outbound-connections"></a>

此查詢會取得每個服務之傳出流量的詳細資料，以及連接埠號碼和程序的詳細資料。

在執行查詢之前，如果您尚未執行此操作，則必須建立包含從 IANA 下載之 IANA 連接埠登錄資料庫的 `iana_service_ports_import` 資料表。如需如何建立此角色的資訊，請參閱[建立 IANA 連接埠登錄檔匯入資料表](#pq-create-iana-import-table)。

建立 `iana_service_ports_import` 資料表之後，建立兩個視圖輔助函數來追蹤傳出流量。如需有關如何建立檢視的資訊，請參閱《*Amazon Athena 使用者指南*》中的 [CREATE VIEW](https://docs.aws.amazon.com/athena/latest/ug/create-view.html)。

**建立傳出追蹤協助程式函數**

1. 前往 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 開啟 Athena 主控台。

1. 使用以下列出所有不同傳出目的地 IP 地址的協助程式函數建立`valid_outbound_ips_helper`檢視。

   ```
   CREATE OR REPLACE VIEW valid_outbound_ips_helper AS 
   SELECT DISTINCT "destination_ip"
   FROM outbound_connection_agent;
   ```

1. 使用下列輔助函數，決定傳出流量的通訊頻率以建立 `outbound_query_helper` 檢視。

   ```
   CREATE OR REPLACE VIEW outbound_query_helper AS
   SELECT "agent_id" ,
            "source_ip" ,
            "destination_ip" ,
            "destination_port" ,
            "agent_assigned_process_id" ,
            "count"(*) "frequency"
   FROM outbound_connection_agent
   WHERE (("ip_version" = 'IPv4')
           AND ("destination_ip" IN 
       (SELECT *
       FROM valid_outbound_ips_helper )))
   GROUP BY  "agent_id", "source_ip", "destination_ip", "destination_port", "agent_assigned_process_id";
   ```

1. 現在您已有 `iana_service_ports_import` 資料表和兩個輔助函數，您可執行以下查詢以獲得詳細資料，包括每個服務的傳出流量、連接埠號碼，以及程序的詳細資訊。

   ```
   SELECT hip1.host_name "Source Host Name",
            outbound_connections_results0.source_ip "Source IP Address",
            hip2.host_name "Destination Host Name",
            outbound_connections_results0.destination_ip "Destination IP Address",
            outbound_connections_results0.frequency "Connection Frequency",
            outbound_connections_results0.destination_port "Destination Communication Port",
            outbound_connections_results0.servicename "Process Service Name",
            outbound_connections_results0.description "Process Service Description"
   FROM 
       (SELECT DISTINCT o.source_ip,
            o.destination_ip,
            o.frequency,
            o.destination_port,
            ianap.servicename,
            ianap.description
       FROM outbound_query_helper o, iana_service_ports_import ianap
       WHERE o.destination_port = TRY_CAST(ianap.portnumber AS integer)) AS outbound_connections_results0 LEFT OUTER
   JOIN hostname_ip_helper hip1
       ON outbound_connections_results0.source_ip = hip1.ip_address LEFT OUTER
   JOIN hostname_ip_helper hip2
       ON outbound_connections_results0.destination_ip = hip2.ip_address
   ```

### 根據連接埠號碼和程序詳細資訊，追蹤伺服器之間的傳入通訊
<a name="pq-analyze-inbound-connections"></a>

此查詢會取得每個服務之輸入流量的相關資訊，以及連接埠號碼和程序詳細資料。

在執行此查詢之前，如果您尚未執行此操作，則必須建立包含從 IANA 下載之 IANA 連接埠登錄資料庫的 `iana_service_ports_import` 資料表。如需如何建立此角色的資訊，請參閱[建立 IANA 連接埠登錄檔匯入資料表](#pq-create-iana-import-table)。

建立 `iana_service_ports_import` 資料表之後，建立兩個視圖輔助函數函數來追蹤傳入流量。如需有關如何建立檢視的資訊，請參閱《*Amazon Athena 使用者指南*》中的 [CREATE VIEW](https://docs.aws.amazon.com/athena/latest/ug/create-view.html)。

**建立匯入追蹤協助程式函數**

1. 前往 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 開啟 Athena 主控台。

1. 使用列出所有不同的傳入來源 IP 地址的以下輔助函數建立 `valid_inbound_ips_helper` 檢視。

   ```
   CREATE OR REPLACE VIEW valid_inbound_ips_helper AS 
   SELECT DISTINCT "source_ip"
   FROM inbound_connection_agent;
   ```

1. 使用以下輔助函數，確定輸入流量的通訊頻率以建立 `inbound_query_helper` 檢視。

   ```
   CREATE OR REPLACE VIEW inbound_query_helper AS 
   SELECT "agent_id" ,
            "source_ip" ,
            "destination_ip" ,
            "destination_port" ,
            "agent_assigned_process_id" ,
            "count"(*) "frequency"
   FROM inbound_connection_agent
   WHERE (("ip_version" = 'IPv4')
           AND ("source_ip" IN 
       (SELECT *
       FROM valid_inbound_ips_helper )))
   GROUP BY  "agent_id", "source_ip", "destination_ip", "destination_port", "agent_assigned_process_id";
   ```

1. 現在您已有 `iana_service_ports_import` 資料表和兩個輔助函數，您可執行以下查詢以獲得詳細資料，包括每個服務的傳入流量、連接埠號碼，以及程序的詳細資訊。

   ```
   SELECT hip1.host_name "Source Host Name",
            inbound_connections_results0.source_ip "Source IP Address",
            hip2.host_name "Destination Host Name",
            inbound_connections_results0.destination_ip "Destination IP Address",
            inbound_connections_results0.frequency "Connection Frequency",
            inbound_connections_results0.destination_port "Destination Communication Port",
            inbound_connections_results0.servicename "Process Service Name",
            inbound_connections_results0.description "Process Service Description"
   FROM 
       (SELECT DISTINCT i.source_ip,
            i.destination_ip,
            i.frequency,
            i.destination_port,
            ianap.servicename,
            ianap.description
       FROM inbound_query_helper i, iana_service_ports_import ianap
       WHERE i.destination_port = TRY_CAST(ianap.portnumber AS integer)) AS inbound_connections_results0 LEFT OUTER
   JOIN hostname_ip_helper hip1
       ON inbound_connections_results0.source_ip = hip1.ip_address LEFT OUTER
   JOIN hostname_ip_helper hip2
       ON inbound_connections_results0.destination_ip = hip2.ip_address
   ```

### 從連接埠號碼識別執行中的軟體
<a name="pq-identify-software"></a>

此查詢會根據連接埠號碼識別執行中的軟體。

在執行此查詢之前，如果您尚未執行此操作，則必須建立包含從 IANA 下載之 IANA 連接埠登錄資料庫的 `iana_service_ports_import` 資料表。如需如何建立此角色的資訊，請參閱[建立 IANA 連接埠登錄檔匯入資料表](#pq-create-iana-import-table)。

執行以下查詢，可根據連接埠號碼識別執行中的軟體。

```
SELECT o.host_name "Host Name",
       ianap.servicename "Service",
       ianap.description "Description",
       con.destination_port,
       con.cnt_dest_port "Destination Port Count"
FROM   (SELECT agent_id,
               destination_ip,
               destination_port,
               Count(destination_port) cnt_dest_port
        FROM   inbound_connection_agent
        GROUP  BY agent_id,
                  destination_ip,
                  destination_port) con,
       (SELECT agent_id,
               host_name,
               Max("timestamp")
        FROM   os_info_agent
        GROUP  BY agent_id,
                  host_name) o,
       iana_service_ports_import ianap
WHERE  ianap.transportprotocol = 'tcp'
       AND con.destination_ip NOT LIKE '172%'
       AND con.destination_port = ianap.portnumber
       AND con.agent_id = o.agent_id
ORDER BY cnt_dest_port DESC;
```

## 建立 IANA 連接埠登錄檔匯入資料表
<a name="pq-create-iana-import-table"></a>

某些預先定義的查詢需要名為 `iana_service_ports_import` 的資料表，其中包含從網際網路指派號碼授權單位 (IANA) 下載的資訊。

**建立 iana\$1service\$1ports\$1import 資料表**

1. 從 https：//*iana.org* 上的[服務名稱和傳輸協定連接埠號碼登錄檔下載 IANA 連接埠](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml)登錄資料庫 **CSV** 檔案。

1. 將檔案上傳至 Amazon S3。如需詳細資訊，請參閱[如何將檔案與資料夾上傳到 S3 儲存貯體？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)

1. 在名為 的 Athena 中建立新的資料表`iana_service_ports_import`。如需說明，請參閱《*Amazon Athena 使用者指南*》中的[建立資料表](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html#step-2-create-a-table)。在下列範例中，您需要使用在先前步驟中將 CSV 檔案上傳到的 S3 儲存貯體的名稱來取代 `my_bucket_name`。

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS iana_service_ports_import (
            ServiceName STRING,
            PortNumber INT,
            TransportProtocol STRING,
            Description STRING,
            Assignee STRING,
            Contact STRING,
            RegistrationDate STRING,
            ModificationDate STRING,
            Reference STRING,
            ServiceCode STRING,
            UnauthorizedUseReported STRING,
            AssignmentNotes STRING
   )
   ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
   WITH SERDEPROPERTIES (
     'serialization.format' = ',',
     'quoteChar' = '"',
     'field.delim' = ','
   ) LOCATION 's3://my_bucket_name/'
   TBLPROPERTIES ('has_encrypted_data'='false',"skip.header.line.count"="1");
   ```