前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Prometheus 入门

Prometheus 入门

作者头像
授客
发布于 2025-01-13 00:50:16
发布于 2025-01-13 00:50:16
9500
代码可运行
举报
文章被收录于专栏:授客的专栏授客的专栏
运行总次数:0
代码可运行

测试环境

prometheus-2.26.0.linux-amd64.tar.gz

下载地址:https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz

prometheus-2.54.1.linux-amd64.tar.gz

下载地址:https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz

CentOS 7.9

下载并运行Prometheus

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
# tar xvzf prometheus-2.26.0.linux-amd64.tar.gz
# cd prometheus-2.26.0.linux-amd64
# ls
console_libraries  consoles  LICENSE  NOTICE  prometheus  prometheus.yml  promtool

开始运行之前,先对它进行配置。

配置Prometheus自身监控

Prometheus通过抓取度量HTTP端点来从目标收集指标。由于Prometheus以同样的方式暴露自己的数据,它也可以搜集和监控自己的健康状况。 虽然只收集自身数据的Prometheus服务器不是很有用,但它是一个很好的开始示例。保存以下Prometheus基础配置到一个名为prometheus.yml的文件(安装包自动解压后,解压目录下,默认就就有一个名为prometheus.yml的文件)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
global:
  scrape_interval:     15s # 默认,每15秒采样一次目标

  # 与其它外部系统(比如federation, remote storage, Alertmanager)交互时,会附加这些标签到时序数据或者报警
  external_labels:
    monitor: 'codelab-monitor'

# 一份采样配置仅包含一个 endpoint 来做采样
# 下面是 Prometheus 本身的endpoint:
scrape_configs:
  # job_name 将被被当作一个标签 `job=<job_name>`添加到该配置的任意时序采样.
  - job_name: 'prometheus'

    # 覆盖全局默认值,从该job每5秒对目标采样一次
    scrape_interval: 5s

    static_configs:
      # 如果需要远程访问, localhost  也可以替换为具体IP,比如10.118.71.170
      - targets: ['localhost:9090'] 

有关配置选项的完整说明,请参阅配置文档

启动Prometheus

使用新创建的配置文件来启动 Prometheus,切换到包含 Prometheus 二进制文件的目录并运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启动 Prometheus.
# 默认地, Prometheus 在 ./data 路径下存储其数据库 (flag --storage.tsdb.path).
# ./prometheus --config.file=prometheus.yml

通过访问 localhost:9000 来浏览状态页。等待几秒让他从自己的 HTTP metric endpoint 来收集数据。

还可以通过访问到其 metrics endpoint(http://localhost:9090/metrics) 来验证 Prometheus 是否正在提供有关其自身的 metrics

开放防火墙端口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# firewall-cmd --permanent --zone=public --add-port=9090/tcp
success
# firewall-cmd --reload
success

使用expressin browser

使用 Prometheus 内置的expressin browser访问 localhost:9090/graph,选择 Graph 导航菜单下的 Table tab页 (Classic UI下为Console tab页)。

通过查看localhost:9090/metrics 页面内容可知,Prometheus 导出了关于其自身的一个名为 prometheus_target_interval_length_seconds指标(目标采样之间的实际间隔)。将其作为搜索表达式,输入到表达式搜索框中,点击 Execute 按钮,如下,将返回多个不同的时间序列(以及每个时间序列的最新值),所有时间序列的 metric 名称均为 prometheus_target_interval_length_seconds,但具有不同的标签。 这些标签具有不同的延迟百分比目标组间隔(target group intervals)

如果我们只对第 99 个百分位延迟感兴趣,则可以使用以下查询来检索该信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
prometheus_target_interval_length_seconds{quantile="0.99"}

如果需要计算返回的时间序列数,可以修改查询如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
count(prometheus_target_interval_length_seconds)

更多有关 expression language 的更多信息,请查看 expression language 文档

使用绘图界面

要绘制图形表达式,请使用 “Graph” 选项卡。

例如,输入以下表达式以绘制在自采样的 Prometheus 中每秒创建 chunk 的速率:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rate(prometheus_tsdb_head_chunks_created_total[1m])

启动一些采样目标

现在让我们增加一些采样目标供 Prometheus 进行采样。

使用Node Exporter作为采样目标,多关于它的使用请查阅

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
# tar -xvzf node_exporter-1.1.2.linux-amd64.tar.gz
# ./node_exporter --web.listen-address 127.0.0.1:8001
# ./node_exporter --web.listen-address 127.0.0.1:8002
# ./node_exporter --web.listen-address 127.0.0.1:8003

现在,应该存在监听 http://localhost:8080/metrics, http://localhost:8081/metrics 和http://localhost:8082/metrics的示例目标

配置 Prometheus 来监控示例目标

现在,我们将配置 Prometheus 来采样这些新目标。 让我们将所有三个 endpoint 分组为一个称为 “node” 的 job。 但是,假设前两个 endpoint 是生产目标,而第三个 endpoint 代表金丝雀实例。 为了在 Prometheus 中对此建模,我们可以将多个端组添加到单个 job 中,并为每个目标组添加额外的标签。 在此示例中,我们将 group=“ production” 标签添加到第一个目标组,同时将 group=“ canary” 添加到第二个目标。

为此,请将以下job定义添加到 prometheus.yml 中的 scrape_configs 部分,然后重新启动 Prometheus 实例。修改后的 prometheus.yml内容如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
global:
  scrape_interval:     15s # 默认,每15秒采样一次目标

  # 与其它外部系统(比如federation, remote storage, Alertmanager)交互时,会附加这些标签到时序数据或者报警
  external_labels:
    monitor: 'codelab-monitor'

# 一份采样配置仅包含一个 endpoint 来做采样
# 下面是 Prometheus 本身的endpoint:
scrape_configs:
  # job_name 将被被当作一个标签 `job=<job_name>`添加到该配置的任意时序采样.
  - job_name: 'prometheus'

    # 覆盖全局默认值,从该job每5秒对目标采样一次
    scrape_interval: 5s

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

  - job_name: 'node'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:8001', 'localhost:8002']
        labels:
          group: 'production'

      - targets: ['localhost:8003']
        labels:
          group: 'canary'

查看Targets(Status -> Targets)

Graph查询

配置规则以将采样的数据聚合到新的时间序列

尽管在我们的示例中并不会有问题,但是在聚集了数千个时间序列中查询时可能会变慢。 为了提高效率,Prometheus 允许通过配置的记录规则将表达式预记录到全新的持久化的时间序列中。 假设我们感兴趣的是 5 分钟的窗口内测得的每个实例的所有cpu上平均的cpu时间(node_cpu_seconds_total,保留 Job,instance,和mode 维度))。 我们可以这样写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
avg by (job, instance, mode) (rate(node_cpu_seconds_total[5m]))

