扫码关注我们
性能监控

小知识:

 

Prometheus是为短期监视和警报需求而设计的。默认情况下,它在本地数据库中仅保存15天的时间序列数据。

 

如果希望保留更长时间的数据,建议将所需的数据发送到远程的第三平台(如InfluxDB),Prometheus具有向外部数据存储写入的能力。

Prometheus的组成及架构

 

 

 

Prometheus架构图

 

从这个架构图,可以看出Prometheus的主要模块包含:Prometheus ServerExportersPushgatewayPromQLAlertmanagerWeb UI等。下述为各个组件功能的简单介绍:

 

Prometheus Server定期从静态配置的 targets 或者服务发现(主要是DNSconsulk8smesos等)的targets拉取数据。

 

Exporters负责向Prometheus Server做数据汇报。不同的数据汇报由不同的Exporters实现,比如监控主机有node-exportersMySQLMySQL server exporterNginxnginx-vts-exporter

 

Pushgatewaypull(被动)模式要求被监控对象能够提供Exporter服务给Prometheus。该模式为官方推荐,但对于某些情况下,比如我们将Prometheus搭建在外网去监控内网应用的情况下,由于内网有诸多安全限制使得无法穿透,这时就要借助push(主动)模式来解决问题。

 

push模式需要APP主动推送数据到PushgatewayPrometheus监控Pushgateway来获取数据。

 

Alertmanager实现Prometheus的告警功能。

 

WebUI主要通过Grafana来实现Web UI展示。

Prometheus的数据模型

Prometheus将所有数据存储为时间序列:具有相同度量名称以及标签属于同一个指标。

每个时间序列都由Metric(度量)标准名称和一组键值对(也称为标签)唯一标识,格式为:{=,...}

时间序列数据

 

小知识:

 

Metric(度量)是对软件或者硬件组件属性的度量。为了使度量有用,我们跟踪它的状态,通常随时间记录数据点,这些数据点称为观测值。

 

观测值由值、时间戳以及有描述观察的一系列属性(如源或标记)组成。观测值的集合称为时间序列。

Prometheus的指标类型

Counter(计数器):递增的计数器,代表一种样本数据单调递增的指标,即只增不减,除非监控系统发生了重置。例如,你可以使用Counter类型的指标来表示服务的请求数、已完成的任务数、错误发生的次数等。

 

 

计数器示例

 

Gauge(仪表盘):可以任意变化的数值,通常用于像温度或者内存使用率这种指标数据,也可以表示能随时增加或减少的“总数”,例如:当前并发请求的数量。

 

仪表盘示例

 

Histogram(直方图):直方图是对数据分布情况的图形表示,由一系列高度不等的长条图(bar)或线段表示。其对一段时间范围内的数据进行采样,并对所有数值求和、统计数据量,用于展示单个测度得知的分布。

 

直方图示例

 

Summary(摘要):与Histogram类似,用于表示一段时间内的数据采样结果(通常是请求持续时间或响应时间大小等),但它直接存储了分位数(通过客户端计算,然后展示出来),而不是通过区间来计算。

 

小结

服务资源监控包含中间件监控、压测数据监控、DB监控、日志监控、安全监控、API监控、业务控、客户监控、链路监控、服务资源监控等,文章所讲的只是服务资源监控的一小部分。

 

只有不断完善监控体系,才能精准地找出系统性能存在的瓶颈与风险,用更少的资源提供更好的服务。

 

划重点

1. 监控是度量和管理技术系统的工具和过程,且可实现从系统和应用程序生成的指标到业务价值的转换;

 

2. 监控神器Prometheus是一套开源的监控&报警&时间序列数据库的组合,其基本原理是通过HTTP协议周期性抓取被监控组件的状态;

 

3. Prometheus的主要模块包含:Prometheus ServerExportersPushgatewayPromQLAlertmanagerWeb UI等;

 

4. Prometheus将所有数据存储为时间序列:具有相同度量名称以及标签属于同一个指标。

————————————————

转载原文链接:https://blog.csdn.net/IT_LanTian/article/details/129049311