外部普米集中监控多个Prometheus实例:Prometheus Agent 模式与Prometheus 联邦模式 超级详细

在这里插入图片描述

Prometheus Agent 模式-使用推送方式来监控

1.外部Prometheus配置

1.需要开放端口,在启动时,需要配置开放监听端口
--web.enable-lifecycle --config.file=/usr/local/prometheus/prometheus.yml --log.level=warn --storage.tsdb.path=/prometheus 
--web.listen-address=0.0.0.0:9090 
--storage.tsdb.retention=30d 
--web.enable-remote-write-receiver
2.添加prometheus启动参数

--enable-feature=remote-write-receiver, 用于启用 Prometheus 的远程写入接收器功能

该功能使 Prometheus 实例能够接收来自其他 Prometheus 实例或监控系统的数据,并将其写入本地时间序列数据库中。通过启用远程写入接收器,可以实现集中式监控数据收集和存储,从而简化监控数据管理和分析过程。

具体来说,启用此功能的目的包括:

  • 数据聚合和中心化 :通过远程写入接收器,多个 Prometheus实例或其他监控系统可以将监控数据发送到单个集中式存储位置。这样可以更轻松地聚合和管理监控数据,并为用户提供统一的监控数据视图。
  • 数据备份和冗余 :将监控数据发送到多个 Prometheus 实例或存储系统可以提供数据备份和冗余。如果一个实例或存储系统发生故障,仍然可以从其他实例或系统中检索数据,确保数据的可用性和持久性。
  • 跨数据中心或云环境的监控 :在分布式环境中,可能存在多个数据中心或云环境,各自运行着不同的 Prometheus实例。启用远程写入接收器可以轻松地将不同地理位置或不同云环境中的监控数据集中到单个存储位置,实现统一的跨数据中心或云环境的监控管理。
  • 实现监控数据的归档和长期存储 :集中式存储位置可以更好地支持监控数据的归档和长期存储需求。通过启用远程写入接收器,可以将监控数据发送到专门的存储系统或服务,实现对监控数据的有效管理和利用。
3.修改配置后重启prometheus即可
docker restart prometheus

2.各个节点的普米配置

1.修改prometheus.yml
vi prometheus.yml 

remote_write:
  - url: http://192.168.1.1:9090/api/v1/write
    # 标签替换配置
    write_relabel_configs:
      - source_labels: [instance]  # 要替换的源标签
        target_label: instance     # 替换后的目标标签
        replacement: "192.168.1.91"      # 替换后的值,可以使用正则表达式

192.168.1.1:9090 外部普米的地址

write_relabel_configs的作用:在 Prometheus 的配置文件中,用于远程写入(remote_write)时对标签进行替换。具体来说,它可以用于以下情况:

  • 标签重命名 :有时,当将监控数据写入到远程存储或其他 Prometheus 实例时,可能需要对标签进行重命名以符合目标系统的要求。例如,源系统使用的标签名与目标系统不一致,需要将其映射到目标系统所需的标签名上。
  • 标签值替换 :在某些情况下,需要修改标签的值。例如,源系统中的标签值包含了敏感信息或不合规定的内容,需要在写入到远程存储之前将其替换为合适的值
  • 标签值修正 :有时,需要根据特定的规则或逻辑来修正标签的值。例如,可能需要基于标签的某些特征来调整其值,以便更好地匹配目标系统的要求或进行数据清洗。 在上述配置中,source_labels 指定了要替换的源标签,target_label 指定了替换后的目标标签,replacement指定了目标标签的替换值。通过这种方式,可以灵活地定义不同的标签替换规则,以满足远程写入的需求。

测试是否成功

访问外部的普米节点:http://192.168.1.1:9090/,会有监控的指标信息,搜索查看即可

在这里插入图片描述

遇到问题
1.外部普米未开启远程写入功能
root@test:etc/prometheus# curl -X POST -d "metric_name{label1=\"value1\", label2=\"value2\"} 1234567890" http://192.168.1.1:9090/api/v1/write
remote write receiver needs to be enabled with --web.enable-remote-write-receiver

需要在prometheus启动参数 --enable-feature=remote-write-receiver

prometheus 联邦模式(联合允许 Prometheus 服务器从另一个 Prometheus 服务器抓取选定的时间序列)

官方文档:https://prometheus.io/docs/prometheus/latest/federation/

–enable-feature=native-histograms

联邦有不同的使用场景。通常,它用于实现可伸缩的Prometheus监控,或将一个服务相关指标从一个Prometheus拉取到另一个中
为了扩展单个Prometheus的采集能力和存储能力,Prometheus引入了联邦概念。多个Prometheus节点组成两级联邦结构,上面一层是联邦节点,负责定时从下面的节点获取数据并汇总,下面的Promethes可以负责不同区域/不同服务的数据采集。
Prometheus 是一个强大的监控平台,它是针对容器和微服务的开源监控预警工具,功能稳健,而且现在很多大厂都在使用一套监控系统(像网易、360等)

