小知识:
Prometheus是为短期监视和警报需求而设计的。默认情况下,它在本地数据库中仅保存15天的时间序列数据。
如果希望保留更长时间的数据,建议将所需的数据发送到远程的第三平台(如InfluxDB),Prometheus具有向外部数据存储写入的能力。
Prometheus的组成及架构
Prometheus架构图
从这个架构图,可以看出Prometheus的主要模块包含:Prometheus Server、Exporters、Pushgateway、PromQL、Alertmanager、Web UI等。下述为各个组件功能的简单介绍:
Prometheus Server:定期从静态配置的 targets 或者服务发现(主要是DNS、consul、k8s、mesos等)的targets拉取数据。
Exporters:负责向Prometheus Server做数据汇报。不同的数据汇报由不同的Exporters实现,比如监控主机有node-exporters,MySQL有MySQL server exporter,Nginx有nginx-vts-exporter。
Pushgateway:pull(被动)模式要求被监控对象能够提供Exporter服务给Prometheus。该模式为官方推荐,但对于某些情况下,比如我们将Prometheus搭建在外网去监控内网应用的情况下,由于内网有诸多安全限制使得无法穿透,这时就要借助push(主动)模式来解决问题。
push模式需要APP主动推送数据到Pushgateway,Prometheus监控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 Server、Exporters、 Pushgateway、PromQL、Alertmanager、Web UI等;
4. Prometheus将所有数据存储为时间序列:具有相同度量名称以及标签属于同一个指标。
————————————————
转载原文链接:https://blog.csdn.net/IT_LanTian/article/details/129049311




