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

news2024/11/15 8:01:37

一、概述

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:environment
      option_name: DD_APM_INSTRUMENTATION_ENABLED
      value: "host"
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: DD_APM_INSTRUMENTATION_LANGUAGES
      value: "java"
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: DD_APM_INSTRUMENTATION_OUTPUT_PATHS
      value: "file:///tmp/host_injection.log"
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: DD_APPSEC_ENABLED
      value: "true"
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: DD_CONFIG_SOURCES
      value: "BASIC"
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: DD_ENV
      value: "apipro"
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: DD_PROFILING_ENABLED
      value: "true"
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: DD_SERVICE
      value: "RydeApiPro"
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: DD_SYSTEM_PROBE_PROCESS_SERVICE_INFERENCE_ENABLED
      value: "true"
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: DD_VERSION
      value: "1.0"

files:

  "/datakit_install_script.sh":
    mode: "000755"
    owner: root
    group: root
    source: https://static.guance.com/datakit/install.sh

container_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.coloradmin.cn/o/1696332.html

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

相关文章

仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码

码名称:仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码 开发环境:帝国cms7.5 空间支持:phpmysql 仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码自动采集 - 我爱模板网源码名称:仿《Q极速体育》NBACBA体育直…

【机器学习与大模型】驱动下的应用图像识别与处理

摘要: 本文深入探讨了机器学习在图像识别与处理领域的应用,特别是在大模型的推动下所取得的巨大进展。详细阐述了图像识别与处理的基本原理、关键技术,以及机器学习算法和大模型如何提升其性能和准确性。通过实际案例分析了其在多个领域的广泛…

大模型分布式训练并行技术分享

目前业内解决大模型问题,基本以多节点、分布式方案为主。分布式方案具体的实施时,又分为数据并行、参数并行、流水线并行等,针对具体的业务场景采取合适的并行方案方可带来更高的效率。 后续结合业内主流的分布式框架,具体介绍各种…

网络编程的基础知识(适合新手)

网络编程 在Java中,网络编程是指使用Java语言进行网络通信的编程技术。这种技术使得位于不同地理位置的计算机能够通过网络进行通信,实现资源共享和信息传递。 一、定义 Java网络编程是Java语言在网络通信方面的应用,它利用Java提供的网络…

[图解]产品经理-竞赛题解析:阿布思考法和EA

1 00:00:00,410 --> 00:00:02,330 今天我们来说一道 2 00:00:02,610 --> 00:00:04,690 前些天出的一道竞赛题 3 00:00:07,250 --> 00:00:09,310 怎么样用阿布思考法 4 00:00:09,320 --> 00:00:10,540 来改进EA 5 00:00:11,690 --> 00:00:12,620 题目是这样的…

APP安全测试汇总【网络安全】

APP安全测试汇总 一.安装包签名和证书 1.问题说明 检测 APP 移动客户端是否经过了正确签名,通过检测签名,可以检测出安装包在签名后是否被修改过。如 果 APP 使⽤了 debug 进⾏证书签名,那么 APP 中⼀部分 signature 级别的权限控制就会失效…

MTK下载AP

只升级选Firemare Upgrade ,点下载后,关机下插入USB

刷代码随想录有感(79):回溯算法——N皇后问题

题干: 代码&#xff1a; class Solution { public:vector<vector<string>> res;void backtracking(vector<string>& chessboard, int n, int row){if(row n){res.push_back(chessboard);return;}for(int col 0; col < n; col){if(isvalid(chessboa…

从0开始学统计-卡方检验

1.什么是卡方检验&#xff1f; 卡方检验是一种用于检验观察频数与期望频数之间差异的统计方法。它通常用于分析分类变量之间的关联性或独立性。在卡方检验中&#xff0c;我们将观察到的频数与期望频数进行比较&#xff0c;从而确定它们之间的差异是否显著。 卡方检验的基本思…

【Linux】-Redis安装部署[15]

