# prometheus **Repository Path**: zhanglibin/prometheus ## Basic Information - **Project Name**: prometheus - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-13 - **Last Updated**: 2021-01-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # prometheus #### 1. 介绍 Prometheus: (简称Prom)是由SoundCloud开发的开源监控报警系统。是大名鼎鼎的CNCF云原生基金会下的第二大开源项目。具有如下特点: 1. 使用Go语言开发 2. 内置时序数据库 3. 性能足够支撑上万台规模的集群 4. 多维度数据模型,灵活的查询语言 5. 通过HTTP的pull方式采集时序数据 6. 可以通过中间网关进行时序列数据推送 7. 服务发现或者静态配置来发现被监控对象 8. 支持多种多样的图表和界面展示,比如Grafana等 #### 2. 架构图 ![Image](https://prometheus.io/assets/architecture.png) #### 工作流程 1. Prometheus Server通过http协议周期性的pull被监控对象的metrics,然后保存在本地的TSDB(时序数据库)中。 2. Prometheus Server判断监控数据是否触发告警,如果触发,将告警发送给Alertmanager。 3. Alertmanager处理告警,并通过邮件等方式进行通知。 4. Prometheus监控数据也可以通过Grafana等可视化工具进行展示。 #### 3. Prometheus环境搭建 1. Prometheus Server 2. 被监控对象exporter 3. 数据上报网关pushgateway(未实践) 4. Alertmanager告警(未实践) #### 4.启动命令prometheus server 和 grafana docker-compose up #### 5. 自定义golang exporter 1. go run main.go 2. go run main2.go 3. go run main3.go #### 6.Prometheus 四大度量指标和应用 ##### 6.1 Counter (计数器) 1. 描述 Counter 类型代表一个累积的指标数据,其单调递增,只增不减。在应用场景中,像是请求次数、错误数量等等,就非常适合用 Counter 来做指标类型,另外 Counter 类型,只有在被采集端重新启动时才会归零 2. 常用方法 Inc 将计数器递增1 Add (float64) 将给定添加计数器中,小于0报错 ##### 6.2 Gauge (仪表盘) 1. 描述 Gauge 类型代表一个可以任意变化的指标数据,其可增可减。在应用场景中,像是 Go 应用程序运行时的 Goroutine 的数量就可以用该类型来表示,在系统中统计 CPU、Memory 等等时很常见,而在业务场景中,业务队列的数量也可以用 Gauge 来统计,实时观察队列数量,及时发现堆积情况,因为其是浮动的数值,并非固定的,侧重于反馈当前的情况 2. 常用方法 Set(float64) 将仪表设置为任意值 Inc() 将仪表增加 1 Dec() 将仪表减少 1 Add(float64) 将给定值添加到仪表,该值如果为负数,那么将导致仪表值减少 Sub(float64) 从仪表中减去给定值,该值如果为负数,那么将导致仪表值增加 SetToCurrentTime() 将仪表设置为当前Unix时间(以秒为单位) ##### 6.3 Histogram(累积直方图) 1. 描述 Histogram 类型将会在一段时间范围内对数据进行采样(通常是请求持续时间或响应大小等等),并将其计入可配置的存储桶(bucket)中,后续可通过指定区间筛选样本,也可以统计样本总数。 Histogram 类型在应用场景中非常的常用,因为其代表的就是分组区间的统计,而在分布式场景盛行的现在,链路追踪系统是必不可少的,那么针对不同的链路的分析统计就非常的有必要,例如像是对 RPC、SQL、HTTP、Redis 的 P90、P95、P99 进行计算统计,并且更进一步的做告警,就能够及时的发现应用链路缓慢,进而发现和减少第三方系统的影响。 2. 常用方法 Observe(float64) 将一个观察值添加到直方图。 ##### 6.4 Summary(摘要) 1. 描述 Summary 类型将会在一段时间范围内对数据进行采样,但是与 Histogram 类型不同的是 Summary 类型将会存储分位数(在客户端进行计算),而不像 Histogram 类型,根据所设置的区间情况统计存储。提供三种摘要指标: 样本值的分位数分布情况,所有样本值的大小总和,样本总数 2. 常用方法 Observe(float64) 将一个观察值添加到直方图。 #### 7. prometheus metric type https://blog.csdn.net/hjxzb/article/details/81028806 # Grafana #### prometheus 和 grafana 连接,图表建立 https://blog.csdn.net/hjxzb/article/details/81044583