监控数据分析(二)| 学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
可观测监控 Prometheus 版,每月50GB免费额度
简介: 快速学习监控数据分析。

开发者学堂课程【DevOps 日志分析实战 :监控数据分析(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/736/detail/13103


监控数据分析(二)

三、数据库监控:数据流

1.MySQL 的监控通过 telegraf 演示:

image.png

使用 telegraf 的一个插件去连接 MySQL ,然后去读取 MySQL 的一些性能指标,telegraf 通过 influxdb 的协议将其写给 logtail ,然后 logtail 再写入到 MetricStore ,再通过 SLS Dashboard 做可视化。

演示:

首先需要有 metrics 的 telegraf,然后新建一个配置(自定义数据插件),选择已有的机器组,然后点击下一步,设置配置名称的插件的配置。插件配置如下:

{

“inputs”:{

{

“data1”:{

“Format”:”influx”,

“Address”:”:8476”

},

“type”:”service_http_server”

}

},

“global”:{

“AlwaysOnline”:true,

“DelayStopSec”:500

}

}

该插件的意思是 logtail 会启动一个端口接收 influxdb 的协议写入。

到此配置完成,然后返回可以看到 logtail 下多了一个配置,现在只是 logtail 启动了一个端口,还需要用 telegraf 将数据采集然后写给logtail 。

操作的步骤为:
首先修改 telegraf 的配置,其配置在/etc/ telegraf 下

将默认的文件备份然后移动到另一个文件,然后修改插创建一个新的文件。该文件最重要的部分为:

image.png

最后的部分只定义了一个输出(influxdb 协议),只定义了一个 http 的 url ,该 url 就是logtail 的地址。要将 telegraf 装在与 logtail 一台机器上,然后指定127.0.0.1:8476 即可。

然后创建 MySQL 采集的配置,在 telegraf.d 下面新建 mysql.conf。

最重要的是要修改

servers=[“user:passwd@tcp(127.0.0.1:3306)/?tls=false”],将其改为对应的连接端串(用户名密码、IP 地址、端口),最后还有一个可选的配置,如下:

image.png

可以将其中的数据替换,方便数据查看(例如 IP 地址不是特别直观,可以将其翻译成有含义的名字)

然后重新加载 telegraf 的配置,过一会就可以在页面上看到,选择一条词条点击预览:

image.png

该数据库监控可以像主机监控那样配置 spring boot 做可视化,后续会提供一个内置的可视化模板,包括各种各样的中间件也会有一些相应的模板。

从监控对象到 Prometheus 再到 MetrecStore,最后会用 Grafana 做一个可视化。这里用 spring boot 举例,通过 spring boot 提供的功能对其进行应用级别的监控。

2. 通过 spring boot 进行应用级别的监控

应用监控中我们以 Spring Boot 应用为例,从 Spring Boot中,从 MicroMeter 这个组件,使用 Spring Boot Actuator暴露数据,通过 Prometheus采集,并使用 remote write 协议写入MetricStore,再使用 Grafana 对接做可视化,整个数据流如下:

image.png

打开一个 spring boot 的 demo 应用,首先要引入两个依赖,其中一个叫 spring-boot-starter-actuator,还有一个叫 micrometer-registry-prometheus 。actuator 实际上是 spring boot 提供的一个标准的监控组件,会暴露应用内部的状态信息。

启动该应用,访问应用的8080端口:

image.png

actuator 默认启动了很多接口,例如常用的 health (应用的健康状态),metrics (列出对应的指标)。还可以获取到对应的数值:

image.png

但是该结构并不是被 Prometheus 识别的,prometheus 的格式为:

image.png

Prometheus 的格式是通过引入的第二个依赖转换的——micrometer-registry-prometheus

因为 spring boot 2.0以上是用 micrometer 做底层的监控框架,所以 micrometer 会封装很多不同的对监控服务封装的格式。

看到 micrometer 官网的描述:

image.png

支持很多种包括各种各样的云服务以及一些开源软件,其中也包括 prometheus,支持上图中所表示的协议而暴露其数据。

每种协议都是依赖的形式引进,都会自动的开启。

引入两个依赖后,需要修改 application.yml ,将对应的接口暴露,这里选择将所有接口暴露:

server:

port: 8080

spring:

application:

name: spring-demo

management:

endpoints:

web:

exposure:

include: "*”

//当采集数据时,会附加一个 application 这样的 tag,其值是 //spring-demo

metrics:

tags:

application: ${spring.application.nane}

看到 exposure 的数据:

image.png

jvm_memory_used_bytes 是指标,会有一个application 这样的 tag ,其值为 spring-demo ,里面每一个指标都有一个这样的值。这就是通过下面的部分代码实现的,可以有助于在同时监控多个应用时对他们进行区分。

metrics:

tags:

application: ${spring.application.nane}

访问 actuator /Prometheus 能够看到数据,说明现在的配置是可行的。

数据暴露出来后,需要抓取并将其写入到 MetricStore,所以要配置Prometheus。

先在本机安装一个 Prometheus ,然后要增加一个抓取的配置:

-job_name:”spring-demo”

metrics_path:” actuator /Prometheus”

static_configs:

-targets:[“localhost:8080”]

配置完成后还需要配置一个 remote_write(需要让其远程的写入 metric):

remote write:

-url:https://metric-test-proj.cn-beijing.log.aliyuncs.com/prometneus/metric-test-proj/spring/api/v1/write

//配置鉴权(不允许匿名写入)

basic_auth:

//可以单独的创建子账号用来写入

username: $(accessKeyId)

password: $(accessKeySecret)

# Configures the queue used to write to remote storage.

//写入的配置,如果数据量不是很大,下面一段的代码可以忽略

queue config:

max_samples_per send:2048

batch_send deadline: 28s

min backoff:100ms

max backoff: 5s

#max_retries: 10

首先要配置一个 url,url 用在 Grafana 的配置中,metric-test-proj 为 project 的名字,后面的

beijing.log.aliyuncs.com 可以在访问域名中看到:

image.png

配置完 remote_write 后,刷新页面,看到下拉框有有指标则说明写入成功。

说明数据已经通过 Prometheus 远程写入到 MetricStore 中,接下来去配置 Grafana 的数据源。

3. 配置 Grafana 的数据源

配置 Grafana 的数据源时,因为是兼容修饰协议的,所以直接配置 Prometheus 数据源即可(url 有 project 的名字等等):

注意一定要打开 Basic auth 这个选项,User 填写 ak 的 id ,password 填写 ak 的密码:
image.png

数据源配置完成(名为 spring-demo)

4. 可视化

接下来要做可视化

已经在 grafana.com 上传了一个 dashboard 的模板:

image.png

该模板中将常用的指标都已经配置完成,可以直接复制该 id 或者 url ,在配置时点击加号中的 import,然后粘贴,并选择相应的数据源:

image.png

点击 import,该 dashboard 即导入成功:

image.png

到此,已经完成了整个监控的流程,从 spring boot 暴露出监控指标的数据到 Prometheus 去采集数据,再通过 Prometheus 的remote write 协议写入到 MetricStore ,最后通过 Grafana 去完成其可视化。

5.回顾:

为了更全面的理解,在应用监控还有数据库监控和操作系统监控这三种监控中分别采用了三种不同的方式。在主机监控采用 logtail 采集,然后写入 MetricStore;在数据库监控是用 telegraf 去做采集,然后写入 logtail,通过logtail 写入 MetricStore;在 springboot 监控中,通过spring boot 的 MicroMeter 暴露出来的数据通过 Prometheus 去采集,然后通过其 remote write 协议写入到 MetricStore ,最后通过 Grafana 去完成其可视化。

在实际中可以根据情况,假如有 K8s,则很可能已经有 Prometheus,就可以将其他的进入 Prometheus 继续配置监控;如果已经用了 Grafana 去做一些采集,那么也可以用其他的插件来扩展;如果都没有,logtail 在云上的机器是比较容易安装的,所以也可以利用 logtail 去采集,并且如果使用了 SLS 服务则 logtail 都是已经安装过的。

本身 PromQL 语法和 SQL 语法都提供了很强大的能力,可以在主机监控的 dashboard 中查看一些示例的配置,也可以做一些修改。

相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
相关文章
|
6月前
|
数据采集 存储 监控
淘宝详情数据采集(商品上货,数据分析,属性详情,价格监控),海量数据值得get
淘宝详情数据采集涉及多个环节,包括商品上货、数据分析、属性详情以及价格监控等。在采集这些数据时,尤其是面对海量数据时,需要采取有效的方法和技术来确保数据的准确性和完整性。以下是一些关于淘宝详情数据采集的建议:
|
6月前
|
监控 安全 数据可视化
R语言在员工上网行为监控中的数据分析
本文讲述了如何使用R语言分析员工上网行为以提升企业网络安全。通过收集网络流量和访问记录数据,利用R进行读取、分析和可视化,例如查看访问时长分布和热门网站。此外,文中还介绍了一个自动将监控数据提交到网站的R脚本,通过定时任务实现数据的持续更新和管理,及时发现并应对安全风险,增强网络安全性。
302 3
|
6月前
|
数据采集 监控 网络协议
利用Perl编写局域网监控软件的数据分析与报告生成模块
使用Perl编写局域网监控软件,包括数据采集(如获取主机列表)、数据分析(统计主机在线时长)和报告生成。代码示例展示了如何利用Net::ARP模块收集信息、定时统计在线时间并生成报告。此外,通过LWP::UserAgent模块,可将监控数据自动提交至网站,便于管理员远程监控网络状态,保障网络安全。
99 0
|
6月前
|
监控 数据可视化 算法
上网行为监控管理:利用R编写的数据分析和可视化代码示例
本文介绍了使用R语言进行上网行为监控管理的方法。通过加载和分析日志数据,如示例代码所示,可以了解用户行为。使用ggplot2绘制时间趋势图以洞察用户访问模式,借助caret进行聚类分析以识别异常行为。此外,利用httr包可自动将数据提交至网站,提升管理效率。R语言为网络安全和行为监控提供了强大工具。
157 0
|
机器学习/深度学习 自然语言处理 算法
Python预测 数据分析与算法 学习笔记(特征工程、时间序列)2
Python预测 数据分析与算法 学习笔记(特征工程、时间序列)
169 0
|
机器学习/深度学习 算法 数据可视化
Python预测 数据分析与算法 学习笔记(特征工程、时间序列)1
Python预测 数据分析与算法 学习笔记(特征工程、时间序列)
115 0
|
存储 数据采集 机器学习/深度学习
物联网数据分析 | 学习笔记
快速学习物联网数据分析
349 15
物联网数据分析 | 学习笔记
|
数据挖掘
java202302java学习笔记第十五天-打乱数据分析
java202302java学习笔记第十五天-打乱数据分析
82 0
java202302java学习笔记第十五天-打乱数据分析
|
机器学习/深度学习 数据采集 Ubuntu
Python数据分析与挖掘实战学习笔记
Python本身的数据分析功能不强,需要安装一些第三方扩展库来增强它的能力。
198 0
Python数据分析与挖掘实战学习笔记
|
数据采集 SQL 数据挖掘
数据预处理-数据解析-总结及预定数据分析|学习笔记
快速学习数据预处理-数据解析-总结及预定数据分析
158 0
数据预处理-数据解析-总结及预定数据分析|学习笔记