国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序

這篇具有很好參考價值的文章主要介紹了Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

作者:Alexander Wert,?Cesar Munoz

Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序

人們通過私人和專業(yè)的移動應(yīng)用程序在智能手機上處理越來越多的事情。 擁有成千上萬甚至數(shù)百萬的用戶,確保出色的性能和可靠性是移動應(yīng)用程序和相關(guān)后端服務(wù)的提供商和運營商面臨的主要挑戰(zhàn)。 了解移動應(yīng)用程序的行為、崩潰的發(fā)生和類型、響應(yīng)時間慢的根本原因以及后端問題對用戶的實際影響是管理移動應(yīng)用程序和相關(guān)后端服務(wù)性能的關(guān)鍵。

Elastic 推出了適用于 Android 應(yīng)用程序的應(yīng)用程序性能監(jiān)控 (APM) 代理,允許開發(fā)人員跟蹤其應(yīng)用程序的關(guān)鍵方面,從崩潰和 HTTP 請求到屏幕渲染時間和端到端分布式跟蹤。 所有這些都有助于解決移動應(yīng)用程序、相應(yīng)后端服務(wù)及其交互的問題和性能缺陷。 Elastic APM Android 代理會自動檢測你的應(yīng)用程序及其依賴項,因此你可以簡單地將代理 “即插即用” 到你的應(yīng)用程序中,而不必擔(dān)心對代碼庫進行太多更改。

Elastic APM Android 代理是在 OpenTelemetry 之上從頭開發(fā)的,OpenTelemetry 是一種開放標(biāo)準(zhǔn)和可觀察性框架。 開發(fā)人員將能夠充分利用其功能,以及龐大而活躍的社區(qū)提供的支持。 如果你熟悉 OpenTelemetry 并且你的應(yīng)用程序已經(jīng)使用 OpenTelemetry 進行檢測,那么你可以在切換到 Elastic APM Android Agent 時簡單地重用它。 但如果情況并非如此,請不要擔(dān)心 —— 代理被配置為自動處理常見的可追蹤場景,而無需深入研究 OpenTelemetry API 的細節(jié)。

[相關(guān)文章:添加免費和開放的 Elastic APM 作為 Elastic 可觀察性部署的一部分]

使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序

怎么運行的

Elastic APM Android Agent 是 SDK 和 Gradle 插件的組合。 SDK 包含實用程序,可讓你初始化和配置代理的行為,以及準(zhǔn)備和初始化 OpenTelemetry SDK。 你可以使用 SDK 以編程方式配置和初始化代理,特別是高級和特殊用例。

在大多數(shù)情況下,不需要編程配置和初始化。 相反,你可以使用提供的 Gradle 插件來配置代理并自動檢測你的應(yīng)用程序。 Gradle 插件在后臺使用 Byte Buddy 和官方 Android Gradle 插件 API,通過應(yīng)用程序及其依賴項類的編譯時轉(zhuǎn)換,自動將檢測代碼注入你的應(yīng)用程序。

在配置并啟用 Elastic Android APM 代理 Gradle 插件的情況下編譯你的應(yīng)用程序?qū)⑹鼓愕?Android 應(yīng)用程序在運行時報告跟蹤數(shù)據(jù)、指標(biāo)以及不同的事件和日志。

在 Android 應(yīng)用程序中使用 Elastic APM 代理

通過一個簡單的演示應(yīng)用程序,我們將按照 “設(shè)置代理” 指南中提到的步驟來設(shè)置 Elastic Android APM 代理。

先決條件

對于此示例,你將需要以下內(nèi)容:

  • 啟用了 APM 的 Elastic Stack(我們推薦使用 Elastic 的 Cloud 產(chǎn)品。免費試用。)
  • Java 11+
  • Android Studio
  • Android 模擬器、AVD 設(shè)備

你還需要一種方法將應(yīng)用程序的信號推送到 Elastic。 因此,你將需要 Elastic APM 的秘密令牌(secret token),稍后你將在我們的示例應(yīng)用程序中配置該令牌。

我們示例的測試項目

為了展示包括分布式跟蹤在內(nèi)的端到端場景,在此示例中,我們將檢測一個簡單的天氣應(yīng)用程序,該應(yīng)用程序包含兩個 Android UI 片段和一個基于 Spring Boot 的簡單本地后端服務(wù)。

