互助智能采集器哪家好(从架构图里能看到两个Pull的原因,一个是采集器直接被Server拉取)

优采云 发布时间: 2021-10-27 19:08

  互助智能采集器哪家好(从架构图里能看到两个Pull的原因,一个是采集器直接被Server拉取)

  普罗米修斯(Prometheus)是一个开源的监控系统。当时由于生产的服务太多,传统的监控无法满足监控需求,所以在2012年他们决定开发一个新的监控系统,即Prometheus。

  Prometheus(以下简称Pro)的作者Matt T.Proud于2012年加入。他从谷歌的监控系统Borgmon中获得灵感,与另一位工程师Julius Volz合作开发了开源Proud。后来其他开发商继续。加入该项目,终于在2015年正式发布。

  PRO基于Go语言开发,其架构图如下:

  

  在:

  1.如何采集监控数据?

  要监控采集 目标(主机或服务)的数据,首先在采集 目标上安装采集 组件。这个 采集 组件称为导出器。prometheus.io官网上有很多这样的exporter,比如:

  领事出口商(官方)

  Memcached 导出器(官方)

  MySQL 服务器导出器(官方)

  节点/系统指标导出器(官方)

  HAProxy 出口商(官方)

  RabbitMQ 导出器

  出口商

  InfluxDB 导出器(官方)

  这些出口商可以提供我们采集目标的监控数据,然后将它们传输到Prometheus。这时候exporter会暴露一个http接口,Prometheus使用Pull通过HTTP协议周期性的拉取相应的数据。

  但是,Prologue 还提供了一种用于数据传输的 Push 模式。通过添加中间人Push Gateway,可以将数据推送到Push Gateway。Prologue 然后通过 Pull 从 Push Gateway 获取数据。

  这就是为什么您可以从架构图中看到两个 Pull 指标的原因。一种是采集器直接被Server拉取(pull);另一种是采集器主动向Push Gateway推送数据,Server再主动从Push Gateway拉取数据(pull)。

  采集 主要数据流向如下:

  1. Prometheus 服务器定期从静态配置的主机或服务(zookeeper、consul、DNS SRV Lookup 等)发现的目标中提取数据

  2. 当新拉取的数据大于配置的内存缓存区时,Prometheus 会将数据持久化到磁盘或远程到云端。

  3. Prometheus 通过 PromQL、API、Console 和 Grafana 和 Promdash 等其他可视化组件来显示数据。

  4. Prometheus 可以配置规则,然后定时查询数据。当条件被触发时,它会将警报推送到配置的 Alertmanager。

  5. 当Alertmanager收到警报时,会根据配置进行聚合、去重、降噪,最后发出警告。

  2.采集数据结构和指标类型2.1 数据结构

  理解Prometheus的数据结构对于理解整个Prometheus生态非常重要。一般使用键值对作为其基本数据结构:

  

  Key 是指标的名称,Value 是指标的值。另外,Metadata(元信息)也很重要,也可以称为标签(label information)。标签信息指定了当前值属于哪个云区域的哪台机器。如果没有标签,数据可能会丢失。

  2.2 指标类型

  Prometheus的监控指标有4种基本类型:

  1.柜台:

  计数器是我们最简单的指标类型。比如你想统计某个网站的HTTP错误总数,这个时候就用一个计数器。

  计数器的值只能增加或复位为0,因此特别适合计算一定时间内某时间出现的次数,即指标随时间的变化。

  2.仪表

  仪表可用于处理随时间增加或减少的指标,例如内存变化和温度变化。

  这可能是最常见的一种指标,但它也有一定的缺点:如果系统每 5 秒发送一个指标,一般服务每 15 秒抓取一次数据,那么在此期间可能会丢失一些指标。如果根据这些数据进行汇总分析和计算,结果的准确性就会下降。

  3.直方图(Histogram)

  直方图是一种更复杂的指标。它为我们的指标提供了额外的信息,例如观察的总和和数量,并且通常用于跟踪事件的规模。

  例如,为了监控性能指标,我们希望在 20% 的服务器请求的响应时间超过 300 毫秒时发送警报。对于涉及比例的指标,请考虑使用直方图。

  4.总结(总结)

  摘要更高级,是直方图的延伸。除了提供观察的总和和计数*敏*感*词*的方法。

  比较直方图:

  1. 直方图汇总了随时间变化的数值,给出了 sum 和 count 函数,便于查看给定指标的走势。

  2. 摘要给出了滑动窗口上的分位数(即它随着时间不断变化)。

  3.示例概念

  随着分布式架构的不断发展和云解决方案的普及,当前的架构变得越来越复杂。

  分布式服务器复制和分发已成为日常架构的重要组成部分。让我们以一个经典的 Web 架构为例,它由 3 个后端 Web 服务器组成。在本例中,我们要监控 Web 服务器返回的 HTTP 错误数。

  使用 Prometheus 语言,单个 Web 服务器单元称为实例(主机实例)。任务是计算所有实例的 HTTP 错误数。

  

  事实上,这甚至可以说是最简单的架构。无论多么复杂,实例不仅可以是主机实例,还可以是服务实例,所以需要添加 instance_type 标签来标记主机或服务。

  更复杂的是,同一个IP可能存在于不同的云区域,属于不同的机器。因此,还需要一个云标签。最后,数据结构可能变成:

  cpu_usage {job="1", instance="128.0.0.1", cloud="0", instance_type="0"}

  4.数据可视化

  如果您使用过基于 InfluxDB 的数据库,您可能对 InfluxQL 很熟悉。Prometheus 还构建了自己的 SQL 查询语言,用于查询和检索数据。这种内置语言是 PromQL。

  前面我们说过,Prometheus 的数据是用键值对来表示的。PromQL 也使用相同的语法来查询和返回结果集。

  PromQL 将处理两种向量:

  实时向量:表示当前时间指标的数据向量。

  时间范围向量:表示过去某个时间范围内某个指标的数据向量。

  例如8核CPU的使用率:

  

  一旦你知道如何提取数据,可视化数据就很容易了。

  Grafana 是一个功能强大的大型可视化系统。您可以创建自己的自定义面板,支持多个数据源,当然还有 Prometheus。

  通过配置数据源,Grafana 会使用对应的 SQL 来拉取和绘制图表,可以直接看到 Prometheus 的各种指标数据图表:

  

  更方便的是,Grafana 有很多仪表盘模板供你使用。只要导入模板进行简单的配置,就可以得到以下效果:

  

  5.应用前景

  普罗米修斯非常强大,可以应用于各行各业。

  5.1 DevOps

  为了观察整个服务系统是否正常运行,需要一个监控系统进行运维。在实例创建速度与销毁速度一样快的容器世界中,灵活配置各种容器监控项,快速安装启动监控非常重要。

  5.2 金融业

  金融服务巨头 Northern Trust 于 2017 年 6 月选择 Prometheus 不是为了监控应用程序,而是为了更好地了解其某些硬件的运行情况。Northern Trust 使用 Prometheus 监控其平台上的 750 多个微服务。

  5.3 汽车行业

  Life360是一款用于定位、行车安全和家庭成员间信息共享的移动应用。他们需要为用户提供稳定的定位服务。原有的监控方案非常有限,无法监控所有组件的工作状态。.

  因此,该公司使用 Prometheus 来监控其 MySQL 多主集群和一个 12 节点的 Cassandra 环,该环可以容纳大约 4TB 的数据。Prometheus 在初步测试中表现良好。

  在 Prometheus 的有限部署之后,Life360 报告了在监控方面的巨大进步,并设想在其数据中心基础设施的其他部分使用它。

  总而言之,像 Prometheus 这样的分布式监控系统在未来的世界中可能会越来越有用。它可能会成为监控领域的寡头存在。我希望我们能熟悉这个工具和它未来的架构。并在实践中使用它来解决系统和应用程序监控问题。

  我们的文章到此结束。如果您喜欢今天的Python实战教程,请继续关注Python实战指南。

  有问题可以在公众号后台回复:加群,回答对应的红字验证信息,进入互助群提问。

  原创不容易,希望大家点赞支持我继续创作,谢谢!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线