AWS Elastic Beanstalk 监控可观测最佳实践

一、概述

Amazon Web Services (AWS) 包含一百多种服务,每项服务都针对一个功能领域。服务的多样性可让您灵活地管理 AWS 基础设施,然而,判断应使用哪些服务以及如何进行预配置可能会非常困难。借助 Elastic Beanstalk,可以在 AWS 云中快速部署和管理应用程序,而不必了解运行这些应用程序的基础设施。Elastic Beanstalk 可降低管理的复杂性,但不会影响选择或控制。只需上传应用程序,Elastic Beanstalk 将自动处理有关容量预配置、负载均衡、扩展和应用程序运行状况监控的部署细节。

观测云全面支持在 AWS Elastic Beanstalk 上的可观测能力,提供包括对基础资源的监控、应用程序链路跟踪等。文章将介绍在该环境上如何接入 APM,如何安装 datakit 等最佳实践。

AWS Elastic Beanstalk 简介

Elastic Beanstalk 支持在 Go、Java、.NET、Node.js、PHP、Python 和 Ruby 中开发的应用程序。在部署应用程序时,Elastic Beanstalk 会构建选定的受支持的平台版本,并预配置一个或多个 AWS 资源(如 Amazon EC2 实例)来运行应用程序。可通过使用 Elastic Beanstalk 控制台、AWS Command Line Interface (AWS CLI) 或 eb(专为 Elastic Beanstalk 设计的高级 CLI)与 Elastic Beanstalk 交互,还可以直接从 Elastic Beanstalk Web 界面(控制台)执行大多数部署任务,如更改 Amazon EC2 实例队列的大小或监控应用程序。

使用 Elastic Beanstalk,您需创建一个应用程序,将应用程序版本以应用程序源包的形式(如 Java .war 文件)上传到 Elastic Beanstalk,然后提供一些有关该应用程序的信息。Elastic Beanstalk 会自动启动环境,然后创建并配置运行代码所需的AWS资源。启动环境后,您即可管理环境并部署新应用程序版本。

下图说明了 Elastic Beanstalk 的工作流程。

应用发布

开发者把自己开发好的包,上传到 aws 上,Elastic Beanstalk 将文件部署到 Amazon EC2 实例上,完成应用的发布。

二、解决方案

监控数据采集说明

DataKit 是观测云的一款开源、一体式的数据采集 OneAgent,它提供全平台操作系统(Linux/Windows/macOS)的支持,拥有全面数据采集能力,涵盖主机、容器、中间件、Tracing、日志等各种数据采集的能力。

在 AWS 环境中,将通过 DataKit 进行监控数据采集,并上传到观测云。

通过自定义环境变量配置

当创建 AWS Elastic Beanstalk 环境时,Elastic Beanstalk 会预置和配置运行和支持您的应用程序所需的全部 AWS 资源。除配置您的环境的元数据和更新行为外,还可以通过为配置选项提供值对这些资源进行自定义,可以通过配置项的方式,对黑盒子的环境进行自定义配置,解决两个痛点:

  • Amazon EC2 实例是托管的,无法进入服务器执行命令
  • 应用程序启动,由 Elastic Beanstalk 自动化,无法自己再添加 类似 java -jar 类似命令

修改后,Trace 上报逻辑如下:

三、最佳实践

1. 创建安装 datakit 的 config 文件

1.1 files 参数介绍
  • mode:运行权限,此处给的是 755
  • owner:用户名
  • group:组户名
  • source:文件来源
1.2 container_commands 参数介绍
  • DK_DEF_INPUTS:由于无法进服务器修改 conf 文件,所有在安装 datakit 时候开启 ddtrace 采集器,本实践中同时也开启了 ddtrace, dk, cpu, disk, diskio, mem, swap, system, hostobject, net, host_processes, container 采集器
  • DK_DATAWAY:网关,这里举例为法兰克福网关
  • token:观测云空间 token
