一、Prometheus介绍及部署

news2024/12/23 23:55:29

目录

一、什么是Prometheus?

二、特点

三、prometheus 的生态组件:

四、Prometheus架构图

五、prometheus 的工作模式

六、Prometheus 的工作流程

七、部署Prometheus

 1、prometheus配置文件介绍

2、配置文件详解

3、配置systemd服务 用systemctl来管理prometheus


一、什么是Prometheus?

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)

二、特点

  1. 强大的多维度数据模型
    1. 时间序列数据通过metric和标签labels 键值对来区分
    2. 所有的metrics都可以设置任意的多维标签
  2. 强大的查询语句
  3. 易于管理
    1. prometheus server 是一个单独的二进制文件,可以直接在本地工作,不依赖于分布式存储
  4. 高效的存储
  5. 可以采用 push gata way的方式把时间序列数据推送至Prometheus server端
  6. 可以通过服务发现或者静态配置去获取监控的 targets
  7. 有多重可视化图形界面,一般和grafana配合使用

三、prometheus 的生态组件:

  1. prometheus server:用于收集和存储 时间序列数据。由3部分组成:
    1. Retrieval :负责在活跃的target主机上抓取监控指标数据
    2. storage:存储,主要是吧采集到的数据存储到磁盘
    3. promql:是prometheus 提供的查询语模块
  2. Client Library: 客户端库
  3. Push gateway:各个目标主机可上报数据到pushgateway,然后prometheus server统一从pushgateway拉取数据。
  4. exporters:收集监控样本数据,并以标准格式向P 提供
  5. alertmanager:从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。
  6. grafana:监控仪表盘,可视化监控数据

四、Prometheus架构图

五、prometheus 的工作模式

  • Retrieval是负责定时去暴露的目标页面上去抓取采样指标数据。
  • Storage 是负责将采样数据写入指定的时序数据库存储。
  • PromQL 是Prometheus提供的查询语言模块。可以和一些webui比如grfana集成。
  • Jobs / Exporters:Prometheus 可以从 Jobs 或 Exporters 中拉取监控数据。Exporter 以 Web API 的形式对外暴露数据采集接口。
  • Prometheus Server:Prometheus 还可以从其他的 Prometheus Server 中拉取数据。
  • Pushgateway:对于一些以临时性 Job 运行的组件,Prometheus 可能还没有来得及从中 pull 监控数据的情况下,这些 Job 已经结束了,Job 运行时可以在运行时将监控数据推送到 Pushgateway 中,Prometheus 从 Pushgateway 中拉取数据,防止监控数据丢失。
  • Service discovery:是指 Prometheus 可以动态的发现一些服务,拉取数据进行监控,如从DNS,Kubernetes,Consul 中发现, file_sd 是静态配置的文件。
  • AlertManager:是一个独立于 Prometheus 的外部组件,用于监控系统的告警,通过配置文件可以配置一些告警规则,Prometheus 会把告警推送到 AlertManager。

六、Prometheus 的工作流程

  1. Prometheus 以Prometheus server 为核心,用于收集和存储时间序列数据。 Prometheus Server 从监控目标中通过 pull 方式拉取指标数据,或通过 pushgateway 把采集的数据拉取到 Prometheus server 中。
  2. Prometheus server 把采集到的监控指标数据通过 TSDB 存储到本地 HDD/SSD 中。
  3. Prometheus 采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的告警通知发送到 Alertmanager。
  4. Alertmanager 通过配置报警接收方,发送报警到邮件、钉钉或者企业微信等。
  5. Prometheus 自带的 Web UI 界面提供 PromQL 查询语言,可查询监控数据。
  6. Grafana 可接入 Prometheus 数据源,把监控数据以图形化形式展示出。

七、部署Prometheus

下载安装包
官网:https://prometheus.io/
[root@rabbitmq_2 prometheus]# wget https://github.com/prometheus/prometheus/releases/download/v2.45.1/prometheus-2.45.1.linux-amd64.tar.gz
解压:
[root@rabbitmq_2 prometheus]# tar -xvf prometheus-2.45.1.linux-amd64.tar.gz 
移动到opt/
[root@rabbitmq_2 prometheus]# mv prometheus-2.45.1.linux-amd64 /opt/prometheus/prometheus
创建prometheus 用户
[root@rabbitmq_2 prometheus]# useradd -M -s /usr/sbin/nologin prometheus
[root@rabbitmq_2 prometheus]# id prometheus
uid=1001(prometheus) gid=1001(prometheus) 组=1001(prometheus)
给这个目录授权
[root@rabbitmq_2 prometheus]# chown prometheus:prometheus -R /opt/prometheus

 1、prometheus配置文件介绍

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - localhost:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "alert.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# 抓取配置列表
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
  # node_exporter配置
  - job_name: "node_exporter"
    scrape_interval: 15s
    static_configs:
    - targets: ["localhost:9100"]
      labels:
        instance: Prometheus服务器

    - targets: ["192.168.134.132:9100"]
      labels:
        instance: test主服务器

