本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
本节介绍如何在亚马逊弹性计算云 (Amazon) 实例中通过远程写入来运行 Prometheus 服务器。 EC2它解释了如何从用 Go 编写的演示应用程序中收集指标,并将这些指标发送到 Amazon Managed Service for Prometheus 工作区。
先决条件
重要
在开始之前,您必须已经安装了 Prometheus v2.26 或更高版本。我们假设你熟悉 Prometheus、Amazon 和 Prometheus 的 EC2亚马逊托管服务。有关如何安装 Prometheus 的信息,请参阅 Prometheus 网站上的开始使用
如果您不熟悉亚马逊 EC2 或亚马逊 Prometheus 托管服务,我们建议您先阅读以下章节:
为亚马逊创建 IAM 角色 EC2
要流式传输指标,您必须先使用 AWS 托管策略创建 IAM 角色AmazonPrometheusRemoteWriteAccess。然后,您可以使用该角色启动实例,并将指标流式传输到您的 Amazon Managed Service for Prometheus 工作区。
-
使用 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
从导航窗格中选择角色,然后选择创建角色。
-
对于信任实体的类型,选择 AWS service (亚马逊云科技服务)。对于使用案例,选择 EC2。选择下一步: 权限。
-
在搜索栏中输入 AmazonPrometheusRemoteWriteAccess。在 “策略名称” 中 AmazonPrometheusRemoteWriteAccess,选择,然后选择 “附加策略”。选择下一步: 标签。
-
(可选)为您的 IAM 角色创建 IAM 标签。选择 下一步: 审核。
-
输入角色的名称。选择创建策略。
启动 Amazon EC2 实例
要启动亚马逊 EC2 实例,请按照《适用于 Linux 实例的亚马逊弹性计算云用户指南》中的启动实例中的说明进行操作。
运行演示应用程序
创建 IAM 角色并使用该角色启动 EC2 实例后,您可以运行演示应用程序以查看其运行情况。
运行演示应用程序并测试指标
-
使用以下模板创建名为
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) }
-
运行以下命令以安装相应的依赖项。
sudo yum update -y sudo yum install -y golang go get github.com/prometheus/client_golang/prometheus/promhttp
-
运行演示应用程序。
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 工作区
要创建 Amazon Managed Service for Prometheus 工作区,请按照创建工作区中的说明进行操作。
运行 Prometheus 服务器
-
使用以下示例 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
-
运行 Prometheus 服务器,将演示应用程序的指标发送到 Amazon Managed Service for Prometheus 工作区。
prometheus --config.file=prometheus.yaml
Prometheus 服务器现在应该将演示应用程序的指标发送到 Amazon Managed Service for Prometheus 工作区。