1.3 config 文件模版
# .ebextensions/99datakit.config
option_settings:- namespace: aws:elasticbeanstalk:application:environmentoption_name: DD_APM_INSTRUMENTATION_ENABLEDvalue: "host"- namespace: aws:elasticbeanstalk:application:environmentoption_name: DD_APM_INSTRUMENTATION_LANGUAGESvalue: "java"- namespace: aws:elasticbeanstalk:application:environmentoption_name: DD_APM_INSTRUMENTATION_OUTPUT_PATHSvalue: "file:///tmp/host_injection.log"- namespace: aws:elasticbeanstalk:application:environmentoption_name: DD_APPSEC_ENABLEDvalue: "true"- namespace: aws:elasticbeanstalk:application:environmentoption_name: DD_CONFIG_SOURCESvalue: "BASIC"- namespace: aws:elasticbeanstalk:application:environmentoption_name: DD_ENVvalue: "apipro"- namespace: aws:elasticbeanstalk:application:environmentoption_name: DD_PROFILING_ENABLEDvalue: "true"- namespace: aws:elasticbeanstalk:application:environmentoption_name: DD_SERVICEvalue: "RydeApiPro"- namespace: aws:elasticbeanstalk:application:environmentoption_name: DD_SYSTEM_PROBE_PROCESS_SERVICE_INFERENCE_ENABLEDvalue: "true"- namespace: aws:elasticbeanstalk:application:environmentoption_name: DD_VERSIONvalue: "1.0"files:"/datakit_install_script.sh":mode: "000755"owner: rootgroup: rootsource: https://static.guance.com/datakit/install.shcontainer_commands:setup_datakit:command: "DK_DEF_INPUTS='ddtrace,dk,cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container‘ DK_DATAWAY=’https://eu1-openway.guance.one?token=xxxxx‘ /datakit_install_script.sh"
1.4 配置文件上传后,update 即可生效

在观测云-基础设施可以看到服务器运行状态,表示安装完成。

2. 接入APM

2.1 参数介绍
  • dd.env : 为服务设置环境变量,对应环境变量 DD_ENV。
  • dd.version : APP 版本号,对应环境变量 DD_VERSION。
  • dd.service.name : 设置服务名,对应环境变量 DD_SERVICE。
  • dd.trace.agent.timeout : 客户端网络发送超时默认 10s,对应环境变量 DD_TRACE_AGENT_TIMEOUT。
  • dd.logs.injection : 是否开启 Java 应用日志注入,让日志与链路数据进行关联,默认为 true,对应环境变量 DD_LOGS_INJECTION。
  • dd.tags : 为每个 Span 添加默认 Tags,对应环境变量 DD_TAGS。
  • dd.agent.host : Datakit 监听的地址名,默认 localhost,对应环境变量 DD_AGENT_HOST。
  • dd.trace.agent.port : Datakit 监听的端口号,默认 9529,对应环境变量 DD_TRACE_AGENT_PORT。
  • dd.trace.sample.rate : 设置采样率从 0.0(0%) ~ 1.0(100%)。
  • dd.jmxfetch.enabled : 开启 JMX metrics 采集,默认值 true, 对应环境变量 DD_JMXFETCH_ENABLED。
  • dd.jmxfetch.config.dir : 额外的 JMX metrics 采集配置目录。Java Agent 将会在 yaml 配置文件中的 instance section 寻找 jvm_direct : true 来修改配置,对应环境变量 DD_JMXFETCH_CONFIG_DIR。
  • dd.jmxfetch.config : 额外的 JMX metrics 采集配置文件。JAVA agent 将会在 yaml 配置文件中的 instance section 寻找 jvm_direct : true 来修改配置对应环境变量,DD_JMXFETCH_CONFIG。
  • dd.jmxfetch.check-period : JMX metrics 发送频率(ms),默认值 1500,对应环境变量 DD_JMXFETCH_CHECK_PERIOD。
  • dd.jmxfetch.refresh-beans-period : 刷新 JMX beans 频率(s),默认值 600,对应环境变量 DD_JMXFETCH_REFRESH_BEANS_PERIOD。
  • dd.jmxfetch.statsd.host : Statsd 主机地址用来接收 JMX metrics,如果使用 Unix Domain Socket 请使用形如 unix : //PATH_TO_UDS_SOCKET 的主机地址。默认值同 agent.host ,对应环境变量 DD_JMXFETCH_STATSD_HOST。
  • dd.jmxfetch.statsd.port : StatsD 端口号用来接收 JMX metrics ,如果使用 Unix Domain Socket 请使填写 0。默认值同 agent.port 对应环境变量 DD_JMXFETCH_STATSD_PORT。
2.2 config 模版
# .ebextensions/tomcat.config
option_settings:aws:elasticbeanstalk:container:tomcat:jvmoptions:JVM Options: '-javaagent:/usr/local/datakit/data/dd-java-agent.jar -Ddd.logs.injection=true -Ddd.service=rydewebdev -Ddd.env=rydewebdev -Ddd.version=1.0.8'
2.3 配置文件上传后,update 即可生效

在观测云-应用性能监测,可以看到服务链路上报,表示成功。

四、观测云上效果展示

当完成上面所述的配置,并在 AWS 上成功启动任务后,我们就可以通过观测云全面监控 AWS 中的服务运行情况。使用效果说明如下:

1. 关于指标

