共用方式為


設定選項:適用於 Java 的 Azure 監視器 Application Insights

本文說明如何設定適用於 Java 的 Azure 監視器 Application Insights。

連接字串和角色名稱

連接字串和角色名稱是開始使用所需的最常見設定:

{
  "connectionString": "...",
  "role": {
    "name": "my cloud role name"
  }
}

需要連接字串。 每當您將不同應用程式的資料傳送到相同的 Application Insights 資源時,角色名稱就很重要。

下列各章節有更多詳細資訊和設定選項。

設定檔路徑

根據預設,Application Insights Java 3.x 預期設定檔名為 applicationinsights.json,且位於與 applicationinsights-agent-3.6.2.jar 相同的目錄中。

您可以使用下列兩個選項之一來指定自己的設定檔路徑:

  • APPLICATIONINSIGHTS_CONFIGURATION_FILE 環境變數
  • applicationinsights.configuration.file Java 系統屬性

如果您指定相對路徑,它會相對於 applicationinsights-agent-3.6.2.jar 所在的目錄進行解析。

或者,您可以透過環境變數 APPLICATIONINSIGHTS_CONFIGURATION_CONTENT 來指定 JSON 設定的完整內容,而不是使用設定檔。

Connection string

需要連接字串。 您可以在 Application Insights 資源中找到連接字串。

螢幕擷取畫面:Application Insights 連接字串。

{
  "connectionString": "..."
}

您也可以使用環境變數 APPLICATIONINSIGHTS_CONNECTION_STRING 來設定連接字串。 然後,它的優先順序會高於 JSON 設定中指定的連接字串。

或者,您可以使用 JAVA 系統屬性 applicationinsights.connection.string 來設定連接字串。 它的優先順序也會高於 JSON 設定中指定的連接字串。

您也可以指定要從中載入連接字串的檔案來設定連接字串。

如果您指定相對路徑,它會相對於 applicationinsights-agent-3.6.2.jar 所在的目錄進行解析。

{
  "connectionString": "${file:connection-string-file.txt}"
}

此檔案應該只包含連接字串而已。

未設定連接字串將會停用 Java 代理程式。

如果您在相同的 Java 虛擬機器 (JVM) 中部署了多個應用程式,並想要將遙測傳送至不同的連接字串,請參閱連接字串覆寫 (預覽)

雲端角色名稱

雲端角色名稱是用來標記應用程式對應上的元件。

如果您想要設定雲端角色名稱:

{
  "role": {   
    "name": "my cloud role name"
  }
}

如果未設定雲端角色名稱,則會使用 Application Insights 資源的名稱來標記應用程式對應上的元件。

您也可以使用環境變數 APPLICATIONINSIGHTS_ROLE_NAME 來設定雲端角色名稱。 然後,它的優先順序會高於 JSON 設定中指定的雲端角色名稱。

或者,您可以使用 JAVA 系統屬性 applicationinsights.role.name 來設定雲端角色名稱。 它的優先順序也會高於 JSON 設定中指定的雲端角色名稱。

如果您在相同的 JVM 中部署了多個應用程式,並且要使其將遙測傳送至不同的雲端角色名稱,請參閱雲端角色名稱覆寫 (預覽)

雲端角色執行個體

雲端角色執行個體預設為電腦名稱。

如果您想要將雲端角色執行個體設定為電腦名稱以外的項目:

{
  "role": {
    "name": "my cloud role name",
    "instance": "my cloud role instance"
  }
}

您也可以使用環境變數 APPLICATIONINSIGHTS_ROLE_INSTANCE 來設定雲端角色執行個體。 然後,它的優先順序會高於 JSON 設定中指定的雲端角色執行個體。

或者,您可以使用 JAVA 系統屬性 applicationinsights.role.instance 來設定雲端角色執行個體。 它的優先順序也會高於 JSON 設定中指定的雲端角色執行個體。

取樣

注意

取樣可能是降低 Application Insights 成本的絕佳方式。 請務必為使用案例適當地設定取樣設定。

取樣是以要求為基礎,這表示若擷取要求 (取樣),則也會擷取其相依性、記錄與例外狀況。

取樣是以追蹤識別碼為基礎,以協助確保不同服務之間的一致取樣決策。

取樣僅適用於要求內的記錄。 預設一律會收集不在要求內的記錄 (例如啟動記錄)。 如果您要取樣這些記錄,您可以使用 取樣覆寫

速率限制取樣

