1)跨数据中心
一个联邦设置可能由多个数据中心中的 Prometheus 服务器和一套全局 Prometheus 服务器组成。每个数据中心中部署的 Prometheus 服务器负责收集本区域内细粒度的数据(实例级别),全局 Prometheus 服务器从这些下层 Prometheus 服务器中收集和汇聚数据(任务级别),并存储聚合后的数据。这样就提供了一个聚合的全局视角和详细的本地视角。
2)跨服务
同一服务器里不同的服务监控指标用不同的prometheus联邦节点收集监控数据。
例如,一个运行多种服务的集群调度器可以暴露在集群上运行的服务实例的资源使用信息(例如内存和 CPU 使用率)。另一方面,运行在集群上的服务只需要暴露指定应用程序级别的服务指标。通常,这两种指标集分别被不同的 Prometheus 服务器抓取。利用联邦,监控服务级别指标的 Prometheus 服务器也可以从集群中 Prometheus 服务器拉取其特定服务的集群资源使用率指标,以便可以在该 Prometheus 服务器中使用这两组指标集。
1) 整体配置文件
- # 全局配置global:
- # 默认抓取周期,可用单位ms、smhdwy #设置每15s采集数据一次,默认1分钟
- [ scrape_interval: <duration> | default = 1m ]
- # 默认抓取超时
- [ scrape_timeout: <duration> | default = 10s ]
- # 估算规则的默认周期 # 每15秒计算一次规则。默认1分钟
- [ evaluation_interval: <duration> | default = 1m ]
- # 和外部系统(例如AlertManager)通信时为时间序列或者警情(Alert)强制添加的标签列表
- external_labels:
- [ <labelname>: <labelvalue> ... ]
-
- # 规则文件列表
- rule_files:
- [ - <filepath_glob> ... ]
-
- # 抓取配置列表
- scrape_configs:
- [ - <scrape_config> ... ]
-
- # Alertmanager相关配置
- alerting:
- alert_relabel_configs:
- [ - <relabel_config> ... ]
- alertmanagers:
- [ - <alertmanager_config> ... ]
-
- # 远程读写特性相关的配置
- remote_write:
- [ - <remote_write> ... ]
- remote_read:
- [ - <remote_read> ... ]
2)scrape_configs
一个scrape_config 片段指定一组目标和参数, 目标就是实例,指定采集的端点, 参数描述如何采集这些实例, 主要参数如下:
- scrape_interval: 抓取间隔,默认继承global值。
- scrape_timeout: 抓取超时时间,默认继承global值。
- metric_path: 抓取路径, 默认是/metrics
- scheme: 指定采集使用的协议,http或者https,默认为http
- params: 指定url参数。
- basic_auth: 指定认证信息。
- *_sd_configs: 指定服务发现配置
- static_configs: 静态指定服务job。
- relabel_config: relabel设置。
1)prometheus 主server和prometheus联邦节点分别部署prometheus
在三个prometheus节点同时执行以下操作:
- [root@prometheus-1 prometheus-2.36.2.linux-amd64]# pwd
- /opt/prometheus/prometheus-2.36.2.linux-amd64
-
- #创建prometheus连接
- ln -sv /opt/prometheus/prometheus-2.36.2.linux-amd64 /opt/prometheus/prometheus
-
- #添加prometheus启动脚本
- vi /etc/systemd/system/prometheus.service
-
- [Unit]
- Description=Prometheus Server
- Documentation=https://prometheus.io/docs/introduction/overview/
- After=network.target
- [Service]
- Restart=on-failure
- WorkingDirectory=/opt/prometheus/prometheus/
- ExecStart=/opt/prometheus/prometheus/prometheus --config.file=/opt/prometheus/prometheus/prometheus.yml
- [Install]
- WantedBy=multi-user.target
-
- #启动prometheus
- systemctl restart prometheus
-
- #添加开机启动
- systemctl enable prometheus
2) 配置联邦节点到node节点抓取数据
联邦集群1收集node1的数据:
编辑prometheus.yaml文件添加下面node1节点监控信息
- vi prometheus.yml
-
-
- - job_name: "prometheus-node1"
- static_configs:
- - targets: ["10.19.14.9:9100"]
联邦集群2收集node2的数据:
#编辑prometheus.yaml文件添加下面node2节点监控信息
- vi prometheus.yml
-
-
- - job_name: "prometheus-node2"
- static_configs:
- - targets: ["10.19.14.21:9100"]
prometheus server 收集联邦节点:
- # 添加以下配置,增加联邦集群节点 到prometheus server节点。
-
- - job_name: 'prometheus-federate-2.61'
- scrape_interval: 10s
- honor_labels: true #保持原标签不变
- metrics_path: '/federate'
- params:
- 'match[]':
- - '{job="prometheus"}'
- - '{__name__=~"job:.*"}'
- - '{__name__=~"node.*"}'
- static_configs:
- - targets: ["10.19.2.61:9090"]
-
- - job_name: 'prometheus-federate-2.62'
- scrape_interval: 10s
- honor_labels: true
- metrics_path: '/federate'
- params:
- 'match[]':
- - '{job="prometheus"}'
- - '{__name__=~"job:.*"}'
- - '{__name__=~"node.*"}'
- static_configs:
- - targets: ["10.19.2.62:9090"]
-
-
-
-
- #检查配置文件语法
- ./promtool check config ./prometheus.yml
-
- #重启prometheus
- systemctl restart prometheus