Monitoring .NET 及 .NET Core 型應用程式

在您安裝 Instana 代理程式之後,會自動部署並安裝 .NET 感應器。 在您為環境設定 .Net 及 .NET Core 追蹤之後,您可以在 Instana 使用者介面中檢視與 .NET 及 .Net Core 型應用程式相關的度量值。

如果您要尋找如何使用 .NET 感應器來監視 .Net Framework 的相關資訊,請參閱 監視 .NET Framework

支援的資訊

支援的作業系統

支援 Linux® 及 Windows ® 來監視 .NET 及 .NET Core 型應用程式。

支援的 Windows 及 Linux 作業系統與 Windows 代理程式需求Linux 代理程式需求相同。

支援的執行時期

Instana 支援監視在下列 .Net 執行時期上執行的應用程式:

  • .NET Core 2.0 以及更新版本
  • .Net 5.0 以及更新版本

附註: .NET 是指建議所有新開發的 .NET 實作: 。本文件不使用 .NET 5 (及 .NET Core) 以及更新版本。.NET 及 .NET Core 命名慣例。 相反地,會使用新的 .NET 命名慣例來取得一致性。

執行時期 可用性
.NET Core Runtime> = 2.0,> = 3.0 GA 版
.NET Core 執行時期> = 5.0 GA 版

支援追蹤的程式庫及架構

HTTP-伺服器 版本
ASP.NET Core 1.0.4、 1.1.7、 2.0.1、 2.2.0,以及作為系統程式庫的所有 .NET 或 .NET Core 版本
ServiceStack 5.11.0 和 6.10.0
HTTP-用戶端 版本
HttpClient 所有 .NET 或 .NET Core 版本作為系統程式庫及 4.3.4
HttpWeb要求 所有 .Net 或 .NET Core 版本作為系統程式庫
資料庫 版本
ADO 驅動程式
Aerospike 3.8.0、 3.9.4-3.9.16.2及 4.0.0-4.1.0
Cassandra 3.4.0 和 3.7.0
Couchbase 3.2.4、 3.4.8及 3.4.10
ElasticSearch 7.13.1
Redis 服務堆疊 5.0.0
Redis Stack Exchange 1.2.6、 2.0.519及 2.1.28
PostgreSQL (NpgSql) 5.0.4、 5.0.5-5.0.16、 6.0.0、 6.0.1、 6.0.2、 6.0.3、 6.0.4、 6.0.5、 6.0.6、 6.0.7、 6.0.8、 6.0.9、 7.0.0、 7.0.1、 7.0.2及 7.0.4
Azure Cosmos 用戶端 3.1.1、 3.3.1、 3.4.1、 3.5.1、 3.6.0、 3.7.0-3.13.0、 3.15.0、 3.15.1、 3.16.0、 3.17.0、 3.17.1、 3.18.0、 3.19.0、 3.20.0、 3.20.1、 3.21.0、 3.22.0、 3.22.1、 3.23.0、 3.24.0、 3.25.0、 3.26.0、 3.26.1、 3.26.2、 3.27.0、 3.27.1、 3.27.2、 3.28.0、 3.29.0、 3.30.0、 3.30.1、 3.31.0、 3.31.1、 3.31.2、 3.32.3、 3.33.0、 3.35.0、 3.35.0、 3.35.1、 3.35.2及 3.35.3
Azure DocumentDB 核心 2.5.1 和 2.9.0
MongoDB 2.4.4、 2.10.3、 2.11.3、 2.12.5、 2.13.3、 2.14.1、 2.15.1、 2.16.1、 2.17.1、 2.18.0及 2.19.2-2.21.0
Google Cloud Storage 3.3.0 和 4.6.0
AWSSDK.DynamoDBv2 3.7.0、 3.7.0.20及 3.7.201.7
IBM DB2 (Windows) 3.1.0.400、 3.1.0.500及 3.1.0.600
IBM DB2 (Linux) 3.1.0.500
AWS S3 3.7.0.28 和 3.7.203.11
Memcached 2.16.0
傳訊 版本
Azure Queue Storage 12.8.0 和 12.15.0
RabbitMQ 5.2.0、 6.2.2、 6.2.3、 6.2.4、 6.3.0、 6.3.1、 6.4.0及 6.5.0
gRPC 2.31.0 和 2.57.0
Google Cloud PubSub 2.1.0
Confluent Kafka 1.5.3、 1.6.2、 1.6.3、 1.7.0、 1.8.0、 1.8.1、 1.8.2、 1.9.0、 1.9.2、 1.9.3、 2.0.2、 2.1.0、 2.1.1及 2.2.0
AWSSDK.SQS 3.7.0 和 3.7.200.37
AWSSDK.SimpleNotificationService 3.7.1.10 和 3.7.200.36
記載 版本
ILogger 型日誌解決方案 2.0.0、 3.0.0、 3.1.0、 5.0.0、 6.0.0及 7.0.0
NLog 4.5.11、 4.7.10、 5.0.1、 5.1.1及 5.2.4
服務 2.8.0、 2.9.0、 2.10.0、 2.11.0、 2.12.0、 3.0.0及 3.0.1
無伺服器 版本
Azure 函數 5.0.1
Amazon.Lambda.Core 2.1.0 和 2.2.0

