Prometheus 监控
Prometheus [普罗米修斯]主要的是从被监控项目中获取metrics。架构全景图:

安装与使用
Prometheus 的安装方式很多,我在本地是使用windows的包,Prometheus自打出生就支持docker所以,如果是*inx机器,建议安装docker然后体验。在本地我仅仅只需要执行目录下的prometheus就可以就可以进行体验了。Prometheus服务自身也会暴露出metrics,用来对自身进行指标收集和监控。在根目录最重要的一个配置文件是prometheus.yml,里面有三类大属性:global,rule_files,scrape_configs。具体的配置信息可以看这个:
https://prometheus.io/docs/prometheus/latest/configuration/configuration/,也可以看看中文文档:https://songjiayang.gitbooks.io/prometheus/configuration/
在Prometheus的后台localhost:9090,选择一个 metric,然后点击 execute,之后就可以在下面的graph和console中看到输出的结果:

在status下选择Configuration然后可以看到prometheus.yml里面的定义。在Target下可以看到监控的目标源的ip地址的信息。
metrics 类型
metrics 有四类,并且每一个类都有相应的客户端lib。在目标监控中需要暴露出相应的metrics给prometheus服务器进行收集,之后才能进行有效的信息分析,之后预警和监控。
Prometheus客户端lib提供4种主要的核心metric类型:Counter,Gauge,Histogram,Summary。
Counter:数值类型,只能增加,不能减少。用户计数请求服务,完成任务数,发生错误数。不要用在可能会减少的地方
Gauge:数值类型可以增加可以减少,变化的类型,类似于测量温度,当前内存使用量
Histogram:直方图对样本进行观察(比如请求的持续时间,响应大小)。并将其统计到一个可配置的bucket中。一个Histogram包括:
1 | <basename>_bucket{le="<upper inclusive bound>"} |
Summary:主要用于表示一段时间内数据采样结果,类似Histogram
1 | <basename>{quantile="<φ>"} (0 ≤ φ ≤ 1) |
metrics定义如:<metric name>{<label name>=<label value>, ...}
metrics接口需要注意,每行要空行,最后以空行结束。
1 | # HELP http_requests_total The total number of HTTP requests. |
Exporter
自定义Exporter其实就是暴露一个metrics接口让Prometheus服务器进行收集。所以只需要返回像上面的例子一样的文本数据就可以了。
官方推荐首先采用Historam。可以导入相应的客户端metric然后进行导入。
继续学习
- Prometheus 的内置函数
- Prometheus 自定发现监控目标
- 报警规则,报警方式
- 图表
- 对接granafa