第一個片段將有一個包含一些城市名稱的下拉列表以及一個將你帶到第二個片段的按鈕,你將在其中看到所選城市的當(dāng)前溫度。 如果你在第一個屏幕上選擇了一個非歐洲城市,那么當(dāng)你前往第二個屏幕時,你會從(本地)后端收到一個錯誤。 這是為了演示如何在 Elastic APM 中捕獲和關(guān)聯(lián)網(wǎng)絡(luò)和后端錯誤。

應(yīng)用 Elastic APM 代理插件

在下文中,我們將解釋從頭開始為 Android 應(yīng)用程序設(shè)置 Elastic APM Android 代理所需的所有步驟。 如果你想跳過這些說明并立即查看代理的運行情況,請使用該存儲庫的主分支并僅應(yīng)用步驟 (3.b),然后再繼續(xù)下一節(jié)(“設(shè)置本地后端服務(wù)”)。

1. 克隆示例應(yīng)用程序庫并在 Android Studio 中打開它。
2. 切換到 uninstrumented 的 repo 分支,從一個空白的、未檢測的 Android 應(yīng)用程序開始。 你可以運行此命令切換到未檢測的分支:

git checkout uninstrumented

3. 按照 Elastic APM Android Agent 的設(shè)置指南進行操作:

將 co.elastic.apm.android 插件添加到 app/build.gradle 文件(請確保使用該插件的最新版本,你可以在此處找到該插件)。

通過在 app/build.gradle 文件的 “elasticAPM” 部分中提供 “serverUrl” 和 “secretToken” 來配置代理與 Elastic APM 后端的連接。

// Android app's build.gradle file
plugins {
    //...
    id "co.elastic.apm.android" version "[latest_version]"
}

//...

elasticApm {
    // Minimal configuration
    serverUrl = "https://your.elastic.apm.endpoint"

    // Optional
    serviceName = "weather-sample-app" 
    serviceVersion = "0.0.1" 
    secretToken = "your Elastic APM secret token" 
}

4. 唯一實際需要更改的代碼是一行代碼,用于在 Application.onCreate 方法中初始化 Elastic APM Android 代理。 此示例應(yīng)用程序的應(yīng)用程序類位于 app/src/main/java/co/elastic/apm/android/sample/MyApp.kt。

package co.elastic.apm.android.sample

import android.app.Application
import co.elastic.apm.android.sdk.ElasticApmAgent

class MyApp : Application() {

    override fun onCreate() {
        super.onCreate()
        ElasticApmAgent.initialize(this)
    }
}

請記住,對于此示例,我們不會更改代理的默認配置 —— 如果你想了解有關(guān)如何更改的更多信息,請查看代理的運行時配置指南。

在啟動我們的 Android 天氣應(yīng)用程序之前,我們需要配置并啟動本地天氣后端服務(wù),如下一節(jié)所述。

設(shè)置本地后端服務(wù)

代理提供的關(guān)鍵功能之一是分布式跟蹤,它允許你查看 HTTP 事務(wù)的完整端到端故事,從我們的移動應(yīng)用程序開始并遍歷應(yīng)用程序使用的檢測后端服務(wù)。 Elastic APM 將以一個分布式跟蹤的形式向你展示全貌,這對于解決問題非常方便,尤其是與高延遲和后端錯誤相關(guān)的問題。

作為示例應(yīng)用程序的一部分,我們將啟動一個簡單的本地后端服務(wù)來處理我們應(yīng)用程序的 HTTP 請求。 后端服務(wù)使用 Elastic APM Java 代理進行檢測,以收集自己的 APM 數(shù)據(jù)并將其發(fā)送到 Elastic APM,使其能夠?qū)⒁苿咏换ヅc后端請求的處理相關(guān)聯(lián)。

為了配置本地服務(wù)器,我們需要在 backend/src/main/resources/elasticapm.properties 文件中設(shè)置我們的 Elastic APM 端點和秘密令牌(與上一步中我們的 Android 應(yīng)用程序使用的相同):

service_name=weather-backend
application_packages=co.elastic.apm.android.sample
server_url=YOUR_ELASTIC_APM_URL
secret_token=YOUR_ELASTIC_APM_SECRET_TOKEN

啟動演示

我們的示例應(yīng)用程序?qū)榇懋?dāng)前支持的框架獲得自動檢測,這意味著我們將看到屏幕渲染跨度以及開箱即用的 OkHttp 請求。 對于當(dāng)前不支持的框架,你可以應(yīng)用手動檢測來豐富你的 APM 數(shù)據(jù)(請參閱下面的 “手動檢測”)。

