

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

# 使用遠端寫入設定 Amazon EC2 執行個體擷取的指標
<a name="AMP-onboard-ingest-metrics-remote-write-EC2"></a>

本節說明如何在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體中使用遠端寫入執行 Prometheus 伺服器。這會說明如何從使用 Go 編寫的示範應用程式收集指標，並將其傳送到 Amazon Managed Service for Prometheus 工作區。

## 先決條件
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-prereq"></a>

**重要**  
在開始前，您必須安裝 Prometheus v2.26 或更高版本。我們假設您熟悉 Prometheus、Amazon EC2 和 Amazon Managed Service for Prometheus。有關如何安裝 Prometheus 的訊息，請參閱 Prometheus 網站上的[入門](https://prometheus.io/docs/prometheus/latest/getting_started/)。

如果您不熟悉 Amazon EC2 或 Amazon Managed Service for Prometheus，建議您先從閱讀以下各節開始：
+ [Amazon Elastic Compute Cloud 是什麼？](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)
+ [Amazon Managed Service for Prometheus 是什麼？](https://docs.aws.amazon.com/prometheus/latest/userguide/what-is-Amazon-Managed-Service-Prometheus.html)

## 建立 Amazon EC2 的 IAM 角色
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-IAM"></a>

若要串流指標，您必須先使用 AWS 受管政策 **AmazonPrometheusRemoteWriteAccess** 建立 IAM 角色。然後，您可以啟動具有角色的執行個體，並將指標串流到 Amazon Managed Service for Prometheus 工作區。

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

1. 從導覽窗格，選擇 **Roles (角色)**，然後選擇 **Create role (建立角色)**。

1. 對於信任的實體類型，選擇 **AWS service** (AWS 服務)。針對使用案例，選擇 **EC2**。選擇**下一步：許可**。

1. 在搜尋列中，輸入 **Amazon PrometheusRemoteWriteAccess**。針對**政策名稱**，選取 **AmazonPrometheusRemoteWriteAccess** 然後選擇 **附加政策**。選擇 **Next: Add Tags (下一步：新增標籤)**。

1. (選用) 為您的 IAM 角色建立 IAM 標籤。選擇 **[下一步：檢閱]**。

1. 輸入您的角色名稱。選擇**建立政策**。

## 啟動 Amazon EC2 執行個體
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-instance"></a>

若要啟動 Amazon EC2 執行個體，請遵循《*適用於 Linux 執行個體的 Amazon Elastic Compute Cloud 使用者指南*》中[啟動執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#launch-instance-with-role)的指示。

## 執行示範應用程式
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-demo"></a>

建立 IAM 角色並使用 角色啟動 EC2 執行個體後，您可以執行示範應用程式來查看它是否有效。

**執行示範應用程式和測試指標**

1. 使用下列範本建立名為 `main.go` 的 Go 檔案。

   ```
   package main
   
   import (
       "github.com/prometheus/client_golang/prometheus/promhttp"
       "net/http"
   )
   
   func main() {
       http.Handle("/metrics", promhttp.Handler())
   
       http.ListenAndServe(":8000", nil)
   }
   ```

1. 執行以下命令以安裝正確相依項目。

   ```
   sudo yum update -y
   sudo yum install -y golang
   go get github.com/prometheus/client_golang/prometheus/promhttp
   ```

1. 執行示範應用程式。

   ```
   go run main.go
   ```

   展示應用程式應該在連接埠 8000 上運行，並顯示所有暴露的 Prometheus 指標。以下是這些指標的範例。

   ```
   curl -s http://localhost:8000/metrics 
   ...
   process_max_fds 4096# HELP process_open_fds Number of open file descriptors.# TYPE process_open_fds gauge
   process_open_fds 10# HELP process_resident_memory_bytes Resident memory size in bytes.# TYPE process_resident_memory_bytes gauge
   process_resident_memory_bytes 1.0657792e+07# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.# TYPE process_start_time_seconds gauge
   process_start_time_seconds 1.61131955899e+09# HELP process_virtual_memory_bytes Virtual memory size in bytes.# TYPE process_virtual_memory_bytes gauge
   process_virtual_memory_bytes 7.77281536e+08# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.# TYPE process_virtual_memory_max_bytes gauge
   process_virtual_memory_max_bytes -1# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.# TYPE promhttp_metric_handler_requests_in_flight gauge
   promhttp_metric_handler_requests_in_flight 1# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.# TYPE promhttp_metric_handler_requests_total counter
   promhttp_metric_handler_requests_total{code="200"} 1
   promhttp_metric_handler_requests_total{code="500"} 0
   promhttp_metric_handler_requests_total{code="503"} 0
   ```

## 建立 Amazon Managed Service for Prometheus 工作區
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-workspace"></a>

若要建立 Amazon Managed Service for Prometheus 工作區，請按照[建立工作區](AMP-create-workspace.md)中的指示操作。

## 執行 Prometheus 伺服器
<a name="AMP-onboard-ingest-metrics-remote-write-EC2-server"></a>

1. 使用下列範例 YAML 檔案作為範本，以建立名為 `prometheus.yaml` 的新檔案。針對 `url`，將 *my-region* 值替換您的地區值，以及將 *my-workspace-id* 替換為針對您產生 Amazon Managed Service for Prometheus 的工作區 ID。針對 `region`，將 *my-region* 替換為您的地區值。

   **範例：YAML 檔案**

   ```
   global:
     scrape_interval: 15s
     external_labels:
       monitor: 'prometheus'
   
   scrape_configs:
     - job_name: 'prometheus'
       static_configs:
         - targets: ['localhost:8000']
   
   remote_write:
     -
       url: https://aps-workspaces.my-region.amazonaws.com/workspaces/my-workspace-id/api/v1/remote_write
       queue_config:
           max_samples_per_send: 1000
           max_shards: 200
           capacity: 2500
       sigv4:
            region: my-region
   ```

1. 執行 Prometheus 伺服器，將示範應用程式的指標傳送至您的 Amazon Managed Service for Prometheus 工作區。

   ```
   prometheus --config.file=prometheus.yaml
   ```

Prometheus 伺服器現在應該會將示範應用程式的指標傳送到您的 Amazon Managed Service for Prometheus 工作區。