如何配置 Prometheus 在 GCP 上抓取新的 CE?

How to configure Prometheus to scrape new CE on GCP?

我正在尝试在 GCP 上的计算引擎上配置 Prometheus 实例,以从多个计算引擎实例中抓取指标。关于这一点,一切都应该是标准的,但我应该如何配置 Prometheus 以自动区分新的 Compute Engines 实例? 目前我没有使用K8s。

例如: 我有 2 个使用 Prometheus 监控的 nginx 实例。如果我添加一个新的 nginx 实例,我希望在 Prometheus 上自动获得新指标。

谢谢

“从几个计算引擎实例中抓取指标”和“添加一个新的 nginx 实例我想在 Prometheus 上自动获得新指标”之间有一个重要的区别。

自动将目标添加到 Prometheus 需要某种形式的服务发现。 Prometheus 包括 service discovery for GCE. Generally (!) the expectation of this solution is that your instances will be running Prometheus' Node Exporter,您将配置发现以在您的实例上找到节点导出器 运行。

要在您的实例上发现服务器|服务 运行 的(指标),需要不同的解决方案。 Prometheus 需要以某种方式能够以编程方式确定您的虚拟机是 运行 服务器|服务,例如(多个)NGINX 实例,并且这些服务正在导出(普罗米修斯)指标。 GCE SD 解决方案无法做到这一点。

您需要另一个解决方案。

Kubernetes 'blurs'(消除)各个 VM 之间的区别,并允许其用户更多地关注平台上的服务(例如 NGINX)运行。使用 Kubernetes,您的 NGINX 部署可能由 Kubernetes 服务表示,然后您可以配置 Prometheus 以发现 Kubernetes 服务(可能特别是那些标记为 nginx 的服务)作为目标(自动)。

总而言之,您(至少)有两个选择:

  1. 在创建 NGINX 端点时使用目标列表手动配置 Prometheus。
  2. 在您创建 NGINX 端点时,以编程方式为 Prometheus 配置目标列表。 File-based service discovery 是这种情况下经常推荐的(我没有使用过)解决方案。
  3. 使用另一种形式的服务发现(Consul 是一个不错的选择,可以用于 service discovery Prometheus)。 注意您仍然需要配置 Consul 来查找 NGINX 实例,因此这可能只是解决您的问题。
  4. 可能有更好的选择。

不知道能不能解决你的问题。

我在所有实例上都安装了节点导出器,并为其配置了自动发现服务。最重要的是,一些实例有自己的 app_exporter,可以在另一个端口 (9854) 上发布特定于应用程序的指标。

我做了什么:
我为该端口添加了一个额外的 GCP 发现抓取器作业:

  scrape_configs:
    # Dynamic GCP service discovery for extra app-metrics
    - job_name: 'gcp_solr_discovery'
      metrics_path: "/admin/metrics"
      gce_sd_configs:
         # Europe West 1
       - project: "your-project-here"
         zone: "europe-west1-b"
         port: 9854
       - project: "your-project-here"
         zone: "europe-west1-c"
         port: 9854

这将使 GCP 服务发现查询这些端口,无论 VM 是否具有节点导出器,并且您的实例将被动态添加。