Loading... # Prometheus联邦模式分布式监控 * 资源列表 * 一、联邦模式概述 * 1.1、架构设计 * 1.2、架构设计 * 二、prometheus子节点配置 * 2.1、子节点102配置 * 2.2、子节点103配置 * 三、prometheus主节点配置 * 四、grafana出图 * 4.1、添加数据源 * 4.2、导入仪表盘模板 * 4.3、验证监控效果 ## 资源列表 | 操作系统 | 配置 | 主机名 | IP | 角色 | | ---------- | ---- | ----------------- | -------------- | ------------ | | CentOS 7.9 | 2C4G | prometheus-master | 192.168.93.101 | 主节点 | | CentOS 7.9 | 2C4G | prometheus-slave1 | 192.168.93.102 | 从节点1 | | CentOS 7.9 | 2C4G | prometheus-slave2 | 192.168.93.103 | 从节点2 | | CentOS 7.9 | 2C4G | grafana | 192.168.93.104 | 监控展示大屏 | | CentOS 7.9 | 2C4G | client1 | 192.168.93.105 | 被监控节点1 | | CentOS 7.9 | 2C4G | client2 | 192.168.93.106 | 被监控节点2 | * 基础环境 ``` systemctl stop firewalld systemctl disable firewalld ``` * 关闭内核安全机制 ``` setenforce 0 sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config ``` * 修改主机名 ``` hostnamectl set-hostname prometheus-master hostnamectl set-hostname prometheus-slave1 hostnamectl set-hostname prometheus-slave2 hostnamectl set-hostname grafana hostnamectl set-hostname client1 hostnamectl set-hostname client2 ``` ## 一、联邦模式概述 * 本文详细介绍了如何在大型企业中使用Prometheus的联邦模式进行分布式监控,包括配置子节点监控目标、主节点的联邦聚合设置以及Grafana的数据源导入。通过实例展示了如何配置Prometheus节点以监控多个节点并整合数据到主节点上展示。 ### 1.1、架构设计 * 由于,在大型企业中,被监控项目比较多,多到一台prometheus服务无法承载大量的监控数据的传输,所以,联邦模式应运而生,它同等于zabbix的分布式监控,就是将大量的被监控,分开进行监控,然后再汇总到一台prometheus的服务器上。  ### 1.2、架构设计  ## 二、prometheus子节点配置 ### 2.1、子节点102配置 ``` [root@prometheus-slave1 ~]# vim /usr/local/prometheus/prometheus.yml # my global config global: scrape_interval: 3s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - "first_rules.yml" # - "second_rules.yml" scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] #直接监控105节点 - job_name: "node-exporter-01" static_configs: - targets: ["192.168.93.105:9100"] ``` ``` [root@prometheus-slave1 ~]# curl -X POST http://192.168.93.102:9090/-/reload ``` * 查看浏览器验证  ### 2.2、子节点103配置 ``` [root@prometheus-slave2 ~]# vim /usr/local/prometheus/prometheus.yml global: scrape_interval: 3s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - "first_rules.yml" # - "second_rules.yml" scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] #直接监控106节点 - job_name: "node-exporter-02" static_configs: - targets: ["192.168.93.106:9100"] ``` ``` [root@prometheus-slave2 ~]# curl -X POST http://192.168.93.103:9090/-/reload ``` * 查看浏览器验证  ## 三、prometheus主节点配置 * 注意:prometheus主节点,取的数据是:prometheus子节点的数据; ``` [root@prometheus-master ~]# vim /usr/local/prometheus/prometheus.yml global: scrape_interval: 3s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - "first_rules.yml" # - "second_rules.yml" scrape_configs: - job_name: "prometheus-102" metrics_path: "/federate" #用于解决标签冲突问题,有效值为true和false(false) #设置为true,保留抓取的标签以忽略服务器自身的标签,就是覆盖原来的标签; #设置为false,不覆盖原来的标签,而是在标签前加了一个“exporter_”前缀; honor_labels: true params: "match[]": - '{job="prometheus"}' - '{__name__=~"job:.*"}' - '{__name__=~"node.*"}' static_configs: - targets: ["192.168.93.102:9090"] #子节点103 - job_name: "prometheus-103" metrics_path: "/federate" honor_labels: true params: "match[]": - '{job="prometheus"}' - '{__name__=~"job:.*"}' - '{__name__=~"node.*"}' static_configs: - targets: ["192.168.93.103:9090"] ``` ``` [root@prometheus-master ~]# curl -X POST http://192.168.93.101:9090/-/reload ``` * 浏览器查看,是否监控到了子节点的数据  ## 四、grafana出图 ### 4.1、添加数据源  ### 4.2、导入仪表盘模板  ### 4.3、验证监控效果 * 105  * 106  最后修改:2025 年 04 月 24 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