自 3.4.0 版本起,即可使用速率限制取樣,且目前為預設值。

若未設定取樣,則現在的預設為速率限制取樣,設定為每秒最多擷取 (大約) 五個要求,以及這些要求的所有相依性和記錄。

此設定會取代先前的預設值 (擷取所有要求)。 若您仍想要擷取所有要求,請使用固定百分比取樣,並將取樣百分比設定為 100。

注意

速率限制取樣為近似值,因為內部必須隨著時間調整「固定」取樣百分比,才能在每個遙測記錄上發出精確的項目計數。 速率限制取樣在內部經過微調後,可快速 (0.1 秒) 適應新的應用程式負載。 因此,您應該不會看到它超過設定的速率太多或時間太久。

此範例會說明如何設定取樣才能每秒最多擷取 (大約) 一個要求:

{
  "sampling": {
    "requestsPerSecond": 1.0
  }
}

requestsPerSecond 可以是小數點,因此若有需要,您可以將其設定為每秒擷取少於一個請求。 例如,0.5 值表示每隔 2 秒最多擷取一個要求。

您也可以使用環境變數 APPLICATIONINSIGHTS_SAMPLING_REQUESTS_PER_SECOND 來設定取樣百分比。 然後,它的優先順序會高於 JSON 設定中指定的速率限制。

固定百分比取樣

此範例說明如何設定取樣以擷取所有要求的大約三分之一:

{
  "sampling": {
    "percentage": 33.333
  }
}

您也可以使用環境變數 APPLICATIONINSIGHTS_SAMPLING_PERCENTAGE 來設定取樣百分比。 然後,它的優先順序會高於 JSON 設定中指定的取樣百分比。

注意

針對取樣百分比,選擇接近 100/N 的百分比,其中 N 是整數。 目前,取樣並不支援其他值。

取樣覆寫

取樣覆寫可讓您覆寫預設取樣百分比。 例如,您可以:

  • 將取樣百分比設定為 0 (或某些較小的值) 來進行雜訊健康情況檢查。
  • 將取樣百分比設定為 0 (或某些較小的值) 來進行雜訊相依性呼叫。
  • 針對重要的要求類型,將取樣百分比設定為 100。 例如,即使您已將預設取樣設定為較低的值,也可以使用 /login

如需詳細資訊,請參閱取樣覆寫文件。

Java 管理延伸模組計量

如果您要收集一些其他 Java 管理延伸模組 (JMX) 計量:

{
  "jmxMetrics": [
    {
      "name": "JVM uptime (millis)",
      "objectName": "java.lang:type=Runtime",
      "attribute": "Uptime"
    },
    {
      "name": "MetaSpace Used",
      "objectName": "java.lang:type=MemoryPool,name=Metaspace",
      "attribute": "Usage.used"
    }
  ]
}

在上述設定範例中:

  • name 是將指派給此 JMX 計量的計量名稱 (可以是任何值)。
  • objectName 是您想要收集之 JMX MBean物件名稱。 支援萬用字元星號 (*)。
  • attribute 是您想要收集之 JMX MBean 中的屬性名稱。

支援數值和布林值 JMX 計量值。 布林值 JMX 計量會對應至 0 (表示 false) 和 1 (表示 true)。

如需詳細資訊,請參閱 JMX 計量文件。

自訂維度

如果您想要將自訂維度新增至所有遙測:

{
  "customDimensions": {
    "mytag": "my value",
    "anothertag": "${ANOTHER_VALUE}"
  }
}

您可以在啟動時使用 ${...} 從指定的環境變數讀取值。

注意

從 3.0.2 版開始,如果您新增名為 service.version 的自訂維度,該值會儲存在 Application Insights 記錄資料表的 application_Version 資料行中,而不是自訂維度。

繼承的屬性 (預覽)

從 3.2.0 版開始,您可以在您的要求遙測上以程式設計方式設定自訂維度。 它會確保依相依性和記錄遙測的繼承。 會在該要求的內容中擷取全部。

{
  "preview": {
    "inheritedAttributes": [
      {
        "key": "mycustomer",
        "type": "string"
      }
    ]
  }
}

然後,在各個要求開始時,呼叫:

Span.current().setAttribute("mycustomer", "xyz");

請亦參閲: 將自訂屬性新增至範圍

連接字串覆寫 (預覽)

從 3.4.0 版本開始,這項功能處於預覽狀態。