若要防止為層次低於所配置層次的日誌建立跨距,請將環境變數 INSTANA_LOG_LEVEL_CAPTURE 設為 WARN*ERROROFF (停用)。 預設值為 WARN

ORM 版本
實體架構 2.0.0、 3.0.0及 5.0.0
排程器/作業-管理 版本
Hangfire 1.7.19 和 1.8.5

收集度量值

度量值集合僅在 Windows 上受支援。

追蹤配置 度量值
名稱 GC 活動
版本 記憶體用量
引數 執行緒鎖定
競用
異常狀況

性能簽章

對於每個感應器,會根據送入的度量值持續評估性能簽章,並根據使用者影響來使用性能簽章來提出問題或發生事件。

內建事件 會根據實體上的性能簽章失敗來觸發問題或突發事件,而 自訂事件 會根據任何給定實體的個別度量值臨界值來觸發問題或突發事件。

如需 .NET 感應器內建事件的相關資訊,請參閱 內建事件參照

設定 .NET 追蹤

下列各節涵蓋為您的環境設定 .NET 追蹤。

在 Linux

Instana 支援擷取在 Linux上執行之 .NET 應用程式的度量值。 若要讓 Instana 擷取在 Linux上執行之 .Net 應用程式的度量值,請使用 Instana.Tracing.Core nuget-package 1.1.34 或更新版本來部署應用程式。

您可以使用相同的套件進行追蹤。

請確定已新增套件,且已發佈應用程式。 若要讓應用程式向執行中代理程式報告度量值,請設定下列環境變數:

DOTNET_STARTUP_HOOKS=[path-to-your-app]/Instana.Tracing.Core.dll

設定 DOTNET_STARTUP_HOOKS 環境變數之後,請在應用程式中尋找下列輸出:

INSTANA Agent for .NET Core applications installed. Running on 3.1.1

版本字串會根據您正在執行的 .NET 版本而有所不同。

啟用 .NET 追蹤

在延伸主動檢測並追蹤任何應用程式之前,請提供 .NET 載入側寫元件所需的環境設定。 如果主機已啟用感應器及追蹤,請將 Instana 追蹤的 NuGet 套件新增至應用程式,並設定適當的環境變數。

Instana 支援非自行包含 .NET 應用程式。 自行包含應用程式需要 Instana.Tracing.Core NuGet-package 1.1.34 或更新版本。 指定下列環境變數:

DOTNET_STARTUP_HOOKS=[path-to-your-app]/Instana.Tracing.Core.dll

對在 Kubernetes 上執行的應用程式啟用追蹤

Instana AutoTrace WebHook 是 Kubernetes 轉換 WebHook 許可控制器的實作,它會在整個 Kubernetes 叢集中自動設定使用 Instana 監視 .NET 應用程式所需的一切。

如果 Instana AutoTrace WebHook 安裝在 Kubernetes 叢集上,則會針對在那些叢集裡執行的 .NET 應用程式自動啟用追蹤。

如果 .NET 應用程式及 Instana 代理程式由 Kubernetes管理,請參閱 Kubernetes 網路存取 ,以取得必要配置的相關資訊。

對 Linux 上執行的應用程式啟用追蹤

對於在 Linux 上執行的應用程式 ( Alpine Linux除外) ,請安裝 Instana.Tracing.Core.Rewriter.Linux 套件。 您可以在發佈之前將套件新增至專案或新增套件。 在啟動程序之前,請提供環境變數給您的程序,如下列範例所示:

DOTNET_STARTUP_HOOKS=[path-to-your-app]/Instana.Tracing.Core.dll
CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={cf0d821e-299b-5307-a3d8-b283c03916dd}
CORECLR_PROFILER_PATH=[Path_to_your_app]/instana_tracing/CoreProfiler.so