2、配置文件详解

# 配置文件解释
global:
  scrape_interval:15s //每次数据采集的时间间隔,默认为1分钟
  scrape_timeout:采集请求超时时间,默认为10秒
  evaluation_interval:执行rules的频率,默认为1分钟
  scrape_configs:主要用于配置被采集数据节点操作,每一个采集配置主要由以下几个参数
    job_name:全局唯一名称
    scrape_interval:默认等于global内设置的参数,设置后可以覆盖global中的值
    scrape_timeout:默认等于global内设置的参数
metrics_path:从targets获取meitric的HTTP资源路径,默认是/metrics
honor_labels:Prometheus如何处理标签之间的冲突。若设置为True,则通过保留变迁来解决冲突;若设置为false,则通过重命名;
scheme:用于请求的协议方式,默认是http
params:数据采集访问时HTTP URL设定的参数
relabel_configs:采集数据重置标签配置
metric_relabel_configs:重置标签配置
sample_limit:对每个被已知样本数量的每次采集进行限制,如果超过限制,该数据将被视为失
败。默认值为0,表示无限制

全局配置 global
global: 用于设置全局配置项,这些配置项会应用于所有的抓取配置和路由规则
    scrape_interval: 定义 Prometheus 服务器定期抓取指标的时间间隔,默认为 1 分钟(1m)
    evaluation_interval: 定义 Prometheus 服务器执行规则评估的时间间隔,默认为 1 分钟(1m)
    external_labels: 定义 Prometheus 实例应用于所有接收的指标的标签列表。这些标签可用于识别不同的 Prometheus 实例,或标识集群、环境等信息
    scrape_configs:主要用于配置被采集数据节点操作,每一个采集配置主要由以下几个参数
        job_name:全局唯一名称
        scrape_interval:默认等于global内设置的参数,设置后可以覆盖global中的值
        scrape_timeout:默认等于global内设置的参数
告警通知 alerting
alerting: 触发告警后通知方式
    alertmanagers: 定义了告警管理器的地址,触发告警后会委托给管理器处理。在上面的例子中,告警管理器的地址是 localhost:9093,并且这个地址是静态配置的,也就是说 Prometheus 不会动态地发现新的告警管理器
规则文件加载 rule_files
rule_files: 加载告警规则文件列表
    在这个示例中,定义了 Prometheus 加载的规则文件列表,包括了一个名为 memory_usage.rules 的告警规则文件和一个名为 disk_usage.rules 的记录规则文件