我們準(zhǔn)備啟動演示。 (該 demo 旨在使用 Android 模擬器在本地環(huán)境中執(zhí)行。)因此,我們需要:

  1. 在位于示例項目根目錄的終端中使用此命令啟動后端服務(wù):./gradlew bootRun(如果你使用的是 Windows,則為 gradlew.bat bootRun)。 或者,你可以從 Android Studio 啟動后端服務(wù)。
  2. 在 Android 模擬器(來自 Android Studio)中啟動天氣示例應(yīng)用程序。

一切運行后,我們需要在應(yīng)用程序中四處導(dǎo)航以生成一些我們希望在 Elastic APM 中觀察到的負載。 因此,選擇一個城市,單擊 “Next” 并重復(fù)多次。 請確保至少選擇 New York 一次。 你會看到天氣預(yù)報對紐約這個城市不起作用。 下面,我們將使用 Elastic APM 來找出選擇紐約時出現(xiàn)的問題。

Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序

初看 APM 結(jié)果

讓我們打開 Kibana 并導(dǎo)航到 Observability 解決方案。

在 Services 導(dǎo)航項下,你應(yīng)該看到兩個服務(wù)的列表:我們的 Android 應(yīng)用 weather-sample-app 和相應(yīng)的后端服務(wù) weather-backend。 單擊 Service map 選項卡以查看這些服務(wù)與任何外部服務(wù)之間依賴關(guān)系的可視化。

Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序

單擊 weather-sample-app 以深入了解 Android 應(yīng)用程序的儀表板。 移動應(yīng)用程序的服務(wù)視圖在發(fā)布此博文時處于技術(shù)預(yù)覽(technical preview)階段,但你已經(jīng)可以在該屏幕上看到有關(guān)該應(yīng)用程序的深入信息。 你會看到所選時間范圍內(nèi)的活動會話數(shù)量、weather-sample-app 發(fā)出的 HTTP 請求數(shù)量、請求的地理分布以及設(shè)備型號、操作系統(tǒng)版本、網(wǎng)絡(luò)連接類型和應(yīng)用程序的細分等信息 版本。 (有關(guān)崩潰和應(yīng)用程序加載時間的信息正在開發(fā)中。)

為了演示的目的,我們保持這個演示簡單,所以數(shù)據(jù)不那么多樣化,也相當(dāng)有限。 但是,當(dāng)你監(jiān)控使用次數(shù)較多且設(shè)備型號、操作系統(tǒng)版本等方面更加多樣化的移動應(yīng)用程序時,此類數(shù)據(jù)特別有用。當(dāng)你可以使用這些屬性進行過濾和分組你的 APM 數(shù)據(jù)時,故障排除和性能問題變得更加容易 。 你可以使用頂部的快速過濾器來執(zhí)行此操作,并查看指標(biāo)如何根據(jù)你的選擇被采用。

?Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序

現(xiàn)在,讓我們看看如何處理單個用戶交互,包括對后端服務(wù)的下游調(diào)用。 在 Transactions 選項卡(頂部)下,我們看到不同的端到端 transaction 組,包括 FirstFragment 和 SecondFragment 的兩個 transactions。

Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序

讓我們深入研究 SecondFragment - 查看出現(xiàn)的 transaction,以查看此 transaction 組的指標(biāo)(例如,延遲、吞吐量)以及單個用戶交互的調(diào)用瀑布視圖。 正如我們在下面的屏幕截圖中看到的,在視圖創(chuàng)建之后,該片段向 10.0.2.2 執(zhí)行 HTTP GET 請求,這需要大約 130 毫秒。 在同一個瀑布中,我們看到 HTTP 調(diào)用由 weather-backend 服務(wù)處理,它本身對 api.open-meteo.com 進行 HTTP 調(diào)用。

Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序

?現(xiàn)在,當(dāng)查看紐約被選為城市的請求的瀑布視圖時,我們看到后端服務(wù)發(fā)生錯誤,這解釋了為什么預(yù)測對 New York 不起作用。 通過單擊紅色的查看相關(guān)錯誤標(biāo)記,你將獲得錯誤的詳細信息和問題的實際根本原因。

天氣后端的異常消息指出 “This service can only retrieve geo locations for European cities!” 這就是選擇 New York 作為城市的問題。

Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序

手動檢測