Graph中执行查询,结果如下

现在,要将由该表达式产生的时间序列记录到一个名为:job_instance_mode:node_cpu_seconds:avg_rate5m 的新指标,使用以下记录规则创建文件并将其保存 prometheus.rules.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
groups:
- name: cpu-node
  rules:
  - record: job_instance_mode:node_cpu_seconds:avg_rate5m
    expr: avg by (job, instance, mode) (rate(node_cpu_seconds_total[5m]))

prometheus.yml 中添加 rule_files 语句,以便 Prometheus 选择此新规则。 现在,prometheus.yml配置应如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
global:
  scrape_interval:     15s # 默认,每15秒采样一次目标

  # 与其它外部系统(比如federation, remote storage, Alertmanager)交互时,会附加这些标签到时序数据或者报警
  external_labels:
    monitor: 'codelab-monitor'

rule_files:
  - 'prometheus.rules.yml'

# 一份采样配置仅包含一个 endpoint 来做采样
# 下面是 Prometheus 本身的endpoint:
scrape_configs:
  # job_name 将被被当作一个标签 `job=<job_name>`添加到该配置的任意时序采样.
  - job_name: 'prometheus'

    # 覆盖全局默认值,从该job每5秒对目标采样一次
    scrape_interval: 5s

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

  - job_name: 'node'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:8001', 'localhost:8002']
        labels:
          group: 'production'

      - targets: ['localhost:8003']
        labels:
          group: 'canary'

通过新的配置重新启动 Prometheus,并通过expression brower查询 job_instance_mode:node_cpu_seconds:avg_rate5m,结果如下

参考连接

https://www.kancloud.cn/nicefo71/prometheus-doc-zh/1331204