連接字串覆寫可讓您覆寫預設連接字串。 例如,您可以:

  • 針對一個 HTTP 路徑前置詞 /myapp1,設定一個連接字串。
  • 針對另一個 HTTP 路徑前置詞 /myapp2/,設定另一個連接字串。
{
  "preview": {
    "connectionStringOverrides": [
      {
        "httpPathPrefix": "/myapp1",
        "connectionString": "..."
      },
      {
        "httpPathPrefix": "/myapp2",
        "connectionString": "..."
      }
    ]
  }
}

雲端角色名稱覆寫 (預覽)

從 3.3.0 開始,這項功能處於預覽狀態。

雲端角色名稱覆寫可讓您覆寫預設雲端角色名稱。 例如,您可以:

  • 針對一個 HTTP 路徑前置詞 /myapp1,設定一個雲端角色名稱。
  • 針對另一個 HTTP 路徑前置詞 /myapp2/,設定另一個雲端角色名稱。
{
  "preview": {
    "roleNameOverrides": [
      {
        "httpPathPrefix": "/myapp1",
        "roleName": "Role A"
      },
      {
        "httpPathPrefix": "/myapp2",
        "roleName": "Role B"
      }
    ]
  }
}

在執行階段設定的連接字串

從 3.4.8 版開始,如果您需要能夠在執行階段設定連接字串,請將此屬性新增至您的 JSON 設定:

{
  "connectionStringConfiguredAtRuntime": true
}

applicationinsights-core 新增至您的應用程式:

<dependency>
  <groupId>com.microsoft.azure</groupId>
  <artifactId>applicationinsights-core</artifactId>
  <version></version>
</dependency>

在類別 com.microsoft.applicationinsights.connectionstring.ConnectionString 中使用靜態 configure(String) 方法。

注意

在設定連接字串之前擷取的任何遙測都會卸除,因此最好盡早在應用程式啟動時進行設定。

自動收集 InProc 相依性 (預覽)

從 3.2.0 版開始,如果您想要擷取控制器 "InProc" 相依性,請使用下列設定:

{
  "preview": {
    "captureControllerSpans": true
  }
}

瀏覽器 SDK 載入器 (預覽)

此功能會自動將 瀏覽器 SDK 載入器 插入應用程式的 HTML 頁面中,包括設定適當的連接字串。

例如,當您的 Java 應用程式傳回如下的回應時:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Title</title>
  </head>
  <body>
  </body>
</html>

它會自動修改以傳回:

<!DOCTYPE html>
<html lang="en">
  <head>
    <script type="text/javascript">
    !function(v,y,T){var S=v.location,k="script"
    <!-- Removed for brevity -->
    connectionString: "YOUR_CONNECTION_STRING"
    <!-- Removed for brevity --> }});
    </script>
    <title>Title</title>
  </head>
  <body>
  </body>
</html>

此指令碼旨在協助客戶追蹤 Web 使用者資料,並將收集伺服器端遙測傳回使用者的 Azure 入口網站。 如需詳細資訊,請參閱 ApplicationInsights-JS

如果您要啟用此功能,請新增下列設定選項:

{
  "preview": {
    "browserSdkLoader": {
      "enabled": true
    }
  }
}

遙測處理器 (預覽版)

您可以使用遙測處理器以設定將套用至要求、相依性和追蹤遙測的規則。 例如,您可以:

  • 遮罩敏感性資料。
  • 有條件地新增自訂維度。
  • 更新 Azure 入口網站中用來彙總類似遙測資料的範圍名稱。
  • 卸除特定的範圍屬性,以控制擷取成本。

如需詳細資訊,請參閱遙測處理器文件。

注意

如果您要卸除特定 (整個) 範圍以控制擷取成本,請參閱取樣覆寫

自訂檢測 (預覽)

從 3.3.1 版開始,您可以為應用程式中的方法擷取範圍:

{
  "preview": {
    "customInstrumentation": [
      {
        "className": "my.package.MyClass",
        "methodName": "myMethod"
      }
    ]
  }
}

在本機停用擷取取樣 (預覽)

根據預設,當 Java 代理程式中的有效取樣百分比為 100%,且您的 Application Insights 資源上已設定擷取取樣時,則會套用擷取取樣百分比。

請注意,此行為既適用於 100% 的固定速率取樣,當要求速率未超過速率限制時,此行為也適用於有速率限制的取樣 (在持續滑動時間視窗期間,會有效擷取 100%)。

從 3.5.3 開始,您可以停用此行為 (即使您的 Application Insights 資源上已設定擷取取樣時,仍會在這些情況下保留 100% 的遙測):

