开发者学堂课程【DevOps 日志分析实战 :监控数据分析(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/736/detail/13103
监控数据分析(一)
内容介绍:
一、监控数据分析大图
二、主机监控:数据流
三、数据库监控:数据流
主要内容:
在平时做监控时一般分为4个层面,由底层开始分别是基础设施&网络(机房机器、网络设备)、操作系统(例如 Windows)、数据库&中间件、应用&业务。业务和应用会构建在这些设施上,在云的时代,基础设施和网络不需要担心。所以本节内容主要讲上面的三个层面,包括操作系统、数据库&中间件、应用&业务。用三个场景看 SLS 上做监控的最佳实践。
一、监控数据分析大图
充分利用开源生态: Prometheus Exporter, telegrafplugin 支持的监控对象均可支持,所以可以监控操作系统,如 Windows 或者数据库如 MySQL 以及各种各种各样的中间件,包括 spring boot 的应用也可以通过其监控
1.多种采集途径:
Prometheus (采集)+ telegraf (写入)+ logtail(本身提供一些监控的插件,可以做一些快捷的监控,例如主机监控就是基于 logtail 实现的)
整体来说查询是以 MetricStore 为核心:支持 PromQL+完整 SQL92
强大的可视化能力: SLS Dashboard, Grafana
采集器会将数据写到存储(MetricStore),因为本身 SLS 有自己的Dashboard ,所以 Dashboard 可以去配置 MetricStore 的一些查询来做可视化。因为也支持 Prometheus 的协议,所以 MetricStore 可以去和 Grafang 对接,通过 MetricStore 的数据源,在 Grafang 中做可视化。
2.查询语法
因为支持将 SQL 和 PromQL 进行结合,所以写法
最简单的写法是:
SELECT
//up 是查询语句,1m 表示数据的间隔(该参数可选)
promql_query_range(‘up’,’1m’)
// query_range 对应 Prometheus 中的 query_range API
FROM metrics
//在查询外面还可以嵌套 select,可以用 select 的语法做分析
SELECT
sum(value)
FROM
(SELECT promql_query_range(‘up’,’1m’)
FROM metrics);
3.实例:
在 host-metric 中可以选择指标,然后点击预览:
这时的数据被查询出,可以看到其查询语句为:*| select promql_query_range(‘pu_sys-util’) from metric
pu_sys-util 只是对指标的直接查询,没有做任何聚合,也可以对其做聚合:
*| select promql_query_range(‘avg(‘pu_sys-util’)’) from metric
在括号中可以写任意 PromQL 的语法。
4.探索 PromQL
PromQL 是 Prometheus 的查询语言,所以有关 PromQL 的信息都可以在 Prometheus 的官网中找到。
sum( rate( go_gc_duration_seconds{endpoint=~"http-metrics"]}[5m])) by (instance)
sum( 是聚合函数
rate( 是区间向量计算
go_gc_duration_seconds 是 metric
endpoint=~"http-metrics"]} 表示label selector
[5m] 表示区间
(instance) 是 group by
metric 和 label selector 组合可以选择出一组时间线,这组时间线可以对其做有关时间维度上的计算,当要做时间维度上的计算时,要先指定一个区间,然后还会附加一个区间向量计算函数。例如 rate 就是对该段数据求平均速率(例如 qps)。在最外层可以套一个聚合函数,该聚合函数可以对 metric 和 label selector 选择出的指标去做 group by。
5.补充:
·数据类型: Guage,Counter, Summary, Histogram
.Metric Selector
·瞬时向量和区间向量
·聚合函数
二、主机监控:数据流
主机监控是通过 logtail 去完成查询,logtail 会去操作系统上将对应的指标获取,然后定期写入 MetricStore ,再写入 SLS Dashboard ,SLS Dashboard 再完成可视化。
演示:
SLS 内置了快捷的记录方式,点击 logtail 配置旁的加号,选择主机监控>机器组,机器组在此选择之前连接完成的,然后点击下一步,得到配置:
其中 IntervalMs 表示的是采集的间隔,这里默认为30秒(可以修改),然后继续点击下一步,完成数据的接入:
回到控制台,可以看到 logtail 配置下会多一台 logtail 配置,名为 metric_system ,配置的选项为:
稍等一会即可看到数据产生:
可以用语句查看几分钟内的数据:
*| select promql_query(‘pu_sys_util[5m]’) from metrics
跳转到查询页面查询(查询5分钟):
查看时间发现是刚刚产生的数据,说明数据接入成功。
接入成功后,在仪表盘的主机监控可以看到内置的 spring boot(配置好所有的可视化):
还可以查看对应的 SQL 是如何编写的:
主机监控演示的是 logtail 采集,直接写到 metrics,用 SLS 的spring boot 做可视化,这是最简单的途径。
前面讲到支持 telegraf 和 Prometheus 的接入,后面会用另外的产品演示,一个是 MySQL 的监控,另一个是 spring boot 的监控。