如果您的應用程式在儲存器內執行,請定義環境,讓程序在執行時期聯絡 Instana 代理程式:

INSTANA_AGENT_HOST=[address_where_the_agents_listens_and_is_reachable_from_inside_the_container]
INSTANA_AGENT_PORT=42699 (or any other port of configured differently)

對 Alpine Linux 上執行的應用程式啟用追蹤

安裝 Instana.Tracing.Core.Rewriter.Alpine 套件。 您可以在發佈之前將套件新增至專案或新增套件。 然後,在啟動處理程序之前,將環境變數提供給處理程序,如下列範例所示:

DOTNET_STARTUP_HOOKS=[path-to-your-app]/Instana.Tracing.Core.dll
CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={cf0d821e-299b-5307-a3d8-b283c03916dd}
CORECLR_PROFILER_PATH=[Path_to_your_app]/instana_tracing/CoreProfiler.so

如果您的應用程式是在儲存器中執行,請定義環境,讓程序在執行時期聯絡 Instana 代理程式:

INSTANA_AGENT_HOST=[address_where_the_agents_listens_and_is_reachable_from_inside_the_container]
INSTANA_AGENT_PORT=42699 (or any other port of configured differently)

對在 Windows 上執行的應用程式啟用追蹤

安裝 Instana.Tracing.Core.Rewriter.Windows 套件。 您可以在發佈之前將套件新增至專案或新增套件。

啟用處理程序的追蹤

安裝套件之後,請先提供環境變數給程序,然後再啟動程序,如下列範例所示:

CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={FA8F1DFF-0B62-4F84-887F-ECAC69A65DD3}
CORECLR_PROFILER_PATH_64=[Path_to_your_app]/instana_tracing/CoreRewriter_x64.dll
CORECLR_PROFILER_PATH_32=[Path_to_your_app]/instana_tracing/CoreRewriter_x86.dll

對 Windows 服務啟用追蹤

如果您是執行 Windows-Services,則也可以根據每個服務,將這些設定放入登錄中,這可讓您更妥善地控制選擇要追蹤的服務。

移至 HKLM\System\CurrentControlSet\Services\<ServiceName> 目錄中的「登錄編輯器」,並新增 MULTI_SZ 作為 Environment的值。 如果 Environment 不存在,則將變數 CORECLR_ENABLE_PROFILING=1CORECLR_PROFILER={FA8F1DFF-0B62-4F84-887F-ECAC69A65DD3} 複製到檔案中。

若要設定 MULTI_SZ 值的內容,請每行輸入一個鍵值組,如下列範例所示:

CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={FA8F1DFF-0B62-4F84-887F-ECAC69A65DD3}

在您輸入最後一行之後,按 Enter 鍵。

對 IIS 管理的應用程式啟用追蹤

當透過 IIS管理應用程式時,最佳作法是在應用程式的 web.config 檔中,以下列格式設定環境變數:

<aspNetCore ...>
  <environmentVariables>
    <environmentVariable name="CORECLR_ENABLE_PROFILING" value="1" />
    <environmentVariable name="CORECLR_PROFILER" value="{FA8F1DFF-0B62-4F84-887F-ECAC69A65DD3}" />
    <environmentVariable name="CORECLR_PROFILER_PATH_64" value="[Path_to_your_app]/instana_tracing/CoreRewriter_x64.dll" />
    <environmentVariable name="CORECLR_PROFILER_PATH_32" value="[Path_to_your_app]/instana_tracing/CoreRewriter_x32.dll" />
    <environmentVariable name="DOTNET_STARTUP_HOOKS" value="[Path_to_your_app]/Instana.Tracing.Core.dll" />
  </environmentVariables>
</aspNetCore>

在 Cloud Foundry

附註: 僅當 Instana 代理程式在 Cloud Foundry 基礎的 Diego Cell 上執行時,此區段才適用。 如需設定 Instana 代理程式及相關 Cloud Foundry 或 Pivotal Platform 功能的相關資訊,請參閱 Cloud Foundry 及 Pivotal Platform 文件。