https://prometheus.io/docs/prometheus/latest/getting_started/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用Prometheus+Grafana监控MySQL实践
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。
拓荒者
2019/03/11
3.5K0
使用Prometheus+Grafana监控MySQL实践
Prometheus 入门与实践
随着容器技术的迅速发展,Kubernetes 已然成为大家追捧的容器集群管理系统。Prometheus 作为生态圈 Cloud Native Computing Foundation(简称:CNCF)中的重要一员,其活跃度仅次于 Kubernetes, 现已广泛用于 Kubernetes 集群的监控系统中。本文将简要介绍 Prometheus 的组成和相关概念,并实例演示 Prometheus 的安装,配置及使用,以便开发人员和云平台运维人员可以快速的掌握 Prometheus。
菲宇
2019/06/13
9290
Prometheus 入门与实践
Prometheus 基础入门 (一)
Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。
Kevin song
2023/02/09
1.4K0
Prometheus 基础入门 (一)
Prometheus安装部署+监控+绘图+告警
查看监控数据(https://grafana.com/dashboards/9276)
DevOps云学堂
2019/10/18
1.1K0
Prometheus安装部署+监控+绘图+告警
Prometheus +VictoriaMetrics+Granafa安装部署
https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz
授客
2025/01/19
2010
Prometheus +VictoriaMetrics+Granafa安装部署
Prometheus部署
5、Master节点编辑“prometheus.yml”增加“node_exporter”IP
kevin_yyc
2021/04/14
8010
Prometheus部署
Prometheus+Grafana监控系统搭建
和Zabbix类似,Prometheus也是一个近年比较火的开源监控框架,和Zabbix不同之处在于Prometheus相对更灵活点,模块间比较解耦,比如告警模块、代理模块等等都可以选择性配置。服务端和客户端都是开箱即用,不需要进行安装。zabbix则是一套安装把所有东西都弄好,很庞大也很繁杂。
Cloudox
2021/11/23
5230
Prometheus+Grafana监控系统搭建
Prometheus 入门
在 metrics 这个地址里,第一个指标是 go_gc_duration_seconds
谢正伟
2021/10/08
9920
Prometheus 入门
prometheus节点接入
监控的主要方式是,通过exporter获取量化指标,然后prometheus服务器从节点采集对应数据,存放到数据库
若水xii
2025/04/26
1270
助力工业物联网,工业大数据之服务域:Prometheus的介绍【三十六】
Maynor
2023/08/20
2850
助力工业物联网,工业大数据之服务域:Prometheus的介绍【三十六】
prometheus+telegraf+grafana监控学习(一)
普罗米修斯下载地址:https://prometheus.io/download/
Bob hadoop
2020/12/09
6.1K1
prometheus+telegraf+grafana监控学习(一)
Prometheus+Grafana监控系统
Zabbix的客户端更多是只做上报的事情,push模式。而Prometheus则是客户端本地也会存储监控数据,服务端定时来拉取想要的数据。
小陈运维
2021/10/13
8110
采用Prometheus+Grafana+Altermanager搭建部署K8S集群节点可视化监控告警平台
1 Node Exporter for Prometheus Dashboard CN 0413 ConsulManager自动同步版 dashboard for Grafana | Grafana Labs
宝耶需努力
2023/07/01
1.3K0
采用Prometheus+Grafana+Altermanager搭建部署K8S集群节点可视化监控告警平台
监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库
俗话说,没有监控的系统就是在裸奔,好的监控就是运维人员的第三只手,第三只眼。本文将使用prometheus及Grafana搭建一套监控系统来监控主机及数据库(MySQL、Redis)。
俊才
2019/08/30
3.1K0
监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库
Centos7.X 搭建Prometheus+node_exporter+Grafana实时监控平台
主要模块包含: Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。
小菠萝测试笔记
2020/06/09
1K0
Centos7.X 搭建Prometheus+node_exporter+Grafana实时监控平台
Prometheus监控Linux资源
Prometheus具备了一套比较完善的监控生态解决方案,同时它也是一个时序的数据库。它的整体架构图如下所示。
无涯WuYa
2022/12/03
1.1K0
Prometheus监控Linux资源
部署 Prometheus 主机监控完全体
监控完全体 = Prometheus + Node Exporter + cadvisor + grafana
宋天伦
2023/10/20
5600
部署 Prometheus 主机监控完全体
构建企业级监控平台系列(二十四):Prometheus 配置 Grafana 展示与报警
前面介绍了 Prometheus 标签 label、PromQL、AlertManager、Alertmanager 配置实现钉钉告警、Pushgateway、基于K8S服务发现、监控常见服务等相关的知识点,今天我将详细的为大家介绍 Prometheus 配置 Grafana 展示与报警 相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈支持一波!!!
民工哥
2023/11/01
1.1K0
构建企业级监控平台系列(二十四):Prometheus 配置 Grafana 展示与报警
云原生(三十五) | Prometheus入门和安装
Prometheus是一个开源监控解决方案,用于收集和聚合指标作为时间序列数据。更简单地说,Prometheus 商店中的每个项目都是一个指标事件,并带有它发生的时间戳。
Lansonli
2022/07/25
3880
云原生(三十五) | Prometheus入门和安装
Prometheus学习之安装
Prometheus,一个开源的监控系统,它通过获取应用程序中实时时间序列数据,然后根据强大的规则引擎,帮助用户监控机器和应用程序。
kongxx
2020/02/18
5910
推荐阅读
相关推荐
使用Prometheus+Grafana监控MySQL实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验