• Prometheus监控实战之prometheus联邦集群


    1 联邦集群

    2 什么场景使用联邦集群 

    1)跨数据中心
    一个联邦设置可能由多个数据中心中的 Prometheus 服务器和一套全局 Prometheus 服务器组成。每个数据中心中部署的 Prometheus 服务器负责收集本区域内细粒度的数据(实例级别),全局 Prometheus 服务器从这些下层 Prometheus 服务器中收集和汇聚数据(任务级别),并存储聚合后的数据。这样就提供了一个聚合的全局视角和详细的本地视角。  

    2)跨服务
    同一服务器里不同的服务监控指标用不同的prometheus联邦节点收集监控数据。

    例如,一个运行多种服务的集群调度器可以暴露在集群上运行的服务实例的资源使用信息(例如内存和 CPU 使用率)。另一方面,运行在集群上的服务只需要暴露指定应用程序级别的服务指标。通常,这两种指标集分别被不同的 Prometheus 服务器抓取。利用联邦,监控服务级别指标的 Prometheus 服务器也可以从集群中 Prometheus 服务器拉取其特定服务的集群资源使用率指标,以便可以在该 Prometheus 服务器中使用这两组指标集。

    3 prometheus配置文件解析

    1) 整体配置文件

    1. # 全局配置global:
    2.   # 默认抓取周期,可用单位ms、smhdwy #设置每15s采集数据一次,默认1分钟
    3.   [ scrape_interval: <duration> | default = 1m ]
    4.   # 默认抓取超时
    5.   [ scrape_timeout: <duration> | default = 10s ]
    6.   # 估算规则的默认周期 # 每15秒计算一次规则。默认1分钟
    7.   [ evaluation_interval: <duration> | default = 1m ]
    8.   # 和外部系统(例如AlertManager)通信时为时间序列或者警情(Alert)强制添加的标签列表
    9.   external_labels:
    10.     [ <labelname>: <labelvalue> ... ]
    11.  
    12. # 规则文件列表
    13. rule_files:
    14.   [ - <filepath_glob> ... ]
    15.  
    16. # 抓取配置列表
    17. scrape_configs:
    18.   [ - <scrape_config> ... ]
    19.  
    20. # Alertmanager相关配置
    21. alerting:
    22.   alert_relabel_configs:
    23.     [ - <relabel_config> ... ]
    24.   alertmanagers:
    25.     [ - <alertmanager_config> ... ]
    26.  
    27. # 远程读写特性相关的配置
    28. remote_write:
    29.   [ - <remote_write> ... ]
    30. remote_read:
    31.   [ - <remote_read> ... ]

    2)scrape_configs
    一个scrape_config 片段指定一组目标和参数, 目标就是实例,指定采集的端点, 参数描述如何采集这些实例, 主要参数如下:

    1. scrape_interval: 抓取间隔,默认继承global值。
    2. scrape_timeout: 抓取超时时间,默认继承global值。
    3. metric_path: 抓取路径, 默认是/metrics
    4. scheme: 指定采集使用的协议,http或者https,默认为http
    5. params: 指定url参数。
    6. basic_auth: 指定认证信息。
    7. *_sd_configs: 指定服务发现配置
    8. static_configs: 静态指定服务job。
    9. relabel_config: relabel设置。

    4 prometheus部署联邦集群

    1)prometheus 主server和prometheus联邦节点分别部署prometheus

    在三个prometheus节点同时执行以下操作:

    1. [root@prometheus-1 prometheus-2.36.2.linux-amd64]# pwd
    2. /opt/prometheus/prometheus-2.36.2.linux-amd64
    3.  
    4. #创建prometheus连接
    5. ln -sv /opt/prometheus/prometheus-2.36.2.linux-amd64 /opt/prometheus/prometheus
    6.  
    7. #添加prometheus启动脚本
    8. vi /etc/systemd/system/prometheus.service
    9.  
    10. [Unit]
    11. Description=Prometheus Server
    12. Documentation=https://prometheus.io/docs/introduction/overview/
    13. After=network.target
    14. [Service]
    15. Restart=on-failure
    16. WorkingDirectory=/opt/prometheus/prometheus/
    17. ExecStart=/opt/prometheus/prometheus/prometheus --config.file=/opt/prometheus/prometheus/prometheus.yml
    18. [Install]
    19. WantedBy=multi-user.target
    20.  
    21. #启动prometheus
    22. systemctl restart prometheus
    23.  
    24. #添加开机启动
    25. systemctl enable prometheus

    2) 配置联邦节点到node节点抓取数据

    联邦集群1收集node1的数据:

    编辑prometheus.yaml文件添加下面node1节点监控信息

    1. vi prometheus.yml
    2.  
    3.  
    4. - job_name: "prometheus-node1"
    5.     static_configs:
    6.       - targets: ["10.19.14.9:9100"]


    联邦集群2收集node2的数据:

    #编辑prometheus.yaml文件添加下面node2节点监控信息

    1. vi prometheus.yml
    2.  
    3.  
    4. - job_name: "prometheus-node2"
    5.     static_configs:
    6.       - targets: ["10.19.14.21:9100"]

    prometheus server 收集联邦节点:

    1. # 添加以下配置,增加联邦集群节点  到prometheus server节点。
    2.  
    3.    - job_name: 'prometheus-federate-2.61'
    4.      scrape_interval: 10s
    5.      honor_labels: true   #保持原标签不变
    6.      metrics_path: '/federate'
    7.      params:
    8.       'match[]':
    9.        - '{job="prometheus"}'
    10.        - '{__name__=~"job:.*"}'
    11.        - '{__name__=~"node.*"}'
    12.      static_configs:
    13.      - targets: ["10.19.2.61:9090"]
    14.  
    15.    - job_name: 'prometheus-federate-2.62'
    16.      scrape_interval: 10s
    17.      honor_labels: true
    18.      metrics_path: '/federate'
    19.      params:
    20.       'match[]':
    21.        - '{job="prometheus"}'
    22.        - '{__name__=~"job:.*"}'
    23.        - '{__name__=~"node.*"}'
    24.      static_configs:
    25.      - targets: ["10.19.2.62:9090"]
    26.  
    27.  
    28.  
    29.  
    30. #检查配置文件语法
    31. ./promtool check config ./prometheus.yml
    32.  
    33. #重启prometheus
    34. systemctl restart prometheus
  • 相关阅读:
    java计算机毕业设计高校网上教材征订系统源程序+mysql+系统+lw文档+远程调试
    使用 Mypy 检查 30 万行 Python 代码,总结出 3 大痛点与 6 个技巧!
    前端笔记(11) Vue3 Router 编程式导航 router.push router.replace
    CoreDX DDS应用开发指南(5)开发发布应用程序
    (看这篇就够了)idea操作git commit后,撤销commit,恢复到提交前的状态
    数组实现单链表 Java详细讲解
    高等数值计算方法学习笔记第5章【解线性方程组的直接方法】
    移动Web:IIS部署 及 flexble.js 兼容
    Pytorch框架学习记录4——数据集的使用(torchvision.dataset)
    Java-day15(Java常用类)
  • 原文地址:https://blog.csdn.net/ygq13572549874/article/details/136617075