目录 简介 安装 1、配置EPEL仓库 2、安装redis 3、启动redis 4、放行防火墙&#xff0c;redis使用端口6379 5、进入redis服务 简介 redis是一个开源、使用C语言编写的、支持网络互交的、可基于内存也可持久化的Key-Value数据库。redis的特点就是&#xff1a;快&#xf…

IDEA快速生成类注释和方法注释的方法

1.生成类、接口、枚举、注解等文件的注释&#xff0c;不仅仅是class 2.生成方法注释的 可在方法上方空行输入/** 按enter键快速生成。生成的样式如下&#xff1a; PS:生成的返回值带一堆英文文字说明&#xff0c;感觉没必要 如果想生成比较全面的方法注释&#xff0c;如作者&…

【Codesys】-执行第三方程序,或Windows脚本

该记录旨在解决RTE作为第一个Windows的一个exe程序不能调用其他程序的问题。 可以实现:在PLC界面打开第三方程序、在PLC界面关闭本机Windows操作系统 首先添加依赖库-SysProcess,3.5.17.0 然后在程序里执行相应的指令&#xff0c;该指令可以被Windows识别为类似于执行Bat文件…

听说京东618裁员?所以日常准备很重要呀

文末有最少必要的面试题&#xff0c;还准备了离线 PDF 版本。 京东也要向市场输送人才了? 这几天看到技术群里不少朋友在讨论京东裁员相关的信息。 我去看了下京东近期的操作&#xff0c;京东内部考勤调整和午休时间缩短&#xff0c;以及强化打卡机制等管理调整&#xff1b;有…

基于图卷积网络的人体3D网格分割

深度学习在 2D 视觉识别任务上取得了巨大成功。十年前被认为极其困难的图像分类和分割等任务&#xff0c;现在可以通过具有类似人类性能的神经网络来解决。这一成功归功于卷积神经网络 (CNN)&#xff0c;它取代了手工制作的描述符。 NSDT工具推荐&#xff1a; Three.js AI纹理开…

监控服务器性能指标,提升服务器性能

服务器是网络中最关键的组件之一&#xff0c;混合网络架构中的每个关键活动都以某种方式与服务器操作相关&#xff0c;服务器不仅是现代计算操作的支柱&#xff0c;也是网络通信的关键。 从发送电子邮件到访问数据库和托管应用程序&#xff0c;服务器的可靠性和性能直接影响到…

Cobaltstrike框架介绍

Cobaltstrike简介 cobalt strike&#xff08;简称CS&#xff09;是一款团队作战渗透测试神器&#xff0c;分为客户端及服务端&#xff0c;一个服务端可以对应多个客户 端&#xff0c;一个客户端可以连接多个服务端&#xff0c;可被团队进行分布式协团操作. 和MSF关系 metas…

嵌入式全栈开发学习笔记---C语言笔试复习大全23

目录 联合体 联合体的定义 联合体的长度 如果来判断设备的字节序&#xff1f; 如何把大端数据转换成小端数据&#xff1f; 枚举 枚举的定义 上一篇复习了结构体&#xff0c;这一节复习联合体和枚举。 说明&#xff1a;我们学过单片机的一般都是有C语言基础的了&#xff…

酷黑简洁大气体育直播自适应模板赛事直播门户网站源码

源码名称&#xff1a;酷黑简洁大气体育直播自适应模板赛事直播门户网站源码 开发环境&#xff1a;帝国cms 7.5 安装环境&#xff1a;phpmysql 支持PC与手机端同步生成html&#xff08;多端同步生成插件&#xff09; 带软件采集&#xff0c;可以挂着自动采集发布&#xff0c;无…

【JTS Topology Suite】Java对二维几何进行平移、缩放、旋转等坐标变换

JTS介绍 Github项目地址&#xff1a;https://github.com/locationtech/jts Maven库地址&#xff1a;https://mvnrepository.com/artifact/org.locationtech.jts JTS Topology Suite是一个用于创建和操作二维矢量几何的Java库。 JTS有对应的.NET版本NetTopologySuite库&…

PyQt6--Python桌面开发(34.QStatusBar状态栏控件)

QStatusBar状态栏控件 self.statusBar.showMessage(q.text()菜单选项被点击了,5000)