zoukankan      html  css  js  c++  java
  • Prometheus监控学习笔记之prometheus的federation机制

    0x00 概述

    有时候对于一个公司,k8s集群或是所谓的caas只是整个技术体系的一部分,往往这个时候监控系统不仅仅要k8s集群以及k8s中部署的应用,而且要监控传统部署的项目。也就是说整个监控系统不是部署在k8s cluster中。非in-cluster的prometheus怎么监控k8s是今天需要讨论的问题。
    在上一篇文章解读了prometheus提供的监控k8s的配置文件,我们知道主要是采集node,cadvisor,service,endpoint,ingress和pod 6个方面。集群外部署,我们通过更改配置文件,

    kubernetes_sd_configs:
      - role: node
        api_server: https://10.xx.xx.231:6443
        bearer_token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt14dmTJfPP5XNYiwPBW-ffe84w1zA0PaIUISUXGWUr5Ak9dFkJz4-ho0pPRKuPj-KZ8C4APt4NVKFXnO3WisR63ShCYqYYrOAjerCZIfrokMdvhPG1S6Dw_swWtYTSbBVXMeyHrC9OqvXz3jdi4vnKYJgA
        tls_config:
          insecure_skip_verify: true

    也能利用prometheus的service discovery功能监控一些指标,比如node,cadvisor,但是其他的无法全部获取metrics了,因为自动发现了一些k8s中service网络层的地址,这个是从外部无法访问的。我们的解决方案是prometheus的federation模式来解决该问题。

    0x01 Prometheus的Federation简介

    联邦允许一个prometheus server 从另外一个prometheus server 获取metrics。
    官方给出的配置:

    - job_name: 'federate'
      scrape_interval: 15s
    
      honor_labels: true
      metrics_path: '/federate'
    
      params:
        'match[]':
          - '{job="prometheus"}'
          - '{__name__=~"job:.*"}'
    
      static_configs:
        - targets:
          - 'source-prometheus-1:9090'
          - 'source-prometheus-2:9090'
          - 'source-prometheus-3:9090'

    联邦机制也实现了promethues的扩展。大致上纵向和横向两种思路。

    由此出发,就能形成一种树状的prometheus集群,实现了高可用和分片。我们的集群外prometheus监控k8s的方案就基于此。

    0x02 通过Federation监控k8s

    采取上一篇文章的配置文件,在k8s集群中部署一个prometheus server,集群外的prometheus server 定期获取集群中prometheus的数据。
    然后通过设置match即可

    'match[]':
          - '{job="prometheus"}'
          - '{__name__=~"job:.*"}'

    官方的federation的解释

    0x03 总结

    此外联邦模式可以实现prometheus监控prometheus。遵循以下两点:

    • 网格模式。在同一个数据中心,每个prometheus监控其他的prometheus。
    • 上下级模式。上一级的prometheus监控数据中心级别的prometheus。

    参考

  • 相关阅读:
    C#读取Excel日期时间
    软件需求3个层次――业务需求、用户需求和功能需求
    软件开发中的基线
    软件开发过程(CMMI/RUP/XP/MSF)是与非
    第1章项目初始.pdf
    计算机鼓轮
    概念模型,逻辑模型,物理模型
    第0章项目管理概述.pdf
    C#中提供的精准测试程序运行时间的类Stopwatch
    Installing and configuring OpenSSH with pam_ldap for RedHat Enterprise Linux3
  • 原文地址:https://www.cnblogs.com/JetpropelledSnake/p/10432700.html
Copyright © 2011-2022 走看看