监控指标数据采集和展示

开源工具
Prometheus(普罗米修斯)和Grafana
1.prometheus简介
Prometheus 是一个开源的服务监控系统和时间序列数据库。


Prometheus通过targets的http 入口点抓取和收集指标。它自己也以同样的方式暴露自己的数据,因此它也能抓取和监控自己的健康。
1)启动前的常规配置
Scrape_configs:
抓取目标指标的时间间隔:scrape_interval: 5s
Job的名字:- job_name: ‘prometheus’
抓取指标的目标对象配置:
static_configs:
- targets: [‘localhost:9090’]
2)指定配置的prometheus启动
./prometheus -config.file=prometheus.yml
3)注意事项
Prometheus默认使用3G内存,若机器内存较小,可以调整prometheus使用更少的内存。
4)一个job几个组的endpoints
scrape_configs:
- job_name: 'example-random'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s

static_configs:
- targets: ['localhost:8080', 'localhost:8081']
labels:
group: 'production'

- targets: ['localhost:8082']
labels:
group: 'canary'

5)预先把表达式记录成完整的持久化的时间序列,可以加速聚合查询的效率。

新建prometheus.rules文件,并输入如下内容:

job_service:rpc_durations_seconds_count:avg_rate5m = avg(rate(rpc_durations_seconds_count[5m])) by (job, service)
然后配置到prometheus.yml文件中,
rule_files:
- 'prometheus.rules'
现在,指标名字job_service:rpc_durations_seconds_count:avg_rate5m就是可查询和可以抓取的。
6)Prometheus内置的表达式浏览器
http://localhost:9090/graph 和../metrics,以及可进入表达式console。
允许键入任何的表达式,并查看结果不管是table或随着时间的graphed。
2.Prometheus查询语法
参考网址:https://prometheus.io/docs/querying/basics/
1)表达式的四种数据类型
Instant vector:包含单一采样的时间序列集合,共享相同的时间戳;
Range vector:包含一个区间数据点的时间序列集合;
Scalar:数字型的浮点值;
String:字符串值,当前未使用。
2)Intant vector时间序列选择器
直接使用指标的name表示选择所有该name的时间序列。添加一个大括号{},指明label和对应value可以进一步过滤该时间序列。Label和value的匹配可以有四种形式:
=:选择label的值与value相等的
!=:选择label的值与value不相等的
=~:匹配正则表达式值的
!~:不匹配正则表达式值的
示例查询如下:
http_requests_total{job="prometheus",group="canary"}
http_requests_total{environment=~"staging|testing|development",method!="GET"}
很明显,可以使用多个label进行多条件的过滤。
3)Range vector时间序列选择器
可以使用的时间区间的单位可以有以下六种:
S秒、m分钟、h小时、d天、w星期、y年
表示从当前往前推一段时间之内的指标的值的统计量,示例查询如下:
http_requests_total{job="prometheus"}[5m]
主要是在{}之后紧跟一个[5m],进行时间区间的选择。当然可以进行时间基准的向前偏移,这里使用offset,示例查询如下:
http_requests_total offset 5m
rate(http_requests_total[5m] offset 1w)
4)二元和聚合算子
参考网址:https://prometheus.io/docs/querying/operators/
二元算术算子:+、-、*、/、%、^(power/exponentiation)
二元比较算子:==、!=、>、<、>=、<=
二元集合算子:and(交集)、or(并集)、unless(补集)
算子使用的语法示例如下:
ignoring(

你可能感兴趣的:(monitor,监控)