{
  "preview": {
    "sampling": {
      "ingestionSamplingEnabled": false
    }
  }
}

自動收集的記錄

系統會自動檢測 Log4j、Logback、JBoss Logging 和 java.util.logging。 系統會自動收集透過這些記錄架構執行的記錄。

只有在下列情況才會擷取記錄:

  • 符合記錄架構的已設定層級。
  • 也符合 Application Insights 的已設定層級。

例如,如果您的記錄架構設定為從套件 com.example 記錄 WARN (而且設定方式如先前所述),且 Application Insights 設定為擷取 INFO (且設定方式如所述),則 Application Insights 只會從套件 com.example 擷取 WARN (以及更嚴重的項目)。

針對 Application Insights 設定的預設等級為 INFO。 如果您想要變更此層級:

{
  "instrumentation": {
    "logging": {
      "level": "WARN"
    }
  }
}

您也可以使用環境變數 APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL 來設定層級。 然後,它的優先順序會高於 JSON 設定中指定的層級。

您可以使用這些有效的 level 值在 applicationinsights.json 檔案中指定。 下表顯示這些值如何對應至不同記錄架構中的記錄層級。

層級 Log4j Logback JBoss 7 月
OFF OFF OFF OFF OFF
FATAL FATAL 錯誤 FATAL SEVERE
ERROR (或 SEVERE) 錯誤 錯誤 錯誤 SEVERE
WARN (或 WARNING) WARN WARN WARN 警告
INFO INFO INFO INFO INFO
CONFIG 偵錯 偵錯 偵錯 CONFIG
DEBUG (或 FINE) 偵錯 偵錯 偵錯 FINE
FINER 偵錯 偵錯 偵錯 FINER
TRACE (或 FINEST) TRACE TRACE TRACE FINEST
ALL ALL ALL ALL ALL

注意

如果例外狀況物件傳遞至記錄器,則記錄訊息 (和例外狀況物件詳細資料) 會顯示在 exceptions 資料表底下的 Azure 入口網站 (而不是 traces 資料表)。 若您想要同時查看 tracesexceptions 資料表的記錄訊息,可以撰寫記錄 (Kusto) 查詢加以聯集。 例如:

union traces, (exceptions | extend message = outerMessage)
| project timestamp, message, itemType

記錄標記 (預覽)

自 3.4.2 開始,您可以擷取 Logback 和 Log4j 2 的記錄標記:

{
  "preview": {
    "captureLogbackMarker":  true,
    "captureLog4jMarker":  true
  }
}

Logback 的其他記錄屬性 (預覽)

自 3.4.3 開始,您可以擷取 Logback 的 FileNameClassNameMethodNameLineNumber

{
  "preview": {
    "captureLogbackCodeAttributes": true
  }
}

警告

擷取程式碼屬性可能會增加效能額外負荷。

作為自訂維度的記錄層級

自 3.3.0 版起,根據預設,LoggingLevel 不會擷取為追蹤自訂維度的一部分,因為該資料已在 SeverityLevel 欄位中進行擷取。

如有需要,您可以暫時重新啟用先前的行為:

{
  "preview": {
    "captureLoggingLevelAsCustomDimension": true
  }
}

自動收集的 Micrometer 計量 (包括 Spring Boot 傳動器計量)

如果您的應用程式使用 Micrometer,則會自動收集傳送至 Micrometer 全域登錄的計量。

此外,如果您的應用程式使用 Spring Boot 傳動器,則也會自動收集 Spring Boot 傳動器所設定的計量。

使用 Micrometer 傳送自訂計量

  1. 將 Micrometer 新增至您的應用程式,如下列範例所示。

    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-core</artifactId>
      <version>1.6.1</version>
    </dependency>
    
  2. 使用 Micrometer 全域登錄來建立計量,如下列範例所示。

    static final Counter counter = Metrics.counter("test.counter");
    
  3. 使用計數器來記錄計量,方法是使用下列命令。

    counter.increment();
    
  4. 計量與 customDimensions 資料行中所擷取的標記會內嵌至 customMetrics 資料表。 您也可以在 計量總管Log-based metrics 計量命名空間下檢視計量。

    注意

    Application Insights Java 會以底線取代 Micrometer 計量名稱中的所有非英數字元 (虛線除外)。 因此,上述 test.counter 計量會顯示為 test_counter

若要停用自動收集的 Micrometer 計量和 Spring Boot 傳動器計量:

