赞
踩
Amazon Web Services (AWS) 包含一百多种服务,每项服务都针对一个功能领域。服务的多样性可让您灵活地管理 AWS 基础设施,然而,判断应使用哪些服务以及如何进行预配置可能会非常困难。借助 Elastic Beanstalk,可以在 AWS 云中快速部署和管理应用程序,而不必了解运行这些应用程序的基础设施。Elastic Beanstalk 可降低管理的复杂性,但不会影响选择或控制。只需上传应用程序,Elastic Beanstalk 将自动处理有关容量预配置、负载均衡、扩展和应用程序运行状况监控的部署细节。
观测云全面支持在 AWS Elastic Beanstalk 上的可观测能力,提供包括对基础资源的监控、应用程序链路跟踪等。文章将介绍在该环境上如何接入 APM,如何安装 datakit 等最佳实践。
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 资源。除配置您的环境的元数据和更新行为外,还可以通过为配置选项提供值对这些资源进行自定义,可以通过配置项的方式,对黑盒子的环境进行自定义配置,解决两个痛点:
修改后,Trace 上报逻辑如下:
- # .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"

在观测云-基础设施可以看到服务器运行状态,表示安装完成。
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。- # .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'
在观测云-应用性能监测,可以看到服务链路上报,表示成功。
当完成上面所述的配置,并在 AWS 上成功启动任务后,我们就可以通过观测云全面监控 AWS 中的服务运行情况。使用效果说明如下:
针对主机系统主机层面的监控,帮助快速查看所有主机的健康和资源使用状况,可以以蜂窝图、时序图等多种形式进行展现,同时可以查看所有主机对应的进程,及时发现问题,第一时间定位并解决问题。
在链路查看器,您可以通过点击任意链路查看对应的链路详情,包括当前链路发生的相对时间、持续时间、HTTP 方法、HTTP URL 、HTTP 状态码、TraceId、火焰图、Span 列表、服务调用关系以及关联的日志、主机、指标、网络等等。
火焰图可清晰展示整条链路中每个 Span 的流转和执行时间。您可以在火焰图右侧查看对应的服务列表及响应时间。点击火焰图的 Span,在链路详情可查看对应的 Json 内容,通过鼠标滚轴缩放可查看具体 Span 信息。
观测云根据您采集的数据,为您提供默认的应用性能概览视图,在应用性能监测 > 概览中,您可以查看:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。