一、Prometheus 联邦配置说明

本次我以三台 Prometheus 实例进行简单演示:
实例1:10.xxx.xxx.91/32
实例2:10.xxx.xxx.96/32
实例3:10.xxx.xxx.94/32
说明:实例 1 为主,实例2、实例3为从,实例 1 会从实例 2 、实例3采集数据,并最终在实例 1 进行整合。

二、 配置 Prometheus

1、实例 1 配置
在 Prometheus 实例(主)配置 Prometheus 实例(从)

vim prometheus.yml

  - job_name: 'prometheus-federate-xahmat'
    honor_labels: true
    metrics_path: '/federate'
    params:
     'match[]':
      - '{job=~".*"}'
    static_configs:
    - targets: ["公网IP:9090"]

params一些配置参考

    params:
      'match[]':    #match[]用指定查询条件,即只从其他Prometheus抓取符合条件的数据
      - '{job="prometheus"}'    #job用于匹配指定名称的job,这里表示抓取prometheus job对应的指标数据
      - '{__name__=~"job:.*"}'    #__name__表示匹配指定名称的指标数据,这里表示抓取以job开头的指标数据
      - '{job=~"node.*"}'    #抓取以node开头的job的指标

配置说明:

  • job_name:自定义工作名;
  • honor_labels:保持原标签不变;
  • metrics_path:匹URL(即配置完成后可通过此URL 来验证是否采集到实例 2 上的数据);
  • params:匹配(可进行正则匹配),下面的 {job=~“.*”} 采集所有来自实例 2的指标数据,根据实际情况自定义即可;
  • static_configs:即实例 2 的地址(IP+Port)这里的 IP 为实例 2 的公网 IP,如果有多个实例,依次往下添加即可。

三、实例 2 配置

实例 2 就是正常的配置,我这里配置的是blackbox-exporter的监控信息

 - job_name: 'blackbox-91'
    scrape_interval: 5s
    metrics_path: /probe
    params:
      module: [icmp]
    static_configs:
      - targets:
          - '2.2.2.2'
        labels:
          # 节点用途,此处固定为node
          instanceType: 'blackbox'
          targetType: 'icmp'
          zone: '测试'
          sourcePlace: '10.2.2.91'
          targetPlace: '2.2.2.2'
      - targets:
          - '3.3.3.3'
        labels:
          # 节点用途,此处固定为node
          instanceType: 'blackbox'
          targetType: 'icmp'
          zone: '测试'
          sourcePlace: '10.2.2.91'
          targetPlace: '3.3.3.3'
    relabel_configs:
    - source_labels: ['__address__']
      target_label: __param_target
    - source_labels: ['__param_target']
      target_label: target
    - target_label: '__address__'
      replacement: '10.2.2.91:9115'
    - source_labels: ['__address__']
      target_label: instance
      regex: '(.*):.*'
      replacement: '${1}'

四、实例3配置

 - job_name: 'blackbox-94'
    scrape_interval: 5s
    metrics_path: /probe
    params:
      module: [icmp]
    static_configs:
      - targets:
          - '3.3.3.93'
        labels:
          # 节点用途,此处固定为node
          instanceType: 'blackbox'
          targetType: 'icmp'
          zone: '生产机房'
          sourcePlace: '10.2.2.94'
          targetPlace: '3.3.3.93'
      - targets:
          - '10.2.2.93'
        labels:
          # 节点用途,此处固定为node
          instanceType: 'blackbox'
          targetType: 'icmp'
          zone: '生产机房'
          sourcePlace: '10.2.2.94'
          targetPlace: '10.2.2.93'

    relabel_configs:
    - source_labels: ['__address__']
      target_label: __param_target
    - source_labels: ['__param_target']
      target_label: target
    - target_label: '__address__'
      replacement: '10.2.2.94:9115'
    - source_labels: ['__address__']

4.实例1最终配置

- job_name: 'federate'
    scrape_interval: 5s
    honor_labels: true
    metrics_path: '/federate'
    params:
      'match[]':
         - '{job="blackbox-91"}'
         - '{job="blackbox-94"}'
    static_configs:
      - targets: ['10.2.2.91:60909','10.2.2.94:60909']

Prometheus 联邦验证结果

1、数据验证
在实例 1(主)上验证实例 2 的数据是否已经采集:

在这里插入图片描述

遇到的问题

Prometheus 联邦模式拉取不到各个节点的数据

Prometheus 联邦模式在使用过程中一直拉取不到节点的数据,经排查发现params:匹配的问题,最终改成抓取所有的可行,然后再根据具体的job配置这个参数

 params:
     'match[]':
      - '{job=~".*"}'
如何确认job为何值?

方式1:查看 Prometheus 目标页面:
在 Prometheus 的目标页面中,你可以查看当前由 Prometheus 监控的所有作业及其相关信息。你可以通过浏览器访问 Prometheus 的目标页面,通常 URL 是 http://<prometheus_ip>:<prometheus_port>/targets
在这里插入图片描述