针对主机系统主机层面的监控,帮助快速查看所有主机的健康和资源使用状况,可以以蜂窝图、时序图等多种形式进行展现,同时可以查看所有主机对应的进程,及时发现问题,第一时间定位并解决问题。

2. 关于服务链路

在链路查看器,您可以通过点击任意链路查看对应的链路详情,包括当前链路发生的相对时间、持续时间、HTTP 方法、HTTP URL 、HTTP 状态码、TraceId、火焰图、Span 列表、服务调用关系以及关联的日志、主机、指标、网络等等。

火焰图可清晰展示整条链路中每个 Span 的流转和执行时间。您可以在火焰图右侧查看对应的服务列表及响应时间。点击火焰图的 Span,在链路详情可查看对应的 Json 内容,通过鼠标滚轴缩放可查看具体 Span 信息。

观测云根据您采集的数据,为您提供默认的应用性能概览视图,在应用性能监测 > 概览中,您可以查看:

  • 统计数据:包括在线服务总数、P90 服务响应耗时、服务最大响应耗时、服务错误数、服务错误率;
  • 响应耗时排行榜 TOP 10:包括 P90 服务、资源、操作;
  • 错误分布排行榜 TOP 10:包括服务错误率、资源 5xx 错误率、资源 4xx 错误率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(七):快启

前言: 汽车仪表是人们了解汽车状况的窗口,而仪表中的大部分信息都是以指示灯形式显示给驾驶者。仪表指示灯图案都较为抽象,对驾驶不熟悉的人在理解仪表指示灯含义方面存在不同程度的困难,尤其对于驾驶新手,如果对指示灯的含义不求甚解,有可能影响驾驶的安全性。即使是对…

Pytest框架实战二

在Pytest框架实战一中详细地介绍了Pytest测试框架在参数化以及Fixture函数在API测试领域的实战案例以及具体的应用。本文章接着上个文章的内容继续阐述Pytest测试框架优秀的特性以及在自动化测试领域的实战。 conftest.py 在上一篇文章中阐述到Fixture函数的特性,第…

shell循环

一、for循环 用法: for 变量 in 取值列表 do 命令序列 done 例1:打印1到10的数字列表 #!/bin/bashfor i in {1..10} do echo $i done 例2:#批量添加用户,用户名存放在users.txt文件中,每行一个,初始密码均设为123456 #!/bin/bas…

KMP算法【C++】

KMP算法测试 KMP 算法详解 根据解释写出对应的C代码进行测试&#xff0c;也可以再整理成一个函数 #include <iostream> #include <vector>class KMP { private:std::string m_pat;//被匹配的字符串std::vector<std::vector<int>> m_dp;//状态二维数组…

哪些类型的产品适合用3D形式展示?

随着3D技术的蓬勃发展&#xff0c;众多品牌和企业纷纷投身3D数字化浪潮&#xff0c;将产品打造成逼真的3D模型进行展示&#xff0c;消费者可以更加直观地了解产品的特点和优势&#xff0c;从而做出更明智的购买决策。 哪些产品适合3D交互展示&#xff1f; 产品3D交互展示具有直…

自己手写一个字符串【C风格】

//字符串的常见操作 #include <iostream>#define MAX_SIZE 15 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status;//状态类型 typedef char ElemType;//元素类型typedef ElemType String[MAX_SIZE 1];//第一个字节记录长度//***tring是数…

c#自动生成缺陷图像-添加新功能(可从xml直接提取目标数据,然后进行数据离线增强)--20240524

在进行深度学习时,数据集十分重要,尤其是负样本数据。 故设计该软件进行深度学习数据预处理,最大可能性获取较多的模拟工业现场负样本数据集。 该软件基于VS2015、.NETFrameWork4.7.2、OpenCvSharp1.0.0.0、netstandard2.0.0.0、SunnyUI3.2.9.0、SunnyUI.Common3.2.9.0及Ope…

C盘磁盘空间不够用,怎样将d盘的空间划分给c盘?

C盘磁盘空间不够用&#xff0c;怎样将d盘的空间划分给c盘&#xff1f; 背景&#xff1a;win10系统下。C盘原有50G&#xff0c;如今只剩下8G&#xff0c;已经捉襟见肘了&#xff0c;想从D盘&#xff0c;割100G给C盘&#xff0c;以后软件能直接装C盘了。操作步骤如下&#xff1a…

2024年人文艺术与创新教育国际学术会议(ICHAIE 2024)

2024年人文艺术与创新教育国际学术会议&#xff08;ICHAIE 2024) 2024 International Conference on Humanities, Arts and Innovation Education 一、【会议简介】 随着全球化的推进和科技的迅猛发展&#xff0c;人文艺术与创新教育在培养未来人才方面扮演着越来越重要的角色…

