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.pswp.cn/bicheng/14799.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14799.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14799.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【LinuxC語言】一切皆文件的理念

文章目錄 引言一、什么是“一切皆文件”?1. 文件柜的類比2. 統一的操作方式3. 舉個具體例子4. 設備文件5. 進程和網絡連接6. 簡化管理 二、這一設計的優勢1. 統一接口2. 靈活性3. 簡化了系統管理4. 增強了系統安全性 結論 引言 Linux 操作系統以其獨特的設計理念和…

如何使用JMeter 進行全鏈路壓測

使用 JMeter 進行全鏈路壓測:詳細步驟指南 全鏈路壓測旨在測試整個系統的性能,包括所有的組件和服務。通過 Apache JMeter 進行全鏈路壓測,可以模擬真實用戶行為,測試系統在高負載下的表現。以下是詳細的步驟指南,分為…

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;//狀態二維數組…

怎樣解決Redis高并發競爭Key難點?

Redis作為一種高性能的鍵值存儲系統&#xff0c;在現代分布式系統中發揮著重要作用。然而&#xff0c;高并發場景下對同一Key的操作可能引發競爭條件&#xff0c;給系統穩定性和數據一致性帶來挑戰。本文將探討如何解決這一問題&#xff0c;為讀者提供有效的應對策略。 1. Red…

【002】FlexBison實現原理

0. 前言 Flex和Bison是用于構建處理結構化輸入的程序的工具。它們最初是用于構建編譯器的工具&#xff0c;但它們已被證明在許多其他領域都很有用。 &#xfeff; 在第一章中&#xff0c;我們將首先看一點(但不是太多)它們背后的理論&#xff0c;然后我們將深入研究一些使用它…

Mysql和Postgresql創建用戶和授權命令

Mysql和Postgresql創建用戶和授權命令 MySQL/MariaDB/TiDB mysql -uroot -P3306 -p 輸入密碼&#xff1a;xxx create user user1% identified by xxx; grant all privileges on *.* to user1%; create user user2% identified by xxx; grant all privileges on *.* to user2%;…

Winform /C# 截圖當前窗體,指定區域,當前屏幕

1.當前窗體 public static Image CaptureControl(Control ctrl){System.Drawing.Bitmap bmp new System.Drawing.Bitmap(ctrl.Width, ctrl.Height);ctrl.DrawToBitmap(bmp, new Rectangle(0, 0, ctrl.Width, ctrl.Height));return bmp;}private void DownLoad(){string filePa…

java類中運行main方法時報錯:找不到或無法加載主類 XXX

運行main類報了這個錯 錯誤: 找不到或無法加載主類 XXX 經過好一番查證才找出了問題所在 原因是 maven項目的provided導致的&#xff0c;現在記錄一下。 將pom.xml中標注provided的注釋掉&#xff0c;就不報錯了。

ERROR [internal] load metadata for docker.io/library/node:20-alpine

docker編譯時報錯&#xff0c;除標題外&#xff0c;還報如下信息 ERROR: failed to solve: node:20-alpine: failed to resolve source metadata for docker.io/library/node:20-alpine: failed to do request: Head "https://registry-1.docker.io/v2/library/node/mani…

常用個人信息

目錄 常用聯系方式我的自動思維常用媒體專業相關康米相關黑歷史 常用聯系方式 QQ&#xff1a;2868679921 微信&#xff1a;Commieee 郵箱&#xff1a;sharvefoxmail.com 我的自動思維 常用媒體 嗶哩嗶哩 專業相關 博客 康米相關 QQ&#xff1a;1203361015 黑歷史 貼吧…

PyQt5學習系列之QMetaObject.connectSlotsByName

文章目錄 前言一、pandas是什么&#xff1f;二、使用步驟 1.引入庫2.讀入數據總結 學習記錄 QMetaObject.connectSlotsByName——自動將信號連接到槽&#xff08;函數&#xff09; 例如&#xff1a; from PyQt5.QtWidgets import QMainWindow, QPushButton from PyQt5.QtCore…

哪些類型的產品適合用3D形式展示?

隨著3D技術的蓬勃發展&#xff0c;眾多品牌和企業紛紛投身3D數字化浪潮&#xff0c;將產品打造成逼真的3D模型進行展示&#xff0c;消費者可以更加直觀地了解產品的特點和優勢&#xff0c;從而做出更明智的購買決策。 哪些產品適合3D交互展示&#xff1f; 產品3D交互展示具有直…

2024系統架構師--- 希賽模擬答案知識點

案例第一題&#xff1a; MVC架構包含&#xff1a;視圖、控制器、模型&#xff1b; 視圖&#xff08;View&#xff09;&#xff1a;視圖是用戶看到并與之交互的界面。視圖面向用戶顯示相關的數據&#xff0c;并能接收用戶的輸入數據&#xff0c;但是它并不能進行任何實際的業務…

深入探索微軟Edge:領略新一代瀏覽器的無限可能

深入探索微軟Edge&#xff1a;領略新一代瀏覽器的無限可能 在當今數字化時代&#xff0c;網絡瀏覽器已經成為我們日常生活中不可或缺的一部分。而隨著技術的不斷進步&#xff0c;瀏覽器的功能和性能也在不斷提升。微軟Edge作為微軟推出的全新一代瀏覽器&#xff0c;引領著瀏覽…

自己手寫一個字符串【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…