暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

不掌握一些Prometheus的概念就开始干,容易碰壁

前言

这几天一直在搞监控,被折腾的死去活来的。终其原因还是因为我没有这东西的概念,就一通折腾,走了挺多弯路。

时序数据库的一些概念

以这个图为例,我们列出了4个点。

上面图标的点1代表着Value
,又称作样本值,比如这里反映当前MySQL中Questions计数器的大小

而点2代表着Timestamp
,也就是时间戳。

而点3代表着Metric
,也就是监控项。比如MySQL中的一些监控项,如mysql_up等等。

而点4代表着Label
,这个lable可以帮助我们过滤数据,例如我这里的lable就是instance,指定到某一个主机。

好,了解了这4点概念,我们就来看看,如果我们要设计一个最大活动连接数,应该怎么设计。首先我们知道监控项目是最大活动连接数,那么我们采集的Metric指标为mysql_global_status_open_tables
。我们把这个指标代入到Prometheus中直接查看。

可以看到一共查出4条记录。那么我们怎么区分这些记录了? 这就需要使用到Label
。因为可能涉及到多台服务器,而每台服务器上也可能涉及到多个MySQL实例,所以使用多个Label
来进行区分。当然这里的Label
不仅仅是只考虑把这些数据按照维度区分开,它还可以按照维度进行聚合,例如我要查某个host所有MySQL实例的内存总和,这个靠聚合计算就很容易。

我们可以自己创建一个图表试试看看。

然后再图表中加入刚刚查询出来的表达式。

这里我们的通过标签,可以选择不同的数据。

mysql_global_status_open_tables{cluster="testdb-34",instance="xxxxxx",job="test-mysql"}

一般这里会改造成变量,这样当你进入某个图表就对应某个实例的数据。

mysql_global_status_open_tables{instance="$host"}

如果你使用的是opentsdb,概念一样,只不过它是把Label
属性换成了tags

说说指标的收集

Prometheus中对指标的体现,主要是四种类型。

1.测量型(Gauge),这是一个可增加也可减少的数字。比如CPU使用率和内存使用率。随着时间的流逝,他们的值可高可低。下图是MySQL的连接数,也是可增可减的数字。(图片来自datadog)

2.计数型(counter):不停累加的值,除非重置为0。这个一般比较常见的是执行的次数,请求量。

3.直方图(histogram): 通过对监控的指标点进行抽样,展示数据分布频率情况。例如下面的PostgreSQL的锁的分布情况(图片来自datadog)。

4.分位统计器。与直方图是非常类似的,主要区别是summary在客户端完成聚合,而直方图在服务端完成聚合。所以他们的区别就在于一个是消耗客户端的资源,一个是消耗服务器的资源。还有它可以提供更加准确的分位数。

至于他们之间的详细区别,建议参考官方文档,有一篇专门讲他们的区别:https://prometheus.io/docs/practices/histograms/

后记

今天就到这里,像Prometheus和OpenTSDB这样的时序数据库,还是需要学习了解一下的。不然有时候真的研究半天也是一头雾水。

文章转载自励志成为postgresql大神,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论