springboot事务结合分布式锁超卖问题

背景 商品销售扣减库存是常见的场景&#xff0c;考虑性能的可以使用redis存储库存进行扣减&#xff0c;并发小的也可以采用数据量库存占用记录实时计算方式&#xff0c;最近开发的功能由于并发量不大&#xff0c;考虑到实现简洁的因素&#xff0c;决定采用库存占用记录实时计算…

后端之路第二站(正片)——SprintBoot之:设置请求接口

这一篇讲怎么简单结合模拟云接口&#xff0c;尝试简单的后端接接口、接受并传数据 一、下载Apifox接口文档软件 目前的企业都是采用前后端分离开发的&#xff0c;在开发阶段前后端需要统一发送请求的接口&#xff0c;前端也需要在等待后端把数据存到数据库之前&#xff0c;自己…

初始MyBatis ,详细步骤运行第一个MyBatis程序,同时对应步骤MyBatis底层剖析

1. 初始MyBatis &#xff0c;详细步骤运行第一个MyBatis程序&#xff0c;同时对应步骤MyBatis底层剖析 文章目录 1. 初始MyBatis &#xff0c;详细步骤运行第一个MyBatis程序&#xff0c;同时对应步骤MyBatis底层剖析每博一文案2. 前沿知识2.1 框架&#xff08;framework&#…

剪画小程序:3个方法:告诉你如何将普通的照片转换成动漫二次元风格!

Hello&#xff01;亲爱的小伙伴们&#xff01; 你是否还在纠结于自己的自拍太普通&#xff0c;每次分享到社交账号上都觉得平平无奇&#xff0c;引不起波澜&#xff1f; 假如&#xff0c;你和朋友们一起出去玩&#xff0c;大家都开心地拍着自拍。你看着自己的照片&#xff0c…

蓝桥杯-数三角(ac代码时间复杂度分析)

问题描述 小明在二维坐标系中放置了 ( n ) 个点&#xff0c;他想在其中选出一个包含三个点的子集&#xff0c;这三个点能组成三角形。然而这样的方案太多了&#xff0c;他决定只选择那些可以组成等腰三角形的方案。请帮他计算出一共有多少种选法可以组成等腰三角形&#xff1f…

WXML模板语法-事件绑定

一、 1.事件 事件是渲染层到逻辑层的通讯方式&#xff0c;通过事件可以将用户在渲染层产生的行为&#xff0c;反馈到逻辑层进行业务的处理 2.小程序中常用的事件 3.事件对象的属性列表 当事件回调触发的时候&#xff0c;会收到一个事件对象event&#xff0c;其属性为&#x…

在uni-app 插件市场下载 SKU 插件之后,引入项目报错问题

引入&#xff1a; git 提交报错&#xff1a; 原因&#xff1a;项目使用了 eslint 语法检查 解决&#xff1a;禁用 eslint 语法规则 在<script> 标签下面添加 /* eslint-disable */ 重新提交即可

【网络技术】【Kali Linux】Wireshark嗅探(十四)QUIC(快速UDP互联网连接)协议报文捕获及分析

往期 Kali Linux 上的 Wireshark 嗅探实验见博客&#xff1a; 【网络技术】【Kali Linux】Wireshark嗅探&#xff08;一&#xff09;ping 和 ICMP 【网络技术】【Kali Linux】Wireshark嗅探&#xff08;二&#xff09;TCP 协议 【网络技术】【Kali Linux】Wireshark嗅探&…

移动硬盘容量消失无法读取的解决方案

在数字化时代&#xff0c;数据的存储和备份变得尤为重要。移动硬盘作为一种便捷、大容量的存储设备&#xff0c;受到许多人的青睐。然而&#xff0c;有时我们可能会遭遇这样的问题&#xff1a;移动硬盘不显示容量且无法访问。这种情况无疑给我们的数据存储和管理带来了巨大的困…

uniapp移动端骨架屏流程

1.使用微信开发者工具来生成骨架屏&#xff1b;在分窗模式下选择页面信息&#xff0c;下拉选择生成骨架屏&#xff1b;他会基于当前页面生成骨架屏的样式 点击确定&#xff1b; 会自动生成这两个文件&#xff1b;一个是html结构文件&#xff0c;一个是css样式文件。 然后把这两…

黄石首家Pearson VUE国际认证考试中心落户湖北理工学院

Pearson VUE 作为 Pearson 集团的专门从事计算机化考试服务的公司&#xff0c;到目前为止&#xff0c;已在全世界165 个国家授权了 4400 多个考试中心以及超过 230 家 PVUE 自有考试中心&#xff0c;其中在中国的有三百多个授权考点和 4 个自有考试中心。Pearson VUE 以其技术和…