在 Cloud Foundry上,若要監視 非自行包含 .NET 應用程式,請遵循下列步驟:

  • 若要將 Instana NuGet 套件新增至 Cloud Foundry 應用程式,請執行下列指令:

    dotnet add myproject.csproj package Instana.Tracing.Core.Rewriter.Linux
    
  • 若要準備要發佈的 .NET 應用程式,請執行下列指令:

    dotnet publish -c Release
    
  • 若要使用 Release以外的 configuration ,請將下列環境變數新增至應用程式資訊清單:

    ---
    applications:
    - name: <application_name>
      path: bin/Release/netcoreapp2.1/publish/
      env:
        DOTNET_STARTUP_HOOKS:[path-to-your-app]/Instana.Tracing.Core.dll
        CORECLR_ENABLE_PROFILING: 1
        CORECLR_PROFILER: "{cf0d821e-299b-5307-a3d8-b283c03916dd}"
        CORECLR_PROFILER_PATH: "/home/vcap/app/instana_tracing/CoreProfiler.so"
        LD_LIBRARY_PATH: "/home/vcap/app/instana_tracing"
    

    附註: 視使用的 .NET SDK 以及透過 -c 旗標 (範例中的Release ) 傳遞至 dotnet publish -c Release 指令的配置名稱而定, path 變數的值可能會變更。

  • 若要推送 Cloud Foundry 應用程式,請執行下列指令:

    cf push
    

    附註: 上述指令假設應用程式的 manifest.mf 檔案位於您執行 cf push 指令的相同資料夾中。

如需如何搭配使用 cf push 指令與資訊清單檔的相關資訊,請參閱 使用應用程式資訊清單部署

在儲存器上啟用追蹤

對於在儲存器上執行的應用程式及服務,除了環境設定之外,還需要其他步驟才能進行追蹤。

適用於 Linux 儲存器的 IL-rewriter 及 Instrumentation 程式庫

新增 nuget-package ,並確保新增環境變數以連接至代理程式。

設定容器以進行自動追蹤

下列範例顯示 Docker 檔:

### your docker-image and application-build/-publish here

# set CoreCLR tracing environment variables
ENV DOTNET_STARTUP_HOOKS=/app/Instana.Tracing.Core.dll
ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER={cf0d821e-299b-5307-a3d8-b283c03916dd}
ENV CORECLR_PROFILER_PATH=/app/instana_tracing/CoreProfiler.so

# provide agent-endpoint
ENV INSTANA_AGENT_HOST=host_or_other_container_name_or_ip
ENV INSTANA_AGENT_PORT=42699
ENTRYPOINT ["dotnet", "YourApp.dll","some","parameters"]

啟用 AutoProfile™

對於 .NET 使用者, AutoProfile™ 僅適用於在 Linux上執行的 .NET 應用程式。 若要啟用 AutoProfile™,請將下列設定新增至代理程式的 configuration.yml 檔案:

com.instana.plugin.netcore: 
  profiling: 
    enabled: true

如需相關資訊,請參閱 Instana AutoProfile™ 文件。

停用 .NET 追蹤

若要停用 .NET 應用程式的追蹤,請將配置檔變更回其起始狀態,或將對應的旗標設為 false

下列範例顯示具有 .NET 追蹤 disabled.: 的configuration.yamlconfiguration.yaml 已停用 .NET 追蹤*

# netcore Tracing
com.instana.plugin.netcore:
  tracing:
    enabled: false

重新啟動代理程式,讓配置變更生效。

由於「側寫 API」運作方式的本質,在代理程式中停用追蹤並不會從啟用追蹤時所啟動的處理程序 (例如,工作者處理程序) 移除或分離側寫程式。 若要確定側寫程式未載入至應用程式,請重新啟動主機處理程序。

配置 Kafka 追蹤相關性標頭

您可以配置 .NET 追蹤器與 INSTANA_KAFKA_HEADER_FORMAT 環境變數搭配使用之 Kafka 追蹤相關性標頭的格式。 有效值為 binarystringboth。 請勿使用 INSTANA_KAFKA_TRACE_CORRELATION=false完全停用 Kafka 追蹤相關性。

另一個替代方案是在 Instana 主機代理程式層次配置 Kafka 追蹤相關性選項。

如需相關資訊,請參閱 Kafka 標頭移轉

Open Telemetry Integration

Instana 提供其他 。與 OpenTelemetry整合的 NET 元件。

疑難排解

有時您的設定一開始可能無法運作。 如果此疑難排解區段未回答您的問題,請聯絡支援中心。

未定義環境變數

監視問題類型: netcore_env_var_not_defined

未在 .NET 處理程序上設定一個以上啟動 Instana .NET 追蹤所需的環境變數。 如需使用 Instana 來追蹤 .NET 應用程式的環境變數及值清單,請參閱 追蹤如何運作 一節。

