使用数据加工将Log转成Metric

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
可观测可视化 Grafana 版,10个用户账号 1个月
简介: # 使用数据加工将Log转成Metric ## 云原生时代的可观察性 我们关注应用运行起来后的运行时数据,主要有Log、Trace和Metric 这3大类。 Log是离散的事件,Trace可以认为是带请求追踪的事件,Metric是带统计量的事件。 ![img1.jpg](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/2a55f

使用数据加工将Log转成Metric

云原生时代的可观察性

我们关注应用运行起来后的运行时数据,主要有Log、Trace和Metric 这3大类。

Log是离散的事件,Trace可以认为是带请求追踪的事件,Metric是带统计量的事件。
img1.jpg

本质上Log、Trace、Metric都是事件,存储上满足事件存储的系统都可以用来存储这3类数据。

阿里云SLS为运行时数据提供了两种存储:Logstore和Metricstore。

  • Logstore:适合存储Log和Trace
  • Metricstore:适合存储Metric

SLS Metricstore针对时序场景做了大量优化,提供PromQL查询能力,支持Prometheus协议。

SLS Metricstore 详细介绍请参考官方链接, PromQL查询语言请参考官方链接

Log转Metric

很多应用的Log数据往往比Metric全面。 经常存在这样的场景: 把Log中的数据转换为Metric。

前面提到,Metric可以认为是特定格式的Log,因此在SLS里可以将Log转换为Metric。

常见的Log转Metric的方法可以有两种:

img2.jpg

  • 聚合日志产生指标,类似sql做group by以后产生对应的统计值. 对应SLS ScheduleSQL功能
  • 将日志格式做格式转换,使其符合Metric格式. 对应SLS数据加工e_to_metric场景

本文主要介绍第二种的场景,即日志按行处理转化为Metric的格式

阿里云SLS 数据加工简介

数据加工服务是SLS推出的面向日志行处理的服务,主要为日志的规整、过滤、富化等场景设计
img3.jpg

SLS数据加工DSL是专门为日志实时行处理定制的一套语言(类Python)。目前支持200+的行处理函数,可以参考官网文档

本文主要介绍Log转Metric的函数 e_to_metric

Log转Metric实战

Step1 – 创建Metricstore

首先来建一个Metricstore用于接受指标数据

  • 创建Metricstore,界面操作

img4.jpg

  • Grafana配置访问Metricstore, 以便使用Grafana查询Metricstore数据, 进入Grafana首页

Configuration -> Data Sources -> Add Data Source, 选择Prometheus -> URL的组成格式如下

https://${Endpoint}/prometheus/${Project}/${Metricstore}/

# Endpoint、Project、 Metricstore分别做相应替换

Auth -> Basic auth要enable起来,Basic Auth Details输入阿里云AccesskeyID和AccesskeySecret

img5.jpg

Metricstore创建好了,那么如何向Metricstore写入指标数据呢?

可以看到下面的格式来写入, 见文档 Metricstore格式
img6.jpg

可以看到,Metricstore要求数据写入必须符合一定的格式,

对于Log格式转Metric格式的场景,可以使用数据加工函数e_to_metric来实现.

接下来以Nginx日志中的request_time等指标为例,演示如何将Log转换成Metricstore的格式

Step2 - 第一个Log转Metric任务

先来看一下用于演示的Nginx日志, 我们的目标是将建立Nginx的request_time指标

img7.jpg

  • 点开Nginx日志的logstore,进入查询分析页面后,可以看到“数据加工”的入口,点击进入

img8.jpg

  • 看到数据加工IDE界面后,在IDE里编写DSL语句实现生成request_time指标

img9.jpg

数据加工实现日志转Metric主要由 e_to_metric 来实现, 函数参数要求如下,完整帮助参考 链接

e_to_metric(names=None, labels=None, time=None)
# names字段用于指定指标名称字段,指定该字段后指标的值也会取Log中该字段名的值
# labels字段用于指定指标label字段
# time字段不填,自动使用logstore中的__time__时间

我们只需要建立一个指标叫request_time,并且指标取值也是request_time的值,因此加工语句如下

e_to_metric(names="request_time")

点一下快速预览,看一下效果
preview1.jpg

可以看到生成了request_time指标,并且没有Label(后面有更多样例演示如何增加Label,我们先走通最简单的)

  • 保存加工任务, 存储目标的目标库请选择刚才第一步创建的Metricstore

img10.jpg

Step3 – 查询Metricstore

加工任务保存后,等几分钟后数据会写入Metricstore,然后可以在Grafana里查询Metric。

输入PromQL查询,直接输入metricname即可查询

request_time

img11.jpg

Log转Metric - 更多样例

  • 带上Label
e_to_metric(names="request_time",labels="slbid")

img12.jpg

  • 将Log中的多个值转化为指标
e_to_metric(names=["request_time","upstream_response_time"],labels="slbid")

img13.jpg

  • 多个Label
e_to_metric(names=["request_time","upstream_response_time"],labels=["slbid","scheme"])

img14.jpg

  • Metric重命名
e_to_metric(names=[("request_time","rt"),"upstream_response_time"],labels=["slbid","scheme"])

img15.jpg

  • Label重命名
e_to_metric(names=[("request_time","rt"),"upstream_response_time"],labels=["slbid",("scheme","http_type")])

img16.jpg

小结

本文通过数据加工的e_to_metric函数演示了如何将Log转化成Metric, 希望对看官的可观察性场景有帮助。

SLS提供了可观察性的整体方案,积极跟进OpenTelemetry标准,有任何问题欢迎和我们交流。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
146 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
|
2月前
|
数据采集 机器学习/深度学习 存储
使用 Python 清洗日志数据
使用 Python 清洗日志数据
49 2
|
3月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
254 3
|
4月前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
65 0
|
4月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
71 0
|
4月前
|
存储 运维 监控
Entity Framework Core 实现审计日志记录超棒!多种方法助你跟踪数据变化、监控操作,超实用!
【8月更文挑战第31天】在软件开发中,审计日志记录对于跟踪数据变化、监控用户操作及故障排查至关重要。Entity Framework Core (EF Core) 作为强大的对象关系映射框架,提供了多种实现审计日志记录的方法。例如,可以使用 EF Core 的拦截器在数据库操作前后执行自定义逻辑,记录操作类型、时间和执行用户等信息。此外,也可通过在实体类中添加审计属性(如 `CreatedBy`、`CreatedDate` 等),并在保存实体时更新这些属性来记录审计信息。这两种方法都能有效帮助我们追踪数据变更并满足合规性和安全性需求。
116 0
|
SQL 监控
日志服务数据加工最佳实践: 从RDS-MySQL拉取数据做富化
本篇覆盖日志服务数据加工最佳实践: 从RDS-MySQL拉取数据做富化的各种场景, 包括定期刷新拉取所有, 拉取部分数据, 拉取后再过滤数据, 调整返回表格结构等
1859 0
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
330 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
13天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。