aws xray如何实现应用log和trace的关联关系

server/2024/11/14 11:30:43/

参考资料

  • https://community.aws/tutorials/solving-problems-you-cant-see-using-aws-x-ray-and-cloudwatch-for-user-level-observability-in-your-serverless-microservices-applications
  • https://stackoverflow.com/questions/76000811/search-cloudwatch-logs-for-aws-xray-trace-id-in-code

ecs容器环境下应用生成的trace信息没有log关联,但是在lambda环境中测试时发现可以进行关联

在这里插入图片描述

检查发现,trace的rawdata中存在aws的cwlog字段
在这里插入图片描述

在控制台查看网络请求,此时会向cloudwatchlog服务发送log insight请求

在这里插入图片描述

当我们在控制台点击跳转到loginsight时,语句如下。

fields @log, @timestamp, @message
| filter @message like "1-66570681-3cb9b1bc917ab87c3dd8b303" or @message like "665706813cb9b1bc917ab87c3dd8b303"
| sort @timestamp, @message desc

经过以上步骤我们对两个问题有所了解

  • xray如何找到日志组?通过aws.cloudwatch_log属性
  • log如何呈现在xray控制台?通过发送loginsight的xhr请求

那么,接下来我们需要考虑如何在ecs应用中实现以上条件。参考链接(https://stackoverflow.com/questions/76000811/search-cloudwatch-logs-for-aws-xray-trace-id-in-code)中的说明

For API Gateway, Lambdas, the application logs group name are embedded in X-Ray traces out of box, so you don’t need to do anything specially.

For the trace Id injection to application logs, today it is only supported by X-Ray/OTel Java SDKs. For Javascript applications, you’ll need to inject and print X-Ray trace ids AWS-XRAY-TRACE-ID: 1-5d77f256-19f12e4eaa02e3f76c78f46a to your application log entries yourself.

对于条件1,我们需要编辑segment,加入aws.cloudwatch_log属性

对于条件2,我们需要在log内容中注入traceID

参考链接(https://blog.csdn.net/sinat_41567654/article/details/129317614)中的步骤创建xray和ecs集成环境,加入以下额外逻辑

  • 在segment中加入aws.cloudwatch_log属性
  • 模拟输出了一条日志并嵌入traceID
app.get('/', (req, res) => {var document = AWSXRay.getSegment();// 加入aws.cloudwatch_log属性document.aws.cloudwatch_logs = [{"log_group": "/ecs/ecs-xray-demo-fargaet"}]traceId = document.trace_id;console.log(document)// 模拟输出了一条日志并嵌入traceIDconsole.log("2019-09-10 18:58:30.844 [nio-5000-exec-4]  AWS-XRAY-TRACE-ID: " + traceId + " WARN 1 - Your logging message here")
})
app.use(AWSXRay.express.closeSegment());

查看ecs的应用日志如下,trace和log成功关联

在这里插入图片描述

查看xray服务的控制台成功实现关联

在这里插入图片描述


http://www.ppmy.cn/server/141846.html

相关文章

K8S实现反向代理,负载均衡

通过K8SUI界面创建nginx服务器,创建内部internal,service 创建成功 同时会创建一个VIP地址,是service内部服务产生的,我们访问10.10.112.2,它会把请求转发给102.142和102.143 此时通过node节点,访问改vip地…

Java后端请求想接收多个对象入参的数据方法

在Java后端开发中,如果我们希望接收多个对象作为HTTP请求的入参,可以使用Spring Boot框架来简化这一过程。Spring Boot提供了强大的RESTful API支持,能够方便地处理各种HTTP请求。 1.示例:使用Spring Boot接收包含多个对象的HTTP…

【经验技巧】基于Matlab和ADS的PCIe 4.0 AMI模型建模与仿真分析

在Matlab的在线帮助中心,搜索“PCIe4 Transmitter/Receiver IBIS-AMI Model”,按照文档中的操作步骤,进行基于PCIE 4.0的IBIS AMI模型的参数配置,并在SerDes Designer Toolbox中完成调试后,导入到Simulink环境下&#…

表格字典处理

正常表格处理字典: <el-table-column prop="exam_status" label="审核状态"> <template #default="scope"> <el-tag v-if="scope.row.exam_status" effect="plain"> {{getDict(dicts.shzt, scope.row.e…

gin入门

Gin入门笔记 1. 初始gin 1.1. 依赖安装 go get github.com/gin-gonic/gin写gin程序都有一套固定的格式 初始化写路由监听运行 1.2. hello world package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {router : gin.Default()rou…

【Golang】golang框架,为什么选择GoFrame, GoFrame使用心得

前言 GoFrame 是一个功能强大的 Go 语言开发框架,旨在提供简单、高效且灵活的开发体验。V2版本的发布,不但继承了 GoFrame V1 的优秀特性,并在性能、功能和易用性方面做出了显著改进。本文将总结 GoFrame V2 框架的使用,并对比其与其他 Go 框架的优势与劣势。 GoFrame v2…

远程链接mysql步骤

1. 创建用户 -- 登录root用户 mysql -uroot -py -- 查询所有用户 select user,host from mysql.user; -- add create user usernamehost identified by password; -- delete drop user usernamehost; -- 查看当前用户 select current_user;2. 远程链接数据库 解决&#xff1a;…

数字化时代:EIOT 能源物联网如何助力高校宿舍变革?——安科瑞 丁佳雯

在数字化时代&#xff0c;EIOT作为物联网技术在能源管理领域的重要应用&#xff0c;正逐步渗透到高校宿舍的管理中&#xff0c;为宿舍管理带来了革命性的变革。以下将详细探讨EIOT能源物联网如何助力高校宿舍的变革&#xff0c;并特别介绍平台预付费功能的作用。 一、智能化管理…