環境變數包含無效值

監視問題類型: netcore_env_var_invalid_value

針對啟動 Instana .NET 追蹤所需的一或多個環境變數設定了不正確的值。 視遺漏的環境變數而定,您只能在 .NET 應用程式的 Instana 儀表板中看到部分度量值,但無法看到追蹤資料。 如需使用 Instana 來追蹤 .NET 應用程式所需的環境變數及值,請參閱 追蹤如何運作

如果有另一個 APM 工具存在,則環境變數可能包含錯誤值。 在連結至 .NET 執行時期方面,各種 APM 工具使用類似的機制。 如果 Instana 偵測到另一個 APM 工具,則 Instana 使用者介面中會顯示錯誤訊息。

若要讓 Instana 追蹤 .NET 應用程式,請關閉其他 APM 代理程式。 若要關閉 APM 工具,請參閱 APM 工具的文件。

感應器未連接

監視問題類型: netcore_sensor_not_connected

如果 Instana 主機代理程式未收到來自 .NET 處理程序的確認通知,指出它已使用 Instana 進行檢測,請檢查是否發生下列錯誤:

主機代理程式可能偵測不到任何原因。

若要對問題進行疑難排解,請完成下列步驟:

  1. 驗證是否已安裝追蹤程式。
  2. 請驗證追蹤程式是否可以連接至主機代理程式。

驗證是否已安裝追蹤程式

請檢查應用程式日誌中的下列項目:

Error getting agent-info, make sure the agent is running and reachable:One or more errors occurred. (Connection refused)

這一行指出追蹤程式已安裝且在執行中。 您可以看到數個具有下列文字的項目:

Process Announcement:One or more errors occurred. (Connection refused)

如果您在範例中看不到含有文字的項目,請確定符合下列必要條件:

  • 在主機代理程式的 configuration.yaml 檔中啟用 .NET 追蹤。
  • 遵循 追蹤 文件中的所有必要步驟。

如果 .NET 應用程式在 Kubernetes上執行,請嘗試 Instana AutoTrace WebHook,這會自動且透通地將 .NET 檢測新增至 Pod。

如果您無法使用列出的其他疑難排解步驟來修正問題,請嘗試下列提示來解決網路問題:

驗證追蹤程式可以連接至主機代理程式

如果已安裝 .NET 追蹤程式,請驗證 .NET 處理程序可以連接至埠 42699 上相同主機上的主機代理程式。 如需網路可見性的相關資訊,請參閱 Instana 主機代理程式的 網路需求

在儲存器化平台中,應用程式儲存器與 Instana 主機代理程式之間可能會發生網路可見性問題。 由於部分套版網路設定,應用程式的儲存器可能無法連接至相同主機上的 Instana 代理程式儲存器。

.NET 追蹤程式可能使用錯誤的 IP 位址或 DNS 名稱來與 Instana 代理程式進行通訊。 您可以使用 INSTANA_AGENT_HOST 環境變數,將 .NET 追蹤程式設為使用特定的網址。

在某些情況下,如果您已設定網路,則問題可能不是與網址相關,但問題可能與追蹤程式所使用的埠相關。

如果主機代理程式在 42699 以外的其他埠上接聽,請使用 INSTANA_AGENT_PORT 環境變數重新對映追蹤程式的埠。

如果您無法對問題進行疑難排解,請開啟 支援案例

檢查 IL-Rewriter

當 IL-Rewriter 載入應用程式時,它會將三條性質線寫入應用程式的輸出。 如果您遇到問題,請檢查您是否可以在應用程式日誌中看到下列行:

Initializing Instana IL-Rewriter for .NET Core
Logging path is not set
Loading configuration-file /app/instana_tracing/instrumentation.json

視您的設定而定,路徑可能有所不同,但這些行應該位於應用程式輸出的最開頭 (因為執行時期會在實際應用程式之前載入「重新編寫程式」)

如果這些行未出現:

* make sure all of the CORECLR environment-variables are available for your application

已知問題

Application Insights for ASP.NET Core 及 Instana .NET Core 監視

由於 Application Insights for ASP.NET Core,當 Instana .NET Core 監視平行執行時,您在 Application Insights 上可能面臨資料不足。 如果您想要平行使用 Application Insights 和 Instana ,您必須停用 Instana 注入 W3C 標頭,以停用 W3C 追蹤環境定義延伸。 若要停用注入 W3C 標頭,請設定環境變數 INSTANA_W3C_DISABLE_INJECT_HEADERS=1