1. 当云环境时,对于Prometheus这一类基于Pull模式的监控系统,无法继续使用的static_configs的方式静态的定义监控目标。而对于Prometheus而言其解决方案就是引入一个中间的代理人(服务注册中心),这个代理人掌握着当前所有监控目标的访问信息,Prometheus只需要向这个代理人询问有哪些监控目标即可, 这种模式被称为服务发现。
      • image.png
    2. 在不同的场景下,会有不同的东西扮演代理人(服务发现与注册中心)这一角色。
    • 比如在AWS公有云平台或者OpenStack的私有云平台中,由于这些平台自身掌握着所有资源的信息,此时这些云平台自身就扮演了代理人的角色。Prometheus通过使用平台提供的API就可以找到所有需要监控的云主机。
    • 在Kubernetes这类容器管理平台中,Kubernetes掌握并管理着所有的容器以及服务信息,那此时Prometheus只需要与Kubernetes打交道就可以找到所有需要监控的容器以及服务对象。
    • 在微服务架构的应用程序中,经常会使用到例如Consul这样的服务发现注册软件,
    • Promethues也可以与其集成从而动态的发现需要监控的应用服务实例。
    • Prometheus还支持基于DNS以及文件的方式动态发现监控目标,从而大大的减少了在云原生,微服务以及云模式下监控实施难度。
    1. 相较于Push模式,Pull模式的优点可以简单总结为以下几点:
    • 只要Exporter在运行,你可以在任何地方(比如在本地),搭建你的监控系统;
    • 你可以更容易的查看监控目标实例的健康状态,并且可以快速定位故障;
    • 更利于构建DevOps文化的团队;
    • 松耦合的架构模式更适合于云原生的部署环境。