方式2:检查 Prometheus 配置文件:
在 Prometheus 的配置文件中,通常会列出所有配置的作业及其详细信息。你可以查看 Prometheus 的配置文件(通常是 prometheus.yml)中的作业部分,以确认哪些作业正在被配置和监控。

在这里插入图片描述

推拉分析

推【Prometheus Agent 模式】

  • 网络问题 需要在各个节点配置外部prometheus 的地址 【可由页面下发外部普米的地址】
  • 只需要外部普米开放端口,各个分支不需要【配置开放监听端口0.0.0.0】
  • 需要在各个分支配置外部普米的地址
  • 外部的prometheus启动参数需要加–enable-feature=remote-write-receiver,用于启用 Prometheus 的远程写入接收器功能

拉【联邦模式】

  • 需要考虑每个分支采集的时间间隔
  • 中心节点配置所有采集点的IP 端口 ,手动配置,当分支IP改变后,需要手动调整
  • 各个节点prometheus需要开放端口,在启动时,需要配置开放监听端口 0.0.0.0

具体使用哪种模式根据市局情况而定

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Prometheus和MySQL Exporter来监控MySQL实例Prometheus可以收集MySQL服务器暴露的指标,MySQL Exporter可以从MySQL实例中收集指标。可以使用Prometheus和MySQL Exporter来监控MySQL实例。 ### 回答2: Prometheus是一款开源的监控和警报工具,可以帮助我们收集和分析各种系统的指标数据。要监控MySQL实例,可以按照以下步骤进行设置: 1. 安装和配置Prometheus:首先,需要下载并安装Prometheus服务器。安装完成后,需要编辑配置文件prometheus.yml,指定哪些目标需要监控。 2. 配置exporter:Prometheus无法直接监控MySQL,因此需要使用exporter来从MySQL实例中收集指标数据。有许多可用的MySQL exporter,比如Prometheus MySQL exporter或Percona exporter。根据具体需求选择一个合适的exporter,并按照其官方文档进行安装和设置。 3. 收集MySQL指标:启动exporter后,Prometheus服务器将会从exporter获取MySQL实例的指标数据。根据exporter的配置,指标数据将以指定的格式和路径提供给Prometheus。 4. 配置告警规则:在prometheus.yml中可以设置告警规则,用于检测MySQL实例是否出现异常或达到预定的阈值。通过设置合理的告警规则,可以及时发现和解决MySQL问题。 5. 可视化监控数据:Prometheus提供了一个基本的图形界面,可以使用Grafana等工具进行更丰富和灵活的数据可视化和仪表盘设置。这样可以更直观地查看MySQL实例监控数据,并更好地进行性能分析和优化。 通过以上步骤,就可以成功地使用Prometheus监控MySQL实例。需要注意的是,根据具体环境和需求,有些步骤可能会有些差异。 ### 回答3: Prometheus是一款开源的监控和警报系统,可以用来监控和收集各种类型的数据。要监控MySQL实例,需要进行以下步骤: 1. 安装Prometheus:首先,你需要在服务器上安装Prometheus。你可以从Prometheus的官方网站上下载适合你操作系统的版本,并按照对应的安装指南进行安装。 2. 配置Prometheus:在安装完成后,你需要配置Prometheus监控MySQL实例。进入Prometheus的配置文件(一般为`prometheus.yml`),添加以下配置: ```yaml scrape_configs: - job_name: 'mysql' static_configs: - targets: ['mysql_host:exporter_port'] ``` 其中,`mysql_host`是MySQL实例的主机地址,`exporter_port`是Prometheus exporter的端口号。这些信息可以根据你的实际环境进行配置。 3. 安装MySQL Exporter:MySQL Exporter是用于从MySQL实例中提取监控指标的工具。你需要根据你的操作系统下载适合的MySQL Exporter,并进行安装。安装完成后,启动MySQL Exporter。 4. 验证监控:在浏览器中输入Prometheus的地址和端口号(默认为`http://localhost:9090`),打开Prometheus的Web界面。在查询框中输入`mysql_up`,点击执行,如果能看到结果为`1`,则表示MySQL实例已被成功监控。 5. 配置警报规则(可选):如果你希望在MySQL出现问题时得到通知,可以配置警报规则。在Prometheus的配置文件中,添加类似以下的警报规则: ```yaml groups: - name: mysql_alert_rules rules: - alert: HighCPUUsage expr: 100 * (mysql_global_status_user_time / mysql_global_status_total_time) > 80 for: 5m labels: severity: warning annotations: summary: High CPU Usage on MySQL description: CPU usage on MySQL is consistently above 80% for the last 5 minutes. ``` 这个例子中,当MySQL的CPU使用率超过80%持续5分钟时,将触发警报。 通过以上步骤,你就可以使用Prometheus监控MySQL实例了。你可以在Prometheus的Web界面中查看监控指标,并设置警报规则来及时得到通知。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值