CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页/开源项目/Prometheus/Prometheus 入门
文档目录
Prometheus 入门Prometheus 入门使用基于文件的服务发现来发现抓取目标使用 Node Exporter 监控 Linux 主机指标理解指标类型对用 Go 编写的 HTTP 服务器进行插桩使用 Grafana 可视化指标基于指标的告警

Prometheus

Prometheus 入门

Prometheus 是一个系统监控和告警系统。它由 SoundCloud 于 2012 年开源,是继 Kubernetes 之后第二个加入并毕业于 Cloud Native Computing Foundation 的项目。Prometheus 将所有指标数据存储为时间序列,即指标信息与记录时的时间戳一起存储,还可以存储称为标签的可选键值对。...

什么是 Prometheus?

Prometheus 是一个系统监控和告警系统。它由 SoundCloud 于 2012 年开源,是继 Kubernetes 之后第二个加入并毕业于 Cloud Native Computing Foundation 的项目。Prometheus 将所有指标数据存储为时间序列,即指标信息与记录时的时间戳一起存储,还可以存储称为标签的可选键值对。

什么是指标?为什么它很重要?

通俗地说,指标是一种度量标准。我们要度量什么取决于不同的应用程序。对于 Web 服务器,可以是请求时间;对于数据库,可以是 CPU 使用率或活跃连接数等。

指标在理解应用程序为何以某种方式运行方面起着重要作用。如果你运行一个 Web 应用程序,有人告诉你应用程序很慢,你需要一些信息来找出应用程序发生了什么。例如,当请求数量很高时,应用程序可能会变慢。如果你有请求计数指标,你就可以找到原因并增加服务器数量来处理高负载。每当你为应用程序定义指标时,你必须戴上侦探帽,问自己这个问题:如果我的应用程序出现任何问题,什么信息对我调试会是重要的?

Prometheus 的基本架构

Prometheus 设置的基本组件包括:

  • Prometheus Server(抓取和存储指标数据的服务器)。
  • 要被抓取的目标,例如暴露其指标的已插桩应用程序,或暴露另一个应用程序指标的 exporter。
  • Alertmanager 用于根据预设规则发出告警。

(注意:除此之外,Prometheus 还有 push_gateway,本文不做介绍)。

架构

让我们以一个 Web 服务器作为示例应用程序,假设我们想提取某个指标,比如 Web 服务器处理的 API 调用数量。因此,我们使用 Prometheus 客户端库添加某些插桩代码并暴露指标信息。现在我们的 Web 服务器暴露了其指标,我们可以配置 Prometheus 来抓取它。现在 Prometheus 被配置为以特定的时间间隔(比如每分钟)从监听在 xyz IP 地址端口 7500 的 Web 服务器获取指标。

在 11:00:00 当我将服务器对外公开使用时,应用程序计算请求计数并暴露它,Prometheus 同时抓取计数指标并将值存储为 0。

到 11:01:00 一个请求被处理。服务器中的插桩逻辑将计数增加到 1。当 Prometheus 抓取该指标时,计数的值现在为 1。

到 11:02:00 又处理了两个请求,请求计数为 1+2 = 3。同样,指标被抓取并存储。

用户可以控制 Prometheus 抓取指标的频率。

时间戳 请求计数(指标)
11:00:00 0
11:01:00 1
11:02:00 3

(注意:此表仅为便于理解的表示。Prometheus 不会以这种确切格式存储值)

Prometheus 还有一个 API,允许查询已通过抓取存储的指标。此 API 用于查询指标、在其上创建仪表板/图表等。PromQL 用于查询这些指标。

基于请求计数指标创建的简单折线图看起来像这样

图表

你可以抓取多个有用的指标来了解应用程序中发生了什么,并在它们上创建多个图表。将图表组合成仪表板,用于获取应用程序的概览。

实际操作

让我们动手设置 Prometheus。Prometheus 使用 Go 编写,你只需要针对你操作系统编译的二进制文件。从此处下载与你操作系统对应的二进制文件,并将二进制文件添加到你的路径中。

Prometheus 暴露自身的指标,可以被自己或另一个 Prometheus 服务器消费。

现在我们已经安装了 Prometheus,下一步是运行它。我们只需要二进制文件和配置文件。Prometheus 使用 yaml 文件进行配置。

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ["localhost:9090"]

在上面的配置文件中,我们指定了 scrape_interval,即 Prometheus 抓取指标的频率。我们添加了 scrape_configs,其中包含名称和要抓取指标的目标。Prometheus 默认监听端口 9090,所以将其添加到 targets 中。

prometheus --config.file=prometheus.yml

现在 Prometheus 已启动并运行,每 15 秒抓取自身的指标。Prometheus 有标准的 exporter 可用于导出指标。接下来我们将运行一个 Node Exporter(一个用于机器指标的 exporter),并使用 Prometheus 抓取它。(下载 Node 指标 exporter。)

在终端中运行 Node Exporter。

./node_exporter

Node exporter

接下来,将 Node Exporter 添加到 scrape_configs 列表中:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: node_exporter
    static_configs:
      - targets: ["localhost:9100"]

在本教程中,我们讨论了什么是指标以及为什么它们很重要、Prometheus 的基本架构以及如何运行 Prometheus。

文章大纲