如前所述,Elastic APM Android Agent 代表你為受支持的框架執(zhí)行一系列自動檢測; 但是,在某些情況下,你可能希望根據(jù)應(yīng)用的用例獲得額外的檢測。 對于這些情況,你已經(jīng)了解了 OpenTelemetry API,它是 Elastic APM Android 代理的基礎(chǔ)。 OpenTelemetry Java SDK 包含用于創(chuàng)建自定義 spans、 metrics 和 logs 的工具,并且由于它是 Elastic APM Android 代理的基礎(chǔ),因此你無需在項目中添加任何額外依賴項也無需配置任何內(nèi)容即可使用它及將你的自定義信號連接到你自己的 Elastic 環(huán)境,就像代理為你做的那樣。

開始的方法是像這樣獲取 OpenTelemetry 的實例:

OpenTelemetry openTelemetry = GlobalOpenTelemetry.get();

然后你可以按照 OpenTelemetry Java 文檔中的說明創(chuàng)建自定義信號。 有關(guān)創(chuàng)建自定義 span 的示例,請參見以下示例:

OpenTelemetry openTelemetry = GlobalOpenTelemetry.get();
Tracer tracer = openTelemetry.getTracer("instrumentation-library-name", "1.0.0");
Span span = tracer.spanBuilder("my span").startSpan();

// Make the span the current span
try (Scope ss = span.makeCurrent()) {
  // In this scope, the span is the current/active span
} finally {
    span.end();
}

結(jié)論

在這篇博文中,我們演示了如何使用 Elastic APM Android 代理在基于 Android 的移動應(yīng)用程序中實現(xiàn)端到端的可觀察性。 設(shè)置代理只需幾分鐘,所提供的見解可讓你分析應(yīng)用的性能及其對后端服務(wù)的依賴性。 有了 Elastic APM Android Agent,你可以利用 Elastic 豐富的 APM 功能以及各種可能性,通過自定義檢測和自定義儀表板來自定義你的分析工作流程。

你好奇嗎? 然后自己試試。 在 Elastic Cloud 上注冊免費試用,使用本博客中所述的 Elastic APM Android 代理豐富你的 Android 應(yīng)用程序,并探索 Elastic 的可觀察性解決方案中的數(shù)據(jù)。

原文:Monitoring Android applications with Elastic APM | Elastic Blog文章來源地址http://www.zghlxwxcb.cn/news/detail-412232.html