注意

自訂計量會個別計費,而且可能會產生額外的成本。 請務必檢查定價資訊。 若要停用 Micrometer 和 Spring Boot 傳動器計量,請將下列設定新增至設定檔。

{
  "instrumentation": {
    "micrometer": {
      "enabled": false
    }
  }
}

Java 資料庫連線查詢遮罩

Java 資料庫連線 (JDBC) 查詢中的常值預設會遮罩,以避免意外擷取敏感性資料。

自 3.4.0 版本起,可以停用此行為。 例如:

{
  "instrumentation": {
    "jdbc": {
      "masking": {
        "enabled": false
      }
    }
  }
}

Mongo 查詢遮罩

Mongo 查詢中的常值預設會遮罩,以避免意外擷取敏感性資料。

自 3.4.0 版本起,可以停用此行為。 例如:

{
  "instrumentation": {
    "mongo": {
      "masking": {
        "enabled": false
      }
    }
  }
}

HTTP 標頭

從 3.3.0 版開始,您可以在伺服器 (要求) 遙測上擷取要求和回應標頭:

{
  "preview": {
    "captureHttpServerHeaders": {
      "requestHeaders": [
        "My-Header-A"
      ],
      "responseHeaders": [
        "My-Header-B"
      ]
    }
  }
}

標頭名稱區分大小寫。

會在屬性名稱 http.request.header.my_header_ahttp.response.header.my_header_b 下擷取上述範例。

同樣地,您可以在用戶端 (相依性) 遙測上擷取要求和回應標頭:

{
  "preview": {
    "captureHttpClientHeaders": {
      "requestHeaders": [
        "My-Header-C"
      ],
      "responseHeaders": [
        "My-Header-D"
      ]
    }
  }
}

同樣地,標頭名稱區分大小寫。 會在屬性名稱 http.request.header.my_header_chttp.response.header.my_header_d 下擷取上述範例。

HTTP 伺服器 4xx 回應碼

根據預設,產生 4xx 回應碼的 HTTP 伺服器要求會擷取為錯誤。

自 3.3.0 版開始,您可以變更此行為,以將其擷取為成功:

{
  "preview": {
    "captureHttpServer4xxAsError": false
  }
}

隱藏特定自動收集的遙測

從 3.0.3 版開始,可以使用下列設定選項來隱藏特定的自動收集遙測:

{
  "instrumentation": {
    "azureSdk": {
      "enabled": false
    },
    "cassandra": {
      "enabled": false
    },
    "jdbc": {
      "enabled": false
    },
    "jms": {
      "enabled": false
    },
    "kafka": {
      "enabled": false
    },
    "logging": {
      "enabled": false
    },
    "micrometer": {
      "enabled": false
    },
    "mongo": {
      "enabled": false
    },
    "quartz": {
      "enabled": false
    },
    "rabbitmq": {
      "enabled": false
    },
    "redis": {
      "enabled": false
    },
    "springScheduling": {
      "enabled": false
    }
  }
}

您也可以將這些環境變數設定為 false 來隱藏這些檢測:

  • APPLICATIONINSIGHTS_INSTRUMENTATION_AZURE_SDK_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_CASSANDRA_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_JDBC_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_JMS_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_KAFKA_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_MICROMETER_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_MONGO_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_RABBITMQ_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_REDIS_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_SPRING_SCHEDULING_ENABLED

然後,這些變數的優先順序會高於 JSON 設定中指定的已啟用變數。

注意

如果您要尋找更精細的控制,例如,若要隱藏一些 redis 呼叫 (但並非所有 Redis 呼叫),請參閱取樣覆寫

預覽檢測

自 3.2.0 版開始,可以啟用下列預覽檢測:

{
  "preview": {
    "instrumentation": {
      "akka": {
        "enabled": true
      },
      "apacheCamel": {
        "enabled": true
      },
      "grizzly": {
        "enabled": true
      },
      "ktor": {
        "enabled": true
      },
      "play": {
        "enabled": true
      },
      "r2dbc": {
        "enabled": true
      },
      "springIntegration": {
        "enabled": true
      },
      "vertx": {
        "enabled": true
      }
    }
  }
}

注意

自 3.2.2 版開始,可以取得 Akka 檢測。 自 3.3.0 版開始,可以取得 Vertx HTTP 程式庫檢測。

計量間隔

根據預設,計量會每隔 60 秒擷取一次。

從 3.0.3 版開始,您可以變更此間隔:

