Prometheus基本概述

官网:https://prometheus.io/download/#mysqld_exporter

【1】基本介绍

【1.0】Prometheus 与 其他监控产品的优劣

优点:

  (1)监控数据的精细程度非常高,可以精确到1-5秒的采集精度

  (2)软件的部署非常快,大大缩减搭建时间成本

  (3)周边插件很丰富,比如 exporter pushgateway 大多数都步需要自己开发了

  (4)基于数学计算模型(proMQL),大量的使用函数,可以实现很复杂规则的业务逻辑监控(比如QPS曲线,弯曲,凸起,下跌,比例等等模糊)

  (5)可以嵌入很多开源工具的内部,比如nignx 、数据库 等,进行监控,数据更准时更可信(其他监控比较难做到)

  (6)结合grafana 图形很高大上很美观

不足:

  (1)因为图形菜鸡经度,如果集群数据量太大,那么简单监控有性能瓶颈。

  (2)学习成本大,还有 proMQL,中文资料极少,没有人教 官网英文资料也是比较难入门

  (3)对磁盘资源消耗比较大,这个具体要看监控的集群数量 和 监控项的多少 以及保存时长的设置

  (4)本身的使用,需要使用者数学不能太差,有一定的数据逻辑

【1.1】概念及特点

简介:

  Prometheus是一个最初在SoundCloud上构建的开源系统监控和警报工具包 。自2012年成立以来,许多公司和组织都采用 Prometheus,该项目拥有非常活跃的开发人员和用户社区。

  它现在是一个独立的开源项目,并且独立于任何公司。为了强调这一点,并澄清 项目的治理结构,Prometheus 于2016年加入 云本地计算基金会,作为Kubernetes之后的第二个托管项目。

特点:

  Prometheus 属于一站式监控告警平台,依赖少,功能齐全。 Prometheus 支持对云的或容器的监控,其他系统主要对主机监控。

   Prometheus 数据查询语句表现力更强大,内置更强大的统计函数。 Prometheus 在数据存储扩展性以及持久性上没有 InfluxDB,OpenTSDB,Sensu 好。

优质特性:

(1)基于 time series 时序模型,既使用时序数据库存储模型。什么是时序序列呢?就是(x,y)轴,x为时间,y为值

(2)使用 K/V 的数据模型,格式简单,速度快,易维护开发

(3)采样数据查询:promQL,比如可以 (增量A+增量B)/ 总量C

(4)采用 HTTP pull /push 两种对应的数据采集方式传输

(5)【开源,及大量插件】

(6)【本身自带挺调试】、【秒级数据采样频率,秒级采样间隔】

(7)通过服务发现或者静态配置,来发现目标服务对象

(8)不依赖分布式存储,单个服务器节点是自主的

不足:

(1)本身不支持集群化

(2)被监控集群过大后,本身可能会产生性能瓶颈

(3)中文支持不好,中文资料也少

【1.2】prometheus 基本组件

  1. Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
  2. client libraries,用于对接 Prometheus Server, 可以查询和上报数据。
  3. push gateway ,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
  4. 各种汇报数据的 exporters ,例如汇报机器数据的 node_exporter, 汇报 MongoDB 信息的 MongoDB exporter 等等。
  5. 用于告警通知管理的 alertmanager 。

【1.3】基本原理

  Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统, 不需要任何SDK或者其他的集成过程。

  这样做非常适合虚拟化环境比如VM或者Docker 。 Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。

  输出被监控组件信息的HTTP接口被叫做exporter 。

  目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、 Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等)

【1.4】监控的基本体系流程

  

【2】认识prometheus

【2.1】基本架构与模块

      

  从这个架构图,也可以看出 Prometheus 的主要模块包含, Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。

【2.2】Promethues server 模块

prometheus 本身是一个以进程方式启动,之后以多进程和多线程实现监控数据收集、计算、查询、更新、存储的CS模型运行模式

默认为9090端口。

【3】其他

【3.2】prometheus 四种数据类型

Counter

  Counter用于累计值,例如记录请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。

例如:http_response_total{method=”GET”,endpoint=”/api/tracks”} 100,10秒后抓取http_response_total {method=”GET”,endpoint=”/api/tracks”} 100。

Gauge

Gauge常规数值,例如 温度变化、内存使用变化。可变大,可变小。重启进程后,会被重置。 例如: memory_usage_bytes{host=”master-01″} 100 < 抓取值、memory_usage_bytes{host=”master-01″} 30、 memory_usage_bytes{host=”master-01″} 50、memory_usage_bytes{host=”master-01″} 80 < 抓取值。

Histogram

  Histogram(直方图)可以理解为柱状图的意思,常用于跟踪事件发生的规模。

    例如:请求耗时、响应大小。它特别之处是可以对记录的内 容进行分组,提供count和sum全部值的功能。

    例如:{小于10=5次,小于20=1次,小于30=2次},count=7次,sum=7次的求和值。

Summary

  Summary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。

  例如:count=7次,sum=7次的值求值。 它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。

【3.3】默认端口

服务器端:

   9090端口是必须配置的,这是prometheus自带的web界面
   9100是node_exporter的默认端口
   9104是mysqld_exporter默认端口

 

原文地址:https://www.cnblogs.com/gered/p/13454482.html