到了這里,關(guān)于Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Beats:使用 Filebeat 將 golang 應(yīng)用程序記錄到 Elasticsearch - 8.x

    Beats:使用 Filebeat 將 golang 應(yīng)用程序記錄到 Elasticsearch - 8.x

    毫無疑問,日志記錄是任何應(yīng)用程序最重要的方面之一。 當(dāng)事情出錯時(而且確實會出錯),我們需要知道發(fā)生了什么。 為了實現(xiàn)這一目標(biāo),我們可以設(shè)置 Filebeat 從我們的 golang 應(yīng)用程序收集日志,然后將它們發(fā)送到 Elasticsearch。 最后,使用 Kibana 我們可以可視化這些日志并

    2024年02月12日
    瀏覽(22)
  • 如何在Android設(shè)備上檢查應(yīng)用程序使用情況,包括使用時間

    如何在Android設(shè)備上檢查應(yīng)用程序使用情況,包括使用時間

    你可能不知道自己花了多少時間在手機上。很可能你一天中有一半的時間都在盯著手機屏幕。如果你懷疑這一事實,你會很快核實的。在這篇文章中,我們將向你介紹如何在Android設(shè)備上檢查應(yīng)用程序的使用情況。 你使用時間最長的應(yīng)用程序可能會消耗最多的電池。然而,有

    2024年02月07日
    瀏覽(22)
  • 在基于 Android 相機預(yù)覽的 CV 應(yīng)用程序中使用 OpenCL

    在基于 Android 相機預(yù)覽的 CV 應(yīng)用程序中使用 OpenCL

    組裝和配置 Android OpenCL SDK。 示例的 JNI 部分依賴于標(biāo)準(zhǔn) Khornos OpenCL 標(biāo)頭,以及 OpenCL 和 libOpenCL.so 的C++包裝器。標(biāo)準(zhǔn) OpenCL 標(biāo)頭可以從 OpenCV 存儲庫中的第三方目錄或 Linux 發(fā)行版包中復(fù)制。C++包裝器在Github上的官方Khronos存儲庫中可用。按以下方式將頭文件復(fù)制到專用目錄:

    2024年01月21日
    瀏覽(25)
  • 使用 CameraX 在 Jetpack Compose 中構(gòu)建相機 Android 應(yīng)用程序

    使用 CameraX 在 Jetpack Compose 中構(gòu)建相機 Android 應(yīng)用程序

    CameraX 是一個 Jetpack 庫,旨在幫助簡化相機應(yīng)用程序的開發(fā)。 [camerax官方文檔] https://developer.android.com/training/camerax CameraX的幾個用例: Image Capture Video Capture Preview Image analyze 具體如何使用相關(guān)用例,請查看上面的官方鏈接。 下面僅就視頻錄制用例來敘述相關(guān)實現(xiàn)流程。 添加

    2024年02月06日
    瀏覽(49)
  • Elasticsearch:使用在本地計算機上運行的 LLM 以及 Ollama 和 Langchain 構(gòu)建 RAG 應(yīng)用程序

    Elasticsearch:使用在本地計算機上運行的 LLM 以及 Ollama 和 Langchain 構(gòu)建 RAG 應(yīng)用程序

    無需 GPU 的隱私保護 LLM。在本博客中,我將演示使用不同的工具 Ollama 構(gòu)建的 RAG 應(yīng)用程序。 與本文相關(guān)的所有源代碼均已發(fā)布在 github上。 請克隆存儲庫以跟隨文章操作。我們可以通過如下的方式來克?。?Ollama 是一個輕量級且靈活的框架,專為在個人計算機上本地部署 LL

    2024年04月16日
    瀏覽(29)
  • 如何使用KoodousFinder搜索和分析Android應(yīng)用程序中的安全威脅

    如何使用KoodousFinder搜索和分析Android應(yīng)用程序中的安全威脅

    KoodousFinder是一款功能強大的Android應(yīng)用程序安全工具,在該工具的幫助下,廣大研究人員可以輕松對目標(biāo)Android應(yīng)用程序執(zhí)行安全研究和分析任務(wù),并尋找出目標(biāo)應(yīng)用程序中潛在的安全威脅和安全漏洞。 在使用該工具之前,我們首選需要訪問該工具的【開發(fā)者門戶】創(chuàng)建一個

    2024年02月13日
    瀏覽(25)
  • android excludeFromRecents將activity在最近的使用的應(yīng)用程序列表中不顯示

    excludeFromRecents 是Android應(yīng)用程序清單文件(AndroidManifest.xml)中的一個屬性,用于控制應(yīng)用程序是否在最近使用的應(yīng)用程序列表中顯示。通過將 excludeFromRecents 屬性設(shè)置為 true ,可以將應(yīng)用程序從最近使用的應(yīng)用程序列表中排除。 以下是將應(yīng)用程序排除在最近使用的應(yīng)用程序列

    2024年02月15日
    瀏覽(20)
  • Android應(yīng)用程序中使用 Gemini Pro AI開發(fā)——2年工作經(jīng)驗如何淘汰10年工作經(jīng)驗的Android開發(fā)?

    Android應(yīng)用程序中使用 Gemini Pro AI開發(fā)——2年工作經(jīng)驗如何淘汰10年工作經(jīng)驗的Android開發(fā)?

    上周,谷歌推出了最強大的基礎(chǔ)模型 Gemini 。 Gemini 是多模式的AI——它可以接受文本和圖像輸入。 谷歌為 Android 開發(fā)者引入了一種在設(shè)備上,利用最小模型Gemini Nano的方法。此功能可通過 AICore 在部分設(shè)備上使用,這是一項處理模型管理、運行時、安全功能等的系統(tǒng)服務(wù),可

    2024年01月18日
    瀏覽(27)
  • Web 應(yīng)用程序綜合監(jiān)控

    Web 應(yīng)用程序綜合監(jiān)控

    模擬用戶通過 Web 應(yīng)用程序的旅程并對其進行監(jiān)控以檢測任何增加延遲的元素的過程被廣泛稱為綜合監(jiān)控或綜合測試。 為了確保最終用戶的無縫體驗,綜合性能監(jiān)控勢在必行。監(jiān)視綜合事務(wù)以幫助您了解用戶如何與 Web 應(yīng)用程序交互,并確保其中關(guān)鍵元素的功能。 綜合監(jiān)測通

    2024年02月11日
    瀏覽(21)
  • Elasticsearch:在 Java 客戶端應(yīng)用中管理索引 - Elastic Stack 8.x

    管理索引是客戶端應(yīng)用常用的一些動作,比如我們創(chuàng)建,刪除,打開 及關(guān)閉索引等操作。在今天的文章中,我將描述如何在 Java 客戶端應(yīng)用中對索引進行管理。 我們需要閱讀之前的文章 “Elasticsearch:在 Java 客戶端中使用 truststore 來創(chuàng)建 HTTPS 連接”。在那篇文章中,我們詳

    2023年04月09日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包