{
  "metricIntervalSeconds": 300
}

從 3.4.9 GA 開始,您也可以使用環境變數 APPLICATIONINSIGHTS_METRIC_INTERVAL_SECONDS 來設定 metricIntervalSeconds。 然後,它的優先順序會高於 JSON 設定中指定的metricIntervalSeconds

此設定適用於下列計量:

活動訊號

根據預設,Application Insights Java 3.x 每隔 15 分鐘傳送一次活動訊號計量。 如果您使用活動訊號計量來觸發警示,您可以增加此活動訊號的頻率:

{
  "heartbeat": {
    "intervalSeconds": 60
  }
}

注意

您無法將間隔增加到超過 15 分鐘,因為活動訊號資料也會用來追蹤 Application Insights 使用方式。

驗證

注意

由 3.4.17 版開始,驗證功能為正式發行。

您可以使用驗證來設定代理程式,以產生 Microsoft Entra 驗證所需的權杖認證。 如需詳細資訊,請參閱驗證文件。

HTTP Proxy

如果您的應用程式位於防火牆後方,且無法直接連線到 Application Insights,請參閱 Application Insights 所使用的 IP 位址

若要解決此問題,您可以將 Application Insights Java 3.x 設定為使用 HTTP Proxy。

{
  "proxy": {
    "host": "myproxy",
    "port": 8080
  }
}

您也可以使用環境變數 APPLICATIONINSIGHTS_PROXY 來設定 HTTP Proxy,其格式為 https://<host>:<port>。 然後,它的優先順序會高於 JSON 設定中指定的 Proxy。

您可以使用 APPLICATIONINSIGHTS_PROXY 環境變數,為 Proxy 提供使用者和密碼:https://<user>:<password>@<host>:<port>

Application Insights Java 3.x 也需遵守全域 https.proxyHosthttps.proxyPort 系統屬性 (如果已設定) (在需要時則為 http.nonProxyHosts)。

在擷取失敗後復原

將遙測傳送至 Application Insights 服務時若失敗,Application Insights Java 3.x 會將遙測儲存到磁碟,並繼續從磁碟重試。

磁碟持續性的預設限制為 50 Mb。 如果您的遙測量較大,或必須能夠在經歷較長的網路或擷取服務中斷後復原,自 3.3.0 版起,您已可提高此限制:

{
  "preview": {
    "diskPersistenceMaxSizeMb": 50
  }
}

自我診斷

「自我診斷」是指 Application Insights Java 3.x 的內部記錄。 這項功能有助於找出和診斷 Application Insights 本身的問題。

根據預設,Application Insights Java 3.x 在等級 INFO 同時記錄至檔案 applicationinsights.log 和主控台 (對應至此設定):

{
  "selfDiagnostics": {
    "destination": "file+console",
    "level": "INFO",
    "file": {
      "path": "applicationinsights.log",
      "maxSizeMb": 5,
      "maxHistory": 1
    }
  }
}

在上述設定範例中:

  • level 可以是 OFFERRORWARNINFODEBUGTRACE 其中一項。
  • path 可以是絕對或相對路徑。 會根據 applicationinsights-agent-3.6.2.jar 所在的目錄解析相對路徑。

自 3.0.2 版開始,您也可以使用環境變數 APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL 來設定自我診斷 level。 然後,它的優先順序會高於 JSON 設定中指定的自我診斷層級。

自 3.0.3 版開始,您也可以使用環境變數 APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_FILE_PATH 來設定自我診斷檔案位置。 然後,它的優先順序會高於 JSON 設定中指定的自我診斷檔案路徑。

遙測相互關聯

預設會啟用遙測相互關聯,但您可以在組態中將其停用。

{
  "preview": {
    "disablePropagation": true
  }
}

範例

此範例說明設定檔與多個元件的外觀。 根據您的需求設定特定選項。

{
  "connectionString": "...",
  "role": {
    "name": "my cloud role name"
  },
  "sampling": {
    "percentage": 100
  },
  "jmxMetrics": [
  ],
  "customDimensions": {
  },
  "instrumentation": {
    "logging": {
      "level": "INFO"
    },
    "micrometer": {
      "enabled": true
    }
  },
  "proxy": {
  },
  "preview": {
    "processors": [
    ]
  },
  "selfDiagnostics": {
    "destination": "file+console",
    "level": "INFO",
    "file": {
      "path": "applicationinsights.log",
      "maxSizeMb": 5,
      "maxHistory": 1
    }
  }
}