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: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 错误率

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLM大模型的7种推理框架分析

LLM的7种推理框架 Hugging Face的transformers 这是一个Python库,可以简化本地运行LLM的过程。 Transformers的优点: 自动模型下载提供代码片段非常适合实验和学习 Transformers的缺点: 需要对ML和NLP有深入了解需要编码和配置技能 2.L…

探寻最强性能云电脑:ToDesk云电脑、无影云、网易云游戏、易腾云横测大比拼

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

Linux基础(二):环境搭建

本文准备从0开始,一步步搭建一套属于自己的Linux系统环境,这将是后续学Linux、用Linux、Linux环境编程、应用和项目部署、工具实验等一系列学习和实践的基石,希望对小伙伴们有帮助。提前备好Linux编程实验环境非常重要,建议人手一…

齐护K210系列教程(三十一)_视觉小车

视觉小车 齐护编程小车端程序动作说明联系我们 在经常做小车任务项目时会用的K210的视觉与巡线或其它动作结合,这就关系到要将K210的识别结果传送给小车的主控制器,K210为辅助传感器(视觉采集)。 这节课我们用K210识别图像&#x…

加速度传感器的冲击振动的原始特征与解算(部分)

这里是工作中测得的一组数据,设备有多个加速度传感器通道,我们可以看到冲击振动发生前后,各个振动传感器的的反馈以及其他的细化特征: 1.随机振动(加速度传感器视角) 2.冲击振动(加速度&#x…

不平衡数据研究:分配权重 合并2个loader

分配权重(基于实例分配,基于类分配) import numpy as np import torch from torch.utils.data import DataLoader, WeightedRandomSampler, Dataset# Mock dataset class class MockDataset(Dataset):def __init__(self, data, targets):sel…

“AIGC行业投资时机分析:评估当前市场发展阶段与未来需求趋势“

文章目录 每日一句正能量前言行业前景当前发展前景相关领域的发展趋势行业潜力竞争情况结论 市场需求人才需求情况机会挑战结论 选择与规划自我评估行业调研职业规划风险管理个人陈述示例 后记 每日一句正能量 胖了就减,没钱就赚,不会就学,不…

上位机图像处理和嵌入式模块部署(mcu中的串口接口)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在mcu开发中,mcu扮演着非常重要的角色。一方面,串口可以帮助我们对固件功能进行调试,另外一方面,串…

申请表填写错误?河南道路与桥梁乙级资质申请表填写技巧

在填写河南道路与桥梁乙级资质申请表时,为了避免错误并确保申请顺利进行,以下是一些填写技巧: 仔细阅读申请指南: 在填写申请表之前,务必仔细阅读相关的申请指南或说明文件。这些文件会详细解释每个填写项的要求和目的…

【Linux系列】软链接使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【耕地保卫战:揭秘“占补平衡”】守护粮仓的智慧策略

嗨,各位小伙伴们,今天咱们来聊聊一个与我们每日餐桌紧密相关的主题——耕地占补平衡。在现代化的车轮滚滚向前时,如何在发展与保护之间找到那个微妙的平衡点,确保我们的“米袋子”满满当当呢?这就不得不提到耕地占补平…

PY32F系列32位单片机 特殊引脚复用说明

一 、 PY32F030 系 列 , 包 括 PY32F030 、PY32F003、 PY32F002A、 XL32F003 的特殊引脚使用说明。 1、晶振引脚的复用,使用 HSE/LSE 引脚作为 GPIO 功能引脚时,只要没有配置相关功能的情况下,正常配置 GPIO 功能即可。 其中&am…

法那科机器人M-900iA维修主要思路

发那科工业机器人是当今制造业中常用的自动化设备之一,而示教器是发那科机器人操作和维护的重要组成部分。 一、FANUC机械手示教器故障分类 1. 硬件故障 硬件故障通常是指发那科机器人M-900iA示教器本身的硬件问题,如屏幕损坏、按键失灵、电源故障等。 2…

纹理映射技术在AI去衣中的艺术与科技融合

引言: 在数字图像处理的世界里,AI去衣技术正逐步揭开其神秘的面纱。这门技术结合了深度学习的智能算法与图形学的先进手段,以实现对图像中衣物的智能识别与处理。在这一过程中,纹理映射技术发挥着至关重要的作用。本篇博客将深入探…

OpenHarmony实战开发——网络组件axios可以在OpenHarmony上使用了

什么是axios 上古浏览器页面在向服务器请求数据时,因为返回的是整个页面的数据,页面都会强制刷新一下,这对于用户来讲并不是很友好。并且我们只是需要修改页面的部分数据,但是从服务器端发送的却是整个页面的数据,十分…

Vision Mamba代码笔记

1 论文回顾 基本思路 论文解读见: 《VideoMamba》论文笔记_video mamba-CSDN博客 注意 Vision Mamba和VIT的输入和输出的shape的形状是相同的(VIT基于Transformer的Encoder设计,输入经过多层MHA和MLP计算,输入和输出的形状相同…

构建传统企业信息化数字化智能化技术架构:挑战与机遇

随着数字化和智能化技术的快速发展,传统企业在信息化转型过程中面临着前所未有的机遇和挑战。如何构建适应企业需求的信息化数字化智能化技术架构,成为企业发展的关键之一。本文将探讨传统企业信息化数字化智能化技术架构的设计与实践。 一、数字化转型的…

阿里云Linux 3.2104 LTS 64位安装SVN服务器

直接按步骤 yum install subversion 写y就行 主要是看看安装了那些文件 rpm -ql subversion 主要是为了创建版本库而准备,这个能一遍创建就一遍创建,不行就逐个创建。能创就忽略下面两个mkdir步骤。 mkdir /home/svn/groupRepos 根据新建目录作为版本…

Windows 10x64 IoT Enterprise LTSC 2021

打KB5036892补丁,升级版本19044.4291,打简体中文补丁包,系统后续升级需要升级英文补丁,需要重新打中文补丁包,系统禁用升级。禁用打印机服务,需要安装打印机的自行打开服务Print Spooler。 链接&#xff1a…

Docker-制作镜像的两种方式=》基于容器制作基于Dockerfile制作

本文主要是基于Docker如何制作一个Java镜像,而一个Java镜像想要运行需要系统环境,JDK。所以我们要先有一个系统环境,本文使用的是centos7,JDK选择版本是8,而我使用的Java程序是一个简易的springBoot项目,你…