Prometheus 入门

学习安装 Prometheus 监控和警报系统并编写它的查询。

Prometheus 是一个开源的监控和警报系统,它直接从目标主机上运行的代理程序中抓取指标,并将收集的样本集中存储在其服务器上。也可以使用像 collectd_exporter 这样的插件推送指标,尽管这不是 Promethius 的默认行为,但在主机位于防火墙后面或位于安全策略禁止打开端口的某些环境中它可能很有用。

Prometheus 是云原生计算基金会(CNCF)的一个项目。它使用联合模型federation model进行扩展,该模型使得一个 Prometheus 服务器能够抓取另一个 Prometheus 服务器的数据。这允许创建分层拓扑,其中中央系统或更高级别的 Prometheus 服务器可以抓取已从下级实例收集的聚合数据。

除 Prometheus 服务器外,其最常见的组件是警报管理器及其输出器。

警报规则可以在 Prometheus 中创建,并配置为向警报管理器发送自定义警报。然后,警报管理器处理和管理这些警报,包括通过电子邮件或第三方服务(如 PagerDuty)等不同机制发送通知。

Prometheus 的输出器可以是库、进程、设备或任何其他能将 Prometheus 抓取的指标公开出去的东西。 这些指标可在端点 /metrics 中获得,它允许 Prometheus 无需代理直接抓取它们。本文中的教程使用 node_exporter 来公开目标主机的硬件和操作系统指标。输出器的输出是明文的、高度可读的,这是 Prometheus 的优势之一。

此外,你可以将 Prometheus 作为后端,配置 Grafana 来提供数据可视化和仪表板功能。

理解 Prometheus 的配置文件

抓取 /metrics 的间隔秒数控制了时间序列数据库的粒度。这在配置文件中定义为 scrape_interval 参数,默认情况下设置为 60 秒。

scrape_configs 部分中为每个抓取作业设置了目标。每个作业都有自己的名称和一组标签,可以帮助你过滤、分类并更轻松地识别目标。一项作业可以有很多目标。

安装 Prometheus

在本教程中,为简单起见,我们将使用 Docker 安装 Prometheus 服务器和 node_exporter。Docker 应该已经在你的系统上正确安装和配置。对于更深入、自动化的方法,我推荐 Steve Ovens 的文章《如何使用 Ansible 与 Prometheus 建立系统监控》。

在开始之前,在工作目录中创建 Prometheus 配置文件 prometheus.yml,如下所示:

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'

        static_configs:
        - targets: ['localhost:9090']

  - job_name: 'webservers'

        static_configs:
        - targets: ['<node exporter node IP>:9100']

通过运行以下命令用 Docker 启动 Prometheus:

$ sudo docker run -d -p 9090:9090 -v
/path/to/prometheus.yml:/etc/prometheus/prometheus.yml
prom/prometheus

默认情况下,Prometheus 服务器将使用端口 9090。如果此端口已在使用,你可以通过在上一个命令的后面添加参数 --web.listen-address="<IP of machine>:<port>" 来更改它。

在要监视的计算机中,使用以下命令下载并运行 node_exporter 容器:

$ sudo docker run -d -v "/proc:/host/proc" -v "/sys:/host/sys" -v
"/:/rootfs" --net="host" prom/node-exporter --path.procfs
/host/proc --path.sysfs /host/sys --collector.filesystem.ignored-
mount-points "^/(sys|proc|dev|host|etc)($|/)"

出于本文练习的目的,你可以在同一台机器上安装 node_exporter 和 Prometheus。请注意,生产环境中在 Docker 下运行 node_exporter 是不明智的 —— 这仅用于测试目的。

要验证 node_exporter 是否正在运行,请打开浏览器并导航到 http://<IP of Node exporter host>:9100/metrics,这将显示收集到的所有指标;也即是 Prometheus 将要抓取的相同指标。

要确认 Prometheus 服务器安装成功,打开浏览器并导航至:http://localhost:9090。

你应该看到了 Prometheus 的界面。单击“Status”,然后单击“Targets”。在 “Status” 下,你应该看到你的机器被列为 “UP”。

使用 Prometheus 查询

现在是时候熟悉一下 PromQL(Prometheus 的查询语法)及其图形化 Web 界面了。转到 Prometheus 服务器上的 http://localhost:9090/graph。你将看到一个查询编辑器和两个选项卡:“Graph” 和 “Console”。

Prometheus 将所有数据存储为时间序列,使用指标名称标识每个数据。例如,指标 node_filesystem_avail_bytes 显示可用的文件系统空间。指标的名称可以在表达式框中使用,以选择具有此名称的所有时间序列并生成即时向量。如果需要,可以使用选择器和标签(一组键值对)过滤这些时间序列,例如:

node_filesystem_avail_bytes{fstype="ext4"}

过滤时,你可以匹配“完全相等”(=)、“不等于”(!=),“正则匹配”(=~)和“正则排除匹配”(!~)。以下示例说明了这一点:

要过滤 node_filesystem_avail_bytes 以显示 ext4 和 XFS 文件系统:

node_filesystem_avail_bytes{fstype=~"ext4|xfs"}

要排除匹配:

node_filesystem_avail_bytes{fstype!="xfs"}

你还可以使用方括号得到从当前时间往回的一系列样本。你可以使用 s 表示秒,m 表示分钟,h 表示小时,d 表示天,w 表示周,而 y 表示年。使用时间范围时,返回的向量将是范围向量。

例如,以下命令生成从五分钟前到现在的样本:

node_memory_MemAvailable_bytes[5m]

Prometheus 还包括了高级查询的功能,例如:

100 * (1 - avg by(instance)(irate(node_cpu_seconds_total{job='webservers',mode='idle'}[5m])))

请注意标签如何用于过滤作业和模式。指标 node_cpu_seconds_total 返回一个计数器,irate()函数根据范围间隔的最后两个数据点计算每秒的变化率(意味着该范围可以小于五分钟)。要计算 CPU 总体使用率,可以使用 node_cpu_seconds_total 指标的空闲(idle)模式。处理器的空闲比例与繁忙比例相反,因此从 1 中减去 irate 值。要使其为百分比,请将其乘以 100。

了解更多

Prometheus 是一个功能强大、可扩展、轻量级、易于使用和部署的监视工具,对于每个系统管理员和开发人员来说都是必不可少的。出于这些原因和其他原因,许多公司正在将 Prometheus 作为其基础设施的一部分。

要了解有关 Prometheus 及其功能的更多信息,我建议使用以下资源:

  • 关于 PromQL
  • 什么是 node_exporters 集合
  • Prometheus 函数
  • 4 个开源监控工具
  • 现已推出:DevOps 监控工具的开源指南

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/201423.html<

(0)
管理的头像管理
上一篇2025-04-05 18:21
下一篇 2025-04-05 18:23

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注