根据正则表达式加载规则文件,如 /opt/bitnami/prometheus/rules/*rule.yml 是以 /etc/prometheus/rules/ 目录下的所有以 rules 结尾的文件都将作为规则文件进行加载

scrape_configs:抓取目标的指标 
    scrape_config: 定义数据抓取目标的配置
    job_name: 用于定义要抓取的目标的名称,可以是单个目标或者多个目标。这些目标可以是HTTP、HTTPS、DNS、SNMP、JMX等协议。Prometheus会使用这个名称进行区分,当一个目标被成功抓取时,Prometheus会给它一个时间戳并存储相应的指标。在查询时,可以使用job_name来选择要查询的指标源
    metrics_path: 用于指定指标数据的路径,上面的例子中的 JVM 是从 /actuator/prometheus 路径获取对应的指标。如果没有可以去掉或者注释掉 #metrics_path: '/actuator/prometheus'
    static_configs: 是一种配置方式,用于定义一组静态的目标列表
    targets: 用于定义需要抓取指标的目标的列表。它指定了要监控的目标的IP地址和端口号,让Prometheus定期去访问这些地址,抓取相应的指标数据
    labels: 可以为每个job_name和target添加一些labels,以便更好地描述和区分指标数据,可以通过这些labels来查询和过滤指标数据,并在报警规则中使用这些labels来进行更加精准的报警。在上述例子的 JVM 则是用于标识各类环境或分组。
注意 : labels 如果要使用中文,必须确认文件格式是否为 UTF-8,可以的话尽量使用 vscode 查看一下,不然可能会导致 Prometheus 启动失败

3、配置systemd服务 用systemctl来管理prometheus

vim  /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io
After=network.target
 
[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=on-failure
ExecStart=/opt/prometheus/prometheus/prometheus \
--config.file=/opt/prometheus/prometheus/prometheus.yml \
--storage.tsdb.path=/opt/prometheus/prometheus/data/ \
--storage.tsdb.retention=60d \
--web.enable-lifecycle

[Install]
WantedBy=multi-user.target

配置完之后 启动
[root@rabbitmq_2 system]# systemctl start prometheus.service 

[root@rabbitmq_2 system]# systemctl status prometheus.service 
● prometheus.service - Prometheus Server
   Loaded: loaded (/usr/lib/systemd/system/prometheus.service; disabled; vendor preset: disabled)
   Active: active (running) since 三 2023-11-22 16:41:35 CST; 4s ago
查看web界面是否正常
http://192.168.153.129:9090/
监控指标:
http://192.168.153.129:9090/metrics
都正常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1663463.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

联合有爱,光照未来

随着社会的进步和人们生活水平的提高&#xff0c;越来越多的家庭开始关注儿童的成长和教育。然而&#xff0c;仍有部分地区的儿童因资源匮乏、经济困难等原因&#xff0c;面临着生活和学习上的种种挑战。为了传递社会的温暖和关爱&#xff0c;改善有实际困难的学校及学生的学习…

Verilog_学习路线(小白)

#前言&#xff1a; 自从专心学习专业课后&#xff0c;发现知识点得用&#xff0c;越用越熟练&#xff0c;工具也一样&#xff0c;高级工具的学习可帮助我们在工作中极大地提高效率&#xff0c;但这里要记住一点&#xff0c;任何工具都是为解决实际问题出现的&#xff0c;即落脚…

uniapp音乐播放整理

一、前置知识点 1.1 音频组件控制-uni.createInnerAudioContext() 创建并返回内部 audio 上下文 innerAudioContext 对象。 主要用于当前音乐播放&#xff1b; 1.1.1 innerAudioContext属性 属性类型说明只读平台差异说明srcString音频的数据链接&#xff0c;用于直接播放…

Milvus Cloud:打造向量数据库的Airtable级体验

向量数据库Milvus Cloud是一种用于处理和存储向量数据的数据库,它通常用于机器学习、图像和视频检索、自然语言处理等领域。要将其升级为类似Airtable那样易用且一体化的系统,需要考虑以下几个关键方面: 1. 用户界面(UI)设计 Airtable之所以用户友好,很大程度上归功于其直…

Java 日期类 API

1. jdk8 之前的日期 API 1.1. System 类 currentTimeMillis(); Test public void test1() { long timeMillis System.currentTimeMillis(); System.out.println("timeMillis " timeMillis); }1.2. java.util.Date 和 java.sql.Date java.sql.Date 是 jav…

vue2项目升级到vue3经历分享5

写到第5篇了&#xff0c;解决了很多问题&#xff0c;还有一些需要调整 1 el-input-number指令兼容性调整 下面这个可编辑的表格&#xff0c;全是0&#xff0c;于是需要一个指令&#xff0c;让它自己实现如果是0&#xff0c;就置空&#xff1b;如果是数字就是格式化为千分位&…

男士内裤哪个品牌好穿?男士内裤品牌测评推荐,干货满满

随着时代的进步和发展&#xff0c;男士内裤现在普遍分为三角、平角、四角的三个大类&#xff0c;不过大多数男性朋友都是穿平角四角为主。虽然男士内裤款式众多&#xff0c;但大部分男同胞每一条内裤都是穿非常久的&#xff0c;实际上男士内裤需要定期更换才能保持更换的舒适性…

《十日终焉》中的定律整理-向虫队学习(举例+持续更新)

1、二八定律 二八定律&#xff0c;又称帕累托法则&#xff0c;也叫巴莱多定律。 是19世纪末20世纪初意大利经济学家巴莱多发明的。其中指出&#xff0c;约仅有20%的因素影响80%的结果。也就是说&#xff1a;所有变因中&#xff0c;最重要的仅有20%&#xff0c;虽然剩余的80%占…

第二证券今日投资参考:银保渠道合作限制松绑 低空旅游借势起飞

昨日&#xff0c;两市股指盘中震动上扬&#xff0c;沪指一度涨近1%续创年内新高&#xff0c;创业板指一度涨超2%。到收盘&#xff0c;沪指涨0.83%报3154.32点&#xff0c;深证成指涨1.55%报9788.07点&#xff0c;创业板指涨1.87%报1900.01点&#xff0c;科创50指数涨2.26%&…

如何让组织充满活力?你需要做好这七步

组织活力&#xff0c;通俗点说就是&#xff1a; 从竞争对手角度看&#xff0c;组织活力强的组织能做到竞争对手做不到的事情&#xff1b; 从客户角度看&#xff0c;组织活力强的组织&#xff0c;客户感受好&#xff1b; 从员工角度看&#xff0c;组织活力强的组织&#xff0c…

【速看】软考架构考前复习20问!你能答出多少?

马上就要进行今年的软考了&#xff0c;大家都准备得怎么样了呢&#xff0c;2024上半年的软考架构得分点你知道了吗&#xff1f; 目标不光是把历年母题的考点规律吃透&#xff0c;还要规划好各类题型的做题时间&#xff0c;除了纸质版还要上机模拟&#xff0c;更好的适应机考&am…

将java项目上传到GitHub步骤

文章目录 一、GitHub 作用二、github如何修改默认分支为master三、手把手教你把项目上传github上四、github怎么删除仓库或项目五、github配置ssh key密钥的步骤六、执行到push时报错的解决办法七、github怎么修改仓库语言 一、GitHub 作用 GitHub 是一个存放软件代码的网站&a…

上海计算机学会2023年9月月赛C++丙组T2Z形填充

题目描述 给定一个整数 n&#xff0c;再给定 n2 个字符&#xff0c;请将这些字符以 z 形排成一个 nn 的矩阵。 z 形的定义是&#xff0c;第一个字符在左上角&#xff0c;然后沿对角线以 z 形放置字符。对于 n4 &#xff0c;z 形排列的先后顺序标记如下&#xff1a; 输入格式 …

基于Spring Boot的网页即时聊天系统

目录 一、系统总体功能设计 二、开发工具及环境 三、前台系统主要功能实现界面展示 1.登入模块 2.主页模块 3.好友设置模块 4.好友动态模块 5.个人中心模块 6.好友设置详情 7.视频通话 8.语音通话 9.对消息操作 四、后台系统主要功能实现界面展示 1.登入模块 2.后…

Git 分支命令操作详解

目录 1、分支的特点 2、分支常用操作 3、分支的使用 3.1、查看分支 3.2、创建分支 3.3、修改分支 3.4、切换分支 3.5、合并分支 3.6、产生冲突 3.7、解决冲突 3.8、创建分支和切换分支说明 1、分支的特点 同时并行推进多个功能开发&#xff0c;提高开发效率。各个分…

show profile

功能 当你执行一个复杂的 SQL 查询时&#xff0c;这个命令可以帮助你了解查询的各个部分花费了多少时间&#xff0c;从而找到可能的性能瓶颈。默认情况下&#xff0c;参数处于关闭状态&#xff0c;并保存最近15次的运行结果 开启 查看是否支持 SHOW VARIABLES LIKE profili…

如何给文件和文件夹添加备注信息

1. 给文件添加备注信息 1. 打开文件夹&#xff0c;点击查看 → 选项 → 更改文件夹和搜索选项 → 勾除隐藏受保护的操作系统文件 → 勾选显示隐藏的文件、文件夹和驱动器&#xff1b; 2. listary工具搜索desktop.ini&#xff0c;随便点击一个desktop.ini文件&#xff0c;即可…

Java String转JSONObject时保持字段顺序不变

Java String转JSONObject时保持字段顺序不变 问题背景解决方案 问题背景 在业务接口开发过程中&#xff0c;有一个新增接口&#xff0c;需要支持批量新增数据&#xff0c;这时入参就需要用到 json 格式数据&#xff0c;且包含 list 集合&#xff0c;比如这样的数据格式&#x…

ZeptoMail邮箱API发送邮件的参数如何配置?

ZeptoMail邮箱API发送邮件的步骤&#xff1f;怎么使用API接口&#xff1f; 在使用ZeptoMail邮箱API发送邮件时&#xff0c;正确的参数配置是确保邮件能够成功发送的关键。下面&#xff0c;AokSend将详细介绍如何配置ZeptoMail邮箱API发送邮件的参数。 ZeptoMail邮箱API发送邮…

Web界面加持!数据库备份神器,助你轻松备份数据!

使用这款带有Web界面的数据库备份神器&#xff0c;你可以轻松设置定时备份&#xff0c;确保数据安全无忧。备份结果即时通知&#xff0c;让你随时掌握备份状态。备份完成后&#xff0c;你将收到备份结果通知。无论是成功备份还是出现错误&#xff0c;你都能及时了解备份情况&am…