

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用远程写入设置从 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 托管策略创建 IAM 角色**AmazonPrometheusRemoteWriteAccess**。然后，您可以使用该角色启动实例，并将指标流式传输到您的 Amazon Managed Service for Prometheus 工作区。

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 从导航窗格中选择**角色**，然后选择**创建角色**。

1. 对于信任实体的类型，选择 **AWS service (亚马逊云科技服务)**。对于使用案例，选择 **EC2**。选择**下一步: 权限**。

1. 在搜索栏中输入 **AmazonPrometheusRemoteWriteAccess**。在 “**策略名称**” 中 **AmazonPrometheusRemoteWriteAccess**，选择，然后选择 “**附加策略**”。选择**下一步: 标签**。

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